【发布时间】:2014-01-29 17:19:51
【问题描述】:
我有一个使用 Postgres 数据库的 Django 应用程序。我需要能够备份和恢复数据库,以确保没有数据丢失,并能够在测试期间将数据从生产服务器复制到开发服务器。
似乎有几种不同的方法可以做到这一点:
直接与数据库交互。因此,对于 Postgres,我可能会使用
pg_dumpall和psql编写一个脚本。使用 Django 自带的
sqlclear/sqlall命令。使用 Django 附带的
dumpdata/loaddata命令。因此,从您要备份的数据库中创建新的灯具,然后将它们加载到您要恢复的数据库中。使用像django-dbbackup这样的Django插件。
我真的不明白这些不同技术的优缺点。
突然想到:选项 1 是特定于数据库的,选项 3 似乎更适合设置初始数据。但我仍然不确定选项 4 比选项 2 有什么优势。
【问题讨论】:
-
为什么不直接创建整个数据库的副本? postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP
-
django-dbbackup 是否有效?我清楚地看到那里的代码,没有机会工作:bitbucket.org/mjs7231/django-dbbackup/src/…
-
公平地说,我会谨慎对待包含如此明显错误思想的代码。特别是对于像备份这样重要的任务。
-
@Chozabu - 我写的脚本可以在这里找到:pastebin.com/3afcrHqe。它假设一个标准的 Django “settings.py” 包含所有数据库信息。
-
@Chozabu - 恢复非常相似:pastebin.com/2hbkwsp0 .
标签: django database-backups database-restore