Осторожность: процесс резервного копирования и восстановления базы данных при тестировании

Я собираюсь протестировать процесс импорта огромного объёма контента, но хочу убедиться, что смогу корректно откатиться, если что-то пойдёт не так.

У меня запущен внешний экземпляр PostgreSQL, поэтому я думаю, что резервное копирование самого экземпляра Discourse Rails в Docker не требуется — достаточно сделать резервную копию базы данных следующими шагами:

РЕЗЕРВНОЕ КОПИРОВАНИЕ:

  1. ./launcher stop app
  2. pg_dump -U username -p 12345 -W -F p databasename | xz > ~/backup/database/$(date +"%d-%m-%Y_%H.%M.%S").databasename.pgsql.xz
  3. ./launcher start app
  4. ### ИМПОРТ КОНТЕНТА ###

Если что-то пойдёт плохо, ВОССТАНОВЛЕНИЕ:

  1. ./launcher stop app
  2. xzcat ~/backup/database/DATE.databasename.pgsql.xz | psql -U username -p 12345 -W databasename
  3. ./launcher start app

И всё должно вернуться в рабочее и стабильное состояние… верно?

Вероятно, существует встроенный, простой в восстановлении инструмент, который протестирован, поддерживается и требует всего нескольких кликов или одной команды в командной строке.

Если ваш способ не работает, вы остаетесь наедине с проблемой.

Как я уже отмечал, это для внешней базы данных PGSQL, так как я не использую ту, что в Docker, и, к сожалению, обычный метод резервного копирования и восстановления у меня не работает (вероятно, потому что на сервере с большой базой данных я использую немного более новую версию PGSQL).

О, да. Если вы используете pg11, то вам придётся разбираться самостоятельно. Если же вы работаете с pg10 на внешней базе данных, всё должно быть в порядке.

Но лучше протестируйте и убедитесь, что это работает.

Поддержка PG11 и PG12 в процессе резервного копирования и восстановления будет добавлена в ближайшее время. Следите за обновлениями.

Здравствуйте. Они теперь поддерживаются?

Да, это так! Обновление было несколько месяцев назад.

Спасибо! Уточните, пожалуйста: восстановление резервной копии на сайт Discourse (с содержимым) полностью удаляет все данные из внешнего экземпляра базы данных PostgreSQL (RDS)? Если восстановление завершится неудачей или произойдет разрыв соединения, будут ли повреждены данные в RDS?

Это удалит все данные из базы данных Discourse, но не другие. Если восстановление не удастся, существующие данные останутся.