pg_probackup

Данные и БДRU

Менеджер резервного копирования PostgreSQL от Postgres Professional. Ведёт собственный каталог копий, делает инкременты на уровне страниц, а не файлов, проверяет копии без развёртывания и восстанавливает на точку во времени. Нужен там, где база большая, инкременты частые, а «надеемся, развернётся» — не ответ.

Postgres Professional

автор

C

язык

PostgreSQL-подобная

лицензия

★ 799

GitHub звёзд

Установка

# 1. ключ репозитория Postgres Professional
sudo apt install gpg wget
wget -qO - https://repo.postgrespro.ru/pg_probackup/keys/GPG-KEY-PG-PROBACKUP \
| sudo tee /etc/apt/trusted.gpg.d/pg_probackup.asc
# 2. сам репозиторий
. /etc/os-release
echo "deb [arch=amd64] https://repo.postgrespro.ru/pg_probackup/deb $VERSION_CODENAME main-$VERSION_CODENAME" \
| sudo tee /etc/apt/sources.list.d/pg_probackup.list
sudo apt update
# 3. пакет под ВАШУ версию PostgreSQL (доступны 13-18)
sudo apt install pg-probackup-16

Число в имени пакета — мажорная версия вашего 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 не поддерживается — доступна только локальная работа.

Теги

postgres propostgresqlбэкапвосстановлениероссийские сервисы
github.com ↗← Все CLI инструментыРоссийские AI-агенты