DevOps: тест восстановления логического бэкапа postgres


#1

Прочитав про инцидент с БД Gitlab я подумал, что было бы не плохо тестировать, что сделанный бэкап восстанавливается, и написал скрипт github.com/skyksandr/pg-logical-backup-test/

Что он делает:

  • Получает из docker hub образ postgres нужной версии
  • Поднимает контейнер
  • Пытается восстановить БД
  • Удаляет контейнер после теста

Статус код 0 возможен только при успешном восстановлении.

Как я это использую:
00:00 - резервное копирование (логический бэкап)
03:00 - проверка другим скриптом, что размер файла бэкапа не изменился более чем на 5%
04:00 - другой скрипт запускает этот скрипт и если статус код не нулевой - отправляется уведомление в slack.

Что дальше - планирую реализовать тест физического бэкапа (сделанного через pg_basebackup + WAL archiving)

PS я использую это на проекте не связанном с 1С, для тестирования восстановления БД 1С нужно изменить имя образа в скрипте.
Фидбек вери велком.

PPS пример запуска: ruby test_logical_backup.rb -V 9.5.2 -U your_db_username -d your_db --verbose /opt/backup/db_logical/db-2017-02-06.dump


#2

блин - может все же не так ?

есть же barman - у него встроены уже все необходимые инструменты http://docs.pgbarman.org/release/2.1/

@pumbaE - видел скрипт ?


#3

Почему я не стал использовать Barman на этом проекте - просто для того, чтобы в деталях разобраться как работает резервное копирование, как сделать PITR и т.д.

Сходу не нашел в Barman верификации или тестового восстановления БД.