pg_probackup
Данные и БДRUМенеджер резервного копирования PostgreSQL от Postgres Professional. Ведёт собственный каталог копий, делает инкременты на уровне страниц, а не файлов, проверяет копии без развёртывания и восстанавливает на точку во времени. Нужен там, где база большая, инкременты частые, а «надеемся, развернётся» — не ответ.
Postgres Professional
автор
C
язык
PostgreSQL-подобная
лицензия
★ 799
GitHub звёзд
Установка
Число в имени пакета — мажорная версия вашего PostgreSQL, а не версия утилиты. Исполняемый файл тоже с суффиксом: вызывается pg_probackup-16. Для RHEL и Fedora есть свой rpm-репозиторий, для SUSE и ALT Linux — свои; deb-ветка собрана только под amd64.
Что такое инкремент «на уровне страниц»
Обычная физическая копия забирает файлы целиком. Здесь единица — страница, и режимов три, с принципиально разной ценой.
DELTA читает все файлы каталога данных и копирует только страницы, изменившиеся с прошлой копии. Диск читается почти как при полной копии, но хранится и передаётся только разница. Архив журнала предзаписи не нужен.
PAGE вместо этого сканирует архив журнала с момента прошлой копии и забирает только упомянутые там страницы — каталог данных целиком не читается вовсе. Ценой обязательного непрерывного архивирования.
PTRACK перекладывает учёт на сам PostgreSQL: тот помечает изменённые страницы в битовых картах, утилита забирает карту. Ни полного чтения, ни разбора журнала. Требует расширение ptrack либо сборку Postgres Pro.
Чем отличается от pg_basebackup
pg_basebackup умеет только полную физическую копию кластера. Нет инкрементов, нет каталога копий, нет политик хранения, нет проверки копии без восстановления, нет слияния инкрементов, нет частичного и параллельного восстановления.
Отдельно стоит инкрементное восстановление: утилита не разворачивает кластер с нуля, а переиспользует уцелевшие неизменившиеся страницы в существующем каталоге данных.
С pgBackRest сравнивать по скорости и возможностям не будем: официального сравнения у вендора нет, а придумывать цифры для витрины — плохая идея. Своими отличительными чертами документация называет режим PTRACK, инкрементное восстановление, команду проверки живого экземпляра и догон отставшей реплики.
Что нужно
Поддерживаются PostgreSQL с 13 по 18. Платная лицензия не нужна: полные копии и режимы PAGE и DELTA работают на ванильном PostgreSQL. Платный Postgres Pro нужен только как один из двух путей к PTRACK — второй путь, расширение ptrack на ванильном PostgreSQL, бесплатный.
Windows поддерживается, инсталляторы лежат в релизах, но удалённый режим по SSH под Windows не работает — только локально.
При восстановлении исходный и целевой серверы должны совпадать по размеру блока и иметь одинаковую мажорную версию. Локальная и удалённая версии самой утилиты тоже должны совпадать.
Частые вопросы
Что означает число в имени пакета pg-probackup-16?
Это мажорная версия вашего PostgreSQL, а не версия утилиты. Пакеты собраны для PostgreSQL с 13 по 18. Исполняемый файл тоже несёт суффикс и вызывается как pg_probackup-16.
Нужен ли платный Postgres Pro?
Нет. Полные копии и инкрементные режимы PAGE и DELTA работают на ванильном PostgreSQL. Платная сборка или бесплатное расширение ptrack нужны только для режима PTRACK.
Чем PAGE отличается от DELTA и что выбрать?
PAGE читает архив журнала предзаписи и забирает только упомянутые там страницы — быстро, но требует непрерывного архивирования. DELTA читает все файлы каталога данных и копирует изменившиеся страницы — архив не нужен, зато чтение с диска сопоставимо с полной копией.
Можно восстановить одну базу, а не весь кластер?
Да, у команды восстановления есть частичный режим с параметрами --db-include и --db-exclude.
Работает ли под Windows?
Да, инсталляторы есть в релизах на GitHub. Но удалённый режим по SSH под Windows не поддерживается — доступна только локальная работа.