我不确定这个问题是否应该发布在 Database Administrators 中' 部分或此处,所以如果我弄错了,请告知。
我有一个基于 Django 的网站,变化不大。我使用 python manage.py dumpdata --all --indent=2 > backup.json
并在需要重新部署或数据库损坏时使用 loaddata
重新加载数据。 (我知道在不排除 auth
和 content_types
时发生的完整性错误)
因为我在后端使用 PostgreSQL,我使用 pg_dump
是“最佳实践”还是“更明智”,如果出现问题,然后再使用 pg_restore
错误还是我需要重新部署?
因此 dumpdata
转储与所选应用程序(和/或模型)关联的所有数据,并且 pg_dump
执行数据库的完整转储。这是同一件事还是存在我错过的根本区别(请注意,我在 DBA 方面的经验为 0)?
我应该选择哪个选项,为什么?
最佳答案
使用 pg_dump
而不是 dumpdata
是最佳实践,也是更明智的做法。
这有很多原因。
pg_dump
比 dumpdata 更快,输出更紧凑(特别是使用 -Fc 选项)。使用
pg_restore
将数据导入回数据库也比 django 的loaddata
更快。pg_restore 可用于任何 postgresql 安装,但 django 及其依赖项必须安装。
最后但同样重要的是,您提到的完整性错误不会发生在 pg_dump/pg_restore 中。
通常 pg_dump 用于转储整个数据库,但是 -t 选项允许您一次转储一个或几个表
关于Django 的 "dumpdata"或 Postgres 的 "pg_dump"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38103438/