[英]Django + PostgreSQL backup and restore on an EC2 instance
我有一个简单的单体架构:
托管在 EC2 实例上的 Django 项目与运行在同一实例上的 PostgreSQL 数据库通信。 考虑到流量和成本,我选择了这种架构。 所以,不要在这个上给我 bash 我。 :)
为了灾难恢复,我定期转储我的数据库(完整转储pg_dump -U postgres fishercoder_db > fishercoder_dump.sql
)。
在恢复时,我无法让 Django 和恢复数据库彼此很好地交谈:
如果我启动 Django 并首先运行./manage.py migrate
,然后从转储中恢复数据库,它会失败,因为 Django 在运行./manage.py migrate
后已经创建了一堆内部表,它们的名称完全相同在我的垃圾场;
如果我先从转储中恢复数据库,那么我的 Django 应用程序由于运行./manage.py migrate
的权限不足而无法正常运行,详情请点击此处。
我的问题是:
我的灾难恢复策略合理吗? 还有其他更优化的方法吗?
如何使这种方法起作用:在新的 EC2 实例上恢复我的站点,并使用从 a.sql 转储中恢复的数据库。
我为此编写了自己的一组实用程序,因为我永远无法完全记住必要的命令行选项: https://github.com/FlipperPA/django-pg-copy
您是否尝试过使用这些选项的pg_restore
?
pg_restore -c --if-exists -h localhost -U [your_django_user] -d [your_django_db] fishercoder_dump.sql
您可能还需要为转储考虑一些附加参数:
pg_dump -Fc -c -x ...
-Fc
:自定义格式-c
:(或--clean
):转储干净的版本,带有 DROPs 对象。 -x
:跳过转储访问权限
祝你好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.