繁体   English   中英

Django + PostgreSQL 在 EC2 实例上备份和恢复

[英]Django + PostgreSQL backup and restore on an EC2 instance

我有一个简单的单体架构:

托管在 EC2 实例上的 Django 项目与运行在同一实例上的 PostgreSQL 数据库通信。 考虑到流量和成本,我选择了这种架构。 所以,不要在这个上给我 bash 我。 :)

为了灾难恢复,我定期转储我的数据库(完整转储pg_dump -U postgres fishercoder_db > fishercoder_dump.sql )。

在恢复时,我无法让 Django 和恢复数据库彼此很好地交谈:

  1. 如果我启动 Django 并首先运行./manage.py migrate ,然后从转储中恢复数据库,它会失败,因为 Django 在运行./manage.py migrate后已经创建了一堆内部表,它们的名称完全相同在我的垃圾场;

  2. 如果我先从转储中恢复数据库,那么我的 Django 应用程序由于运行./manage.py migrate的权限不足而无法正常运行,详情请点击此处

我的问题是:

  1. 我的灾难恢复策略合理吗? 还有其他更优化的方法吗?

  2. 如何使这种方法起作用:在新的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM