Postgres Pro Backup Enterprise (pg_probackup)

pg_probackup – утилита для управления резервным копированием и восстановлением кластеров баз данных PostgreSQL. Утилита позволяет делать резервную копию и восстановление в многопоточном режиме, что ускоряет создание резервной копии и ее восстановление.

Архитектура 

Утилита pg_probackup может работать в двух режимах: агент на сервере СУБД и клиент-сервер в случае создания резервной копии на удаленном сервере через защищенное соединение SSH. 

 

Рисунок 1. Схема работы pg_probackup с резервной копией на сервере СУБД.

 

В такой конфигурации пользователь может смонтировать на сервер СУБД любую подходящую ему файловую систему.

 

Рисунок 2. Схема работы pg_probackup клиент-сервер c удаленным сервером резервных копий.

 

В версии для Postgres Pro Enterprise доступна прямая запись в S3 для обоих этих режимов, что позволяет интегрировать pg_probackup в различные системы резервного копирования (или СРК-системы) без промежуточного хранения резервных копий перед отправкой в облачное хранилище. 

Самый частый вопрос: Почему под каждый основной выпуск редакции СУБД PostgreSQL или Postgres Pro нужна отдельная утилита pg_probackup? 

Основной выпуск или мажорная версия, – это первая цифра версии СУБД. 

Дело в том, что в каждой новой мажорной версии СУБД может измениться структура хранения данных из-за появления новых функций СУБД. Это особенно касается работы утилит резервного копирования, поэтому мы делаем под каждый новый основной выпуск СУБД свою сборку pg_probackup, так как используем часть исходного кода СУБД. 

В составе дистрибутивов Postgres Pro Standard и Postgres Pro Enterprise, pg_probackup по умолчанию находится в bin каталоге СУБД, что позволяет администратору сделать свои скрипты, ориентируясь на каталог установленной СУБД. 

Если вы самостоятельно собираете pg_probackup для PostgreSQL из исходников или у вас возникли вопросы совместимости утилиты с сервером СУБД, то воспользуйтесь командой "pg_probackup --version". Эта команда покажет вам, с какой версий СУБД совместима данная утилита и какие алгоритмы сжатия она поддерживает. 

Пример команд для проверки версий ptrack и pg_probackup: 

 

 $ pg_probackup --version

 pg_probackup 2.6.0 community (PostgreSQL 15.2) (compressions: zlib, pglz)

 $ pg_config --version

 PostgreSQL 15.2

 $ psql -h remote-host -p 5432 -U user -d DB-name -w

 % SELECT version();

  version                                                

  ----------------------------------------------------------------

  PostgreSQL 15.2 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0, 64-bit

  % SELECT ptrack_version();

   ptrack_version 

   ----------------

   2.4

 

Сообщество на Github и версии pg_probackup

Компания Postgres Professional активно делится разработками с сообществом PostgreSQL. Утилита pg_probackup предоставляется сообществу с открытым исходным кодом на https://github.com/postgrespro/pg_probackup. Вы можете задать команде разработки вопросы в чатах на русском и английском языках. Также мы активно выступаем на различных площадках перед студентами технических вузов.

Для обучения DBA и разработчиков СУБД, а также демонстрации работы с резервными копиями в СУБД PostgreSQL, мы выпускаем версию pg_probackup 2.5 c открытым исходным кодом. Она хорошо зарекомендовала себя за более чем 6 лет в крупнейших компаниях России и зарубежных стран. Мы рекомендуем эту версию для работы с PostgreSQL.

С 2023 года мы выпускаем версию 2.6. Новая версия доступна только для корпоративных пользователей Postgres Pro Standard и Postgres Pro Enterprise. Это новейшая разработка, в которой мы реализуем новый подход к скорости снятия инкрементальных резервных копий, сжатия и интеграции с различными системами хранения данных, такими как S3 или промышленные СРК-системы различных вендоров. 

Инкрементальные резервные копии

Отличительной особенностью pg_probackup является наличие трех различных режимов инкрементального резервного копирования. Для создания еженедельных резервных копий вы можете использовать любой из перечисленных режимов в зависимости от вашей задачи и текущей нагрузки на сервер СУБД. Вы можете комбинировать типы инкрементальных резервных копий во всей цепочке резервных копий, а потом сделать слияние до новой полной резервной копии, чтобы сэкономить место и ускорить время восстановления из резервной копии. 

В pg_probackup доступны следующие режимы снятия инкрементальной резервной копии:

  • DELTA – считает разницу всех файлов СУБД по контрольной сумме.
  • PAGE –  вычисляет разницу по WAL-записям с момента последней резервной копии.
  • PTRACK – Регистрирует изменения страниц в оперативной памяти сервера СУБД. pg_probackup получает всю карту изменений и делает инкрементальную резервную копию быстрее на огромных базах данных.

 

График 1. Сравнение скорости снятия резервной копии двумя популярными утилитами X, Y и двумя режимами утилиты pg_probackup: PAGE и PTRACK. В сравнении показана нагрузка запросов IO на диск сервера СУБД во время снятия нового инкремента.

PTRACK Enterprise

В редакции Postgres Pro Enterprise доступна версия PTRACK Enterprise, оптимизированная для работы с CFS, а также базами данных с очень большим числом таблиц и отношений между ними. Новый ptrack бочее чем в 2.5 раза быстрее делает карту изменений потому, что пропускает не измененные файлы и группы блоков. В новом ptrack мы оптимизируем работу с LSN, чтобы увеличить полезный объем карты ptrack. Например, при размере карты ptrack в 1Gb, в версии ptrack для сообщества мы можем эффективно запомнить дельту только на 80 Gb измененных данных, а в новом на 160gb. Новый ptrack эффективнее работает с большими базами данных.

 

Проверка целостности данных резервной копии

По умолчанию pg_probackup всегда делает проверку целостности данных. Проверка автоматически запускается для каждого вновь созданного бэкапа, а также после мерджа, восстановления. Эту функцию можно отключить или запустить проверку в ручном режиме. Проверка может работать в несколько потоков. Для логической валидации мы рекомендуем после полного восстановления кластера запустить утилиту amcheck.

Скорость проверки: на примере 1Тб базы, в один поток pg_probackup делает резервную копию с проверкой целостности быстрее, чем pg_basebackup без проверки данных. 

 

$ time pg_basebackup -D /u02/bkp -U postgres --format=t --wal-method=stream -z

real    123m56.228s

user    118m7.348s

sys     5m0.509s

 

$ time pg_probackup backup -j 1 -B /u02/bkp --instance ex1 -U postgres -b FULL --stream --compress --compress-algorithm=zlib --compress-level=3

real    117m34.608s

user    100m52.204s

 

Слияние резервных копий – Merge

Чтобы быстрее восстанавливаться из резервной копии, нужно делать слияние инкрементальных резервных копий с полной резервной копией. Это позволяет не только ускорить восстановления (RTO), но и сокращает место на дисковых массивах для хранения резервных копий. Утилита pg_probackup имеет специальную команду merge для слияния резервных копий.

Особенность работы pg_probackup заключается в том, что вы можете делать режимы инкрементальной копии в любой комбинации: DELTA, PAGE, PTRACK. Далее утилита самостоятельно соберет все файлы во время операции MERGE, учитывая разные алгоритмы сжатия на каждом из инкрементов и табличные пространства с CFS. 

Работа pg_probackup и pg_basebackup в разных редакциях PostgreSQL и Postgres Pro

pg_basebackup – утилита резервного копирования, которая по умолчанию идет в составе PostgreSQL и работает одинаково во всех редакциях PostgreSQL и Postgres Pro. Утилита pg_probackup по умолчанию поставляется во всех редакциях Postgres Pro, а для сообщества и дистрибутивных сборок PostgreSQL доступны исходные коды на Github и пакеты различных дистрибутивов, для установки через наш репозиторий.

 

Функции

Postgres Pro Enterprise с pg_probackup 2.6+

Postgres Pro Standard 

с pg_probackup 2.6+

PostgreSQL

с pg_probackup 2.5

PostgreSQL

с pg_basebackup

Однопоточный полный бэкап

+

+

+

+

Многопоточный режим 

+

+

+

-

Инкрементальный бэкап

+

+

+

-

Проверка целостности данных во время сессии резервного копирования

+

+

+

-

Слияние бэкапов, Merge

+

+

+

-

Резервная копия с удаленного сервера СУБД по защищенному каналу передачи данных (SSH) 

+

+

+

-

Catchup – режим создания реплики

+

+

+

-

Компрессия pglz, zlib

+

+

+

+

Компрессия zstd, lz4

+

+

-

-

Инкрементальный бэкап на уровне блоков (PTRACK)

+

+

+

-

PTRACK Enterprise

+

+

-

-

CFS совместимость

+

-

-

-

S3 прямая запись и чтение

+

-

-

-

Интеграция с СРК 

+

+

-

-

Документация

pg_probackup Enterprise

pg_probackup Standard

pg_probackup Community

pg_basebackup

 

Сжатие резервных копий, работа с CFS

По умолчанию в pg_probackup поддерживаются алгоритмы сжатия, доступные в PostgreSQL, – это pglz и zlib.

Для пользователей Postgres Pro Standard и Postgres Pro Enterprise доступны дополнительные алгоритмы сжатия: zstd и lz4. 

 

Рисунок 4. Сравнение работы различных алгоритмов сжатия блоков данных.

Мы исследуем влияние алгоритмов сжатия на скорость создания и восстановления резервной копии. На конференции PgConf.СПб 2023  мы рассказали о взаимном влиянии алгоритмов сжатия и работы CFS

Алгоритм ZSTD сжимает немного лучше, чем LZ4, но при этом работает медленнее. Возможность работы ZSTD в режиме многопоточности не влияет на скорость сжатия, так как сам pg_probackup уже работает многопоточно.  

В Postgres Pro Enterprise есть поддержка сжатых табличных пространств CFS, что позволяет сократить использование дискового пространства СУБД и ее резервной копии. Более подробно о том как использовать это решение, вы можете почитать в статье на Habr о работе CFS

Утилита pg_probackup использует выбранный алгоритм сжатия только для блоков данных, где нет табличных пространств, заранее сжатых CFS. Выбранные алгоритмы сжатия для резервного копирования и CFS могут различаться, а команда merge будет выполнять слияние инкрементальных копий в новую полную резервную копию, используя алгоритм сжатия, указанный в последней инкрементальной копии. Поэтому вы можете оптимизировать место на диске или сделать полный недельный бэкап так, чтобы он восстанавливался и сжимался быстрее.  

Работа с S3 хранилищем и режим remote

Для пользователей Postgres Pro Enterprise доступна возможность передачи данных резервной копии на прямую в S3 хранилище с сервера СУБД или через режим remote.

Remote режим предполагает два соединения, одно из которых защищено SSH и данные передаются без создания промежуточных копий на дисках СУБД или Backup Server, как указано на схеме ниже.

 

Рисунок 5. Схема работы pg_probackup при подключении к облачному хранилищу S3 через передачу данных на удаленный сервер управления резервным копированием утилитой pg_probackup.

Совместимость с отечественными СРК системами

СРК – системы резервного копирования. Мы работаем над интеграциями с отечественными производителями СРК-систем в равной степени. 

На данный момент с нами сертифицированы: RuBackup и Кибер Протект. Каждая из систем имеет свои уникальные архитектурные преимущества для конечного потребителя и устроены по разному. Поэтому мы сотрудничаем с каждым индивидуально и предоставляем для тестирования наши новейшие разработки для прямой интеграции в СРК системы всех уникальных функций Postgres Pro Enterprise.

Совместимость с отечественными СХД 

Мы проводим технологические испытания и работаем с новейшими разработками в области систем хранения данных отечественных производителей. Это касается современного оборудования машин хранения данных для СУБД, S3-хранилища и программно аппаратные комплексы хранения данных с функцией дедупликации и программно-аппаратного сжатия данных. Мы тестируем и оптимизируем работу наших резервных копий с оборудованием таким образом, чтобы они записывались и восстанавливались быстрее, при этом работали все функции утилиты pg_probackup без ограничений. 

Документация

pg_probackup распространяется с открытым кодом и бесплатно для сообщества и PostgreSQL, документация и исходный код доступны на Github

Postgres Pro Standard и Postgres Pro Certified  содержат улучшенную версию PTRACK Enterprise для работы с большим количеством таблиц в одной базе данных (более 50 000). Документация pg_probackup для Postgres Pro Strandard доступна на нашем сайте.

Postgres Pro Enterprise содержит pg_probackup c PTRACK Enterprise и поддержкой S3, чтобы делать резервные копии больших СУБД, минуя промежуточную запись файлов бэкапа на диск. Документация pg_probackup для Postgres Pro Enterprise доступна на нашем сайте. Преимущество работы Enterprise версии дополняется поддержкой CFS, что позволяет сократить использование СУБД и ее резервной копией места на диске, а также ускорить создание резервной копии и восстановление из нее.

Postgres Pro Shardman содержит pg_probackup, аналогичный по функциональности Enterprise версии. Документация на Shardman расширена и содержит утилиты управления шардами кластера, мы предлаагем вам ознакомиться с полной документацией на нашем сайте. 

Планы разработки 

Совместно с технологическими партнерами мы работаем над созданием нового формата резервной копии. Это необходимо, чтобы пользователям было удобнее использовать одну утилиту для организации сценариев резервного копирования разных мажорных версий СУБД Postgres Pro

Новый формат рассчитан на работу с ленточными накопителями данных и более широкой линейкой СКР систем, включая зарубежные. Мы учитываем особенности работы разных облачных хранилищ, а также новейшие разработки в области дедупликации данных с аппаратным сжатием.

 

Запросить консультацию специалиста: presale@postgrespro.ru