tru*_*one 41 django database-restore database-backups
我有一个使用Postgres数据库的Django应用程序.我需要能够备份和恢复数据库,以确保没有数据丢失,并且能够在测试期间将数据从生产服务器复制到开发服务器.
似乎有几种不同的方法可以做到这一点:
只需直接与db交互.因此,对于Postgres,我可能会使用pg_dumpall
和编写脚本psql
.
使用Django 附带的sqlclear
/ sqlall
命令.
使用Django 附带的dumpdata
/ loaddata
命令.因此,从要备份的db创建新的fixture,然后将它们加载到要还原的db中.
使用Django插件,如django-dbbackup.
我真的不明白这些不同技术的优点/缺点.
刚刚开始:选项1是特定于数据库的,选项3似乎更适合设置初始数据.但我仍然不确定选项4对选项2的优势.
Nat*_*man 25
选项1-3的问题是媒体文件(通过其上传的任何内容FileField
)不包含在备份中.可以单独备份包含媒体文件的目录.但是,因为当Django不再被a引用时不删除文件,所以FileField
你将不可避免地得到备份中不需要存在的文件.
这就是我选择#4选项的原因.特别是,我推荐django-archive *.它的一些功能包括:
转储所有重要模型的内容(默认情况下ContentType
,Permission
并且Session
因为它们被填充而被排除manage.py migrate
),并允许您选择要排除的其他模型.
包括引用的媒体文件FileField
和ImageField
字段.请注意,仅包含数据库中的行引用的文件; 被删除的行遗留的文件将被忽略.
生成包含数据库备份和媒体文件的单个存档.
提供用于自定义存档的位置,文件名格式和存档类型(gz
和bz2
)的选项.
安装是将简单django_archive
到INSTALLED_APPS
和设置选项中settings.py
如果需要的话.安装后,您可以通过运行以下命令立即创建整个数据库(包括媒体文件)的存档:
./manage.py archive
Run Code Online (Sandbox Code Playgroud)
*免责声明:我是该套餐的作者
Ane*_*pic 22
对于常规备份,我会选择使用PostgreSQL自带的本机工具,因为它可能是最有效的.
我认为选项2主要涉及创建表和加载初始数据,因此不适合备份.
选项3可用于备份,如果您需要迁移到不同的数据库平台,则会特别有用,因为数据是以非SQL形式转储的,即Django理解的JSON.
选项4插件似乎使用db自己的备份工具(根据选项1),但另外提供帮助将备份推送到Amazon S3或Dropbox中的云存储
归档时间: |
|
查看次数: |
21237 次 |
最近记录: |