gpt4 book ai didi

django - 如何备份 Django 数据库

转载 作者:行者123 更新时间:2023-11-28 19:35:05 30 4
gpt4 key购买 nike

我有一个使用 Postgres 数据库的 Django 应用程序。我需要能够备份和恢复数据库,既要确保没有数据丢失,又要能够在测试期间将数据从生产服务器复制到开发服务器。

似乎有几种不同的方法可以做到这一点:

  1. 直接与数据库交互。因此,对于 Postgres,我可能会使用 pg_dumpallpsql 编写脚本。

  2. 使用 Django 自带的 sqlclear/sqlall 命令。

  3. 使用 Django 自带的 dumpdata/loaddata 命令。因此,从要备份的数据库创建新的固定装置,然后将它们加载到要恢复的数据库中。

  4. 使用像django-dbbackup 这样的Django 插件.

我真的不明白这些不同技术的优缺点。

就在我的脑海中:选项 1 是特定于数据库的,选项 3 似乎更适合设置初始数据。但我仍然不确定选项 4 比选项 2 有什么优势。

最佳答案

选项 1-3 的问题是媒体文件(通过 FileField 上传的任何内容)不包含在备份中。可以单独备份包含媒体文件的目录。但是,由于当文件不再被 FileField 引用时 Django 不会删除文件,因此您将不可避免地在备份中得到不需要的文件。

这就是我选择选项 #4 的原因。特别推荐django-archive *。它的一些功能包括:

  • 转储所有重要模型的内容(默认情况下 ContentTypePermissionSession 被排除在外,因为它们由manage.py migrate) 并允许您选择要排除的其他模型。

  • 包括 FileFieldImageField 字段引用的媒体文件。请注意,数据库中的行引用的文件被包括在内;删除行遗留下来的文件将被忽略。

  • 生成包含数据库备份和媒体文件的单个存档。

  • 提供用于自定义存档存储位置、文件名格式和存档类型(gzbz2)的选项。

安装非常简单,只需将 django_archive 添加到 INSTALLED_APPS 并根据需要在 settings.py 中设置选项。安装后,您可以通过运行立即创建整个数据库(包括媒体文件)的存档:

./manage.py archive

* 免责声明:我是包的作者

关于django - 如何备份 Django 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21049330/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com