Машина времени для 1С ERP: PostgreSQL PITR и веб-интерфейс

В одном из проектов настроил для базы 1С ERP на PostgreSQL восстановление на заданный момент времени — Point-in-Time Recovery (PITR).

Задача была практической: перед изменениями в ERP сохранить возможность вернуться к нужному состоянию, а работу с восстановлением сделать понятной через графический интерфейс.

Основа решения — pgBackRest, резервные копии и непрерывное архивирование журналов WAL. Они позволяют восстановить состояние на выбранное время в пределах доступной цепочки резервных копий и журналов. Это точнее называть PITR, а не «поминутными бэкапами»: отдельная полная копия каждую минуту для этого не нужна.

Готового инструмента, который подходил бы под мой сценарий работы с 1С ERP и ветками истории PostgreSQL, я не нашёл. Поэтому разработал веб-приложение — менеджер временных линий с графическим интерфейсом.

В нём можно: • видеть реальные ветки истории PostgreSQL и связи между ними; • выбрать ветку, дату и время восстановления; • проверить выбранную точку восстановлением в изолированной среде; • создавать защищённые точки возврата перед изменениями; • управлять переходом к восстановленному состоянию с проверками и возможностью отката.

Отдельное внимание уделил специфике 1С: контролю сеансов и фоновых заданий, сохранению прежнего состояния и обязательной прикладной проверке перед принятием результата. Успешного запуска PostgreSQL здесь недостаточно — важно убедиться, что сама ERP работает корректно.

Решение прошло испытания на отдельном стенде, затем применялось при изменениях и обновлении ERP. Проверялись восстановление из разных веток истории и возврат к защищённым точкам.

Заказчик под NDA. Могу предоставить обезличенные артефакты проекта с соблюдением соглашения.

Сейчас ищу работу в Москве в области ИТ-инфраструктуры и корпоративных систем. Буду рад обсудить подобные задачи и готов к собеседованию. Резюме закреплено в профиле, для связи — @TarasTsyganov.

А как у вас организован выбор точки восстановления PostgreSQL: через консоль, собственный интерфейс или готовый продукт?