带有转储数据和迁移的Django备份策略

2024-04-29 12:13:16 发布

您现在位置:Python中文网/ 问答频道 /正文

就像在this question中一样,我为我的数据库设置了一个基于dumpdata的备份系统。安装程序类似于运行cron脚本,该脚本调用dumpdata,并将备份移动到远程服务器,目的只是使用loaddata恢复数据库。不过,我是not sure this plays well with migrationsloaddata现在有一个^{}开关来处理已删除的模型/字段,但它无法解决使用一次性默认值添加列的情况,也无法应用RunPython代码。

在我看来,有两个子问题需要解决:

  • 用每个应用程序的当前版本标记每个dumpdata输出文件
  • 将设备拼接到移植路径中

如何在不增加大量开销的情况下解决第一个问题,我很困惑。对于每个包含{app_name: migration_number}映射的备份,保存一个额外的文件是否足够?

我认为第二个问题一旦第一个问题得到解决,就更容易了,因为这个过程大致如下:

  1. 创建新数据库
  2. 向前运行迁移到每个应用程序的适当位置
  3. 用给定的fixture文件调用loaddata
  4. 运行其余的迁移

我认为this question(链接自bug报告)中的一些代码可以用于此目的。

因为这些是数据库的相当常规/大型的快照,所以我不想将它们作为数据迁移而保留在migrations目录中。


Tags: 文件代码目的脚本数据库应用程序migrations系统