Postgres Pro Backup Enterprise (pg_probackup)
pg_probackup – утилита для управления резервным копированием и восстановлением кластеров баз данных PostgreSQL. Утилита позволяет делать резервную копию и восстановление в многопоточном режиме, что ускоряет создание резервной копии и ее восстановление.
Архитектура
Утилита pg_probackup может работать в двух режимах: агент на сервере СУБД и клиент-сервер в случае создания резервной копии на удаленном сервере через защищенное соединение SSH.
В такой конфигурации пользователь может смонтировать на сервер СУБД любую подходящую ему файловую систему.
В версии для 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 получает всю карту изменений и делает инкрементальную резервную копию быстрее на огромных базах данных.
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 прямая запись и чтение | + | - | - | - |
Интеграция с СРК | + | + | - | - |
Документация |
Сжатие резервных копий, работа с CFS
По умолчанию в pg_probackup поддерживаются алгоритмы сжатия, доступные в PostgreSQL, – это pglz и zlib.
Для пользователей Postgres Pro Standard и Postgres Pro Enterprise доступны дополнительные алгоритмы сжатия: zstd и lz4.
Мы исследуем влияние алгоритмов сжатия на скорость создания и восстановления резервной копии. На конференции 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, как указано на схеме ниже.
Совместимость с отечественными СРК системами
СРК – системы резервного копирования. Мы работаем над интеграциями с отечественными производителями СРК-систем в равной степени.
На данный момент с нами сертифицированы: 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