Veeam V12: PostgreSQL
Этой зимой я активно рассказывал о продуктах для резервного копирования PostgreSQL, в частности Кибербекап и Vinchin. К сожалению, там дела с этим обстоят не очень хорошо. Vinchin обещал расширение поддержки ОС в новом релизе, но на вебинаре «Новый функционал 2023 Vinchin Backup & Recovery 7.0» ничего про работу с PostgreSQL не заявлялось. В случае же с Кибербекапом мы всё ещё ждём 16-ю версию, которая должна появится весной, посмотрим, что будет там. Ну а пока у нас состоялся релиз Veeam V12 и в нём появилась поддержка резервного копирования PostgreSQL на уровне виртуальной машины, как это уже была давно реализовано для MSSQL. Сегодня посмотрим на это решение ближе, т.к. в чате RBUG возникает много вопросов по поводу данного нового функционала.
Начнём с простого — Veeam поддерживает PostgreSQL версий от 12 до 15, при этом нет ограничений по используемым ОС, кроме того, что поддерживаются только Linux дистрибутивы. Так же не поддерживаются пока кластеры. Так же традиционно не поддерживается резервное копирование отдельных баз.
Теперь перейдём к настройке. Резервное копирование приложения осуществляется по средствам подключения по ssh, соответственно для работы нам необходимо пользователь с правами входа на машину. Я рекомендую завести отдельного пользователя, во-первых, это просто правильно с точки зрения разделения прав, во-вторых Veeam выполняет кучу команд от этого пользователя и просто захламляет всю history и просто не удобно потом пользоваться. Так же необходимо, чтобы у пользователя были плава root, либо он был включен в группу sudo пользователей — Veeam проверяет содержимое конфигурационного файла postgresql.conf, который не доступен обычным пользователям.
Этого достаточно для того, чтобы выполнять резервное копирование базы, но если мы хотим выполнять так же резервное копирование WAL, то необходимо внести следующие изменения в postgresql.conf:
wal_level — replica или logical
archive_mode — on
archive_command — должен оставаться пустым
Документация по тому, как именно работает резервное копирование WAL.
Далее мы создаём job и включаем application-aware processing, указываем учётные данные от машины, включаем резервное копирование логов
В итоге помимо классического задания на резервное копирование виртуальной машины, у нас работает ещё один job, который занимается бекапом логов
Точки восстановления виртуальной машины хранятся отдельно, а логи отдельно
Резервная копия может восстанавливать как целиком нашу виртуальную машину, так и отдельные файлы и самое главное — инстансы PostgreSQL
Я уже говорил, что не очень большой специалист по PostgreSQL, но на сколько я понимаю, сам PostgreSQL позволяет восстанавливать данные только с остановкой инстанса. На скриншоте выше у меня в одном инстансе находится аж 4 базы данных. Это не совсем хороший подход, поэтому было бы более логично запускать каждую базу в отдельном инстансе, что бы процесс восстановления из резервной копии не влиял на работу остальных баз. Тем более, что восстанавливаем мы целиком инстанс, а значит все БД внутри него.
Veeam предоставляет несколько вариантов восстановления:
- Публикация базы из резервной копии на другом сервере PostgreSQL, своего рода Instant recovery для базы
- Восстановление базы на момент последней резервной копии
- Восстановление на другой сервер
- Point-in-time (специально выношу в отдельный пункт, т.к. это наиболее частый вопрос про резервное копирование PostgreSQL)
Само восстановление происходит полностью автоматически, не требуется никаких ручных операций, как в случае с Кибербекапом. Единственное что хочу отметить — при восстановлении Veeam обращается к целевой машине по её hostname, который может не совпадать или вообще отсутствовать в dns, соответственно необходимо добавить в этом случае машину по имени в файл hosts на сервере Veeam. И восстановление инстанса требует остановки движка БД, про это я уже говорил выше — о влиянии на другие базы в рамках инстанса при восстановлении.
Вот так легко и просто можно бекапить PostgreSQL без установки агентов (ну точнее с установкой, но в автоматическом режиме и незаметно для администратора, как это умеет Veeam) с простым механизмом конфигурирования и простым способом восстановления. То, чего не хватает в других продуктах.