Прочитав про инцидент с БД 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