Django + PostgreSQL резервное копирование и восстановление на экземпляре EC2 - PullRequest
1 голос
/ 20 июня 2020

У меня простая монолитная c архитектура:

Проект Django, размещенный на экземпляре EC2, общается с PostgreSQL БД, работающей на том же экземпляре. Я выбрал эту архитектуру с учетом трафика c и стоимости. Так что не 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. Разумна ли моя стратегия DR? Любые другие более оптимальные способы?

  2. Как я могу заставить этот подход работать: восстановить мой сайт на новом экземпляре EC2 с БД, восстановленной из дампа. sql.

1 Ответ

3 голосов
/ 20 июня 2020

Я написал свой собственный набор утилит именно для этого, так как я никогда не мог полностью вспомнить необходимые параметры командной строки: 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): дампы чистая версия, с DROP'ами объектов. -x: пропустить сброс привилегий доступа

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...