Django 的 "dumpdata" 还是 Postgres 的 "pg_dump"?

Django's "dumpdata" or Postgres' "pg_dump"?

我不确定这个问题应该发在 Database Administrators 部分还是这里,所以如果我说错了请指教。

我有一个基于 Django 的网站,变化不大。如果我需要重新部署或数据库损坏,我使用 python manage.py dumpdata --all --indent=2 > backup.json 并使用 loaddata 重新加载数据。 (我知道不排除 authcontent_types 时发生的完整性错误)

因为我在后端使用PostgreSQL,所以我是"best practise"还是"wiser"用pg_dump代替,如果出现问题然后pg_restore或者我是否需要重新部署?

因此 dumpdata 转储与所选应用(and/or 型号)关联的所有数据,并且 pg_dump 执行数据库的完整转储。这是同一件事还是我遗漏了根本区别(请注意,我在 DBA 方面的经验为 0)?

我应该选择哪个选项,为什么?

使用 pg_dump 而不是 dumpdata 是最佳实践,也是更明智的做法。 pg_dump 更快,输出更紧凑(特别是使用 -Fc 选项)并且使用 pg_restore 可以比 loaddata 更快地加载它。最后但同样重要的是,pg_dump/pg_restore.

不会发生您提到的完整性错误

通常 pg_dump 用于转储整个数据库,但是 -t 选项允许您一次转储一个或几个表