pgpro_bindump — это модуль, предоставляющий дополнительные команды для протокола репликации Postgres Pro, в частности для использования с утилитой pg_probackup3. pgpro_bindump имеет следующие преимущества:
Упрощённая связь с сервером. Для подключения к серверу баз данных pgpro_bindump не требует протокола SSH и связанных с ним настроек.
Интегрированная передача WAL. Файлы WAL передаются вместе с файлами данных, что снижает риск потери информации при резервном копировании.
Оптимизированное хранение. Файлы копируются не в исходном виде, а архивируются в собственном формате pg_probackup3 — CBOR (RFC 8949 Concise Binary Object Representation, Сжатое представление двоичных объектов), что повышает эффективность хранения.
Для обработки подключений от внешних приложений создаётся выделенный обслуживающий процесс. Для отправки запросов к этому процессу можно использовать утилиту pg_probackup3 или собственное приложение.
При необходимости можно устанавливать несколько соединений для одного приложения.
Поскольку модуль pgpro_bindump имеет прямой доступ к файлам базы данных, дополнительных разрешений не требуется.
Приложение pgpro_bindump использует библиотеку libpgprobackup вместе со встроенным модулем кодирования для передачи данных в приложение.
Плагин walsender_plugin_libraries упрощает процесс добавления и использования новых команд репликации, включая пользовательские.
В настоящее время pgpro_bindump имеет следующие ограничения и требования:
Для работы pgpro_bindump требуются libpgprobackup.so и libpb3_encoder.so.
Модуль pgpro_bindump входит в состав Postgres Pro как часть пакета postgrespro-std-14-contrib (подробные инструкции по установке приведены в Главе 16). После установки Postgres Pro выполните шаги ниже.
Задайте следующие параметры в файле postgresql.conf:
shared_preload_libraries = 'pgpro_bindump' wal_level = 'replica' # or 'logical' walsender_plugin_libraries = 'pgpro_bindump'
Перезапустите экземпляр Postgres Pro.
Модуль pgpro_bindump поддерживает следующие команды репликации:
just-noop — команда-заглушка, не выполняющая никаких действий.
start_backup — запускает процесс резервного копирования.
copy_files — копирует файлы в формате CBOR.
stop_backup — останавливает процесс резервного копирования.
Резервное копирование выполняется в режиме PRO — расширенном режиме источника данных, включающем все доступные оптимизации и улучшения, в том числе проприетарный протокол репликации и специализированные команды репликации.
Для отправки команд из пользовательского приложения в pgpro_bindump и получения приложением выходных данных из pgpro_bindump используйте libpq.
Для работы требуется активное подключение к работающему серверу Postgres Pro.
start_backup LABELметка, INCR_MODEинкрементальный_режим, START_LSNначальный_lsn, TRANSFER_MODEрежим_передачи, [TRANSFER_BUFFER_SIZEразмер_буфера]
Запускает процесс резервного копирования. Передаёт приложению следующие данные:
start_lsn — LSN на момент начала резервного копирования.
start_tli — идентификатор линии времени на момент начала резервного копирования.
min_xid — минимальный идентификатор транзакции на момент начала резервного копирования.
min_multixact — минимальный идентификатор мультитранзакции на момент начала резервного копирования.
tablespace_list — список табличных пространств, включённых в резервную копию.
database_list — список баз данных, включённых в резервную копию.
LABEL меткаИмя резервной копии.
INCR_MODE инкрементальный_режимТип инкрементального копирования. Допустимые значения: PTRACK, DELTA.
START_LSN начальный_lsnЗначение типа XLogRecPtr, представляющее LSN на момент начала резервного копирования.
TRANSFER_MODE режим_передачиСпособ передачи данных с сервера в приложение. Возможные значения:
raw — данные передаются в несжатом виде блоками произвольного размера.
packed — данные передаются в упакованном виде блоками по 128 КБ с общим заголовком.
packed — значение по умолчанию.
TRANSFER_BUFFER_SIZE размер_буфераЧисловое значение, определяющее размер буфера. Единственное возможное значение — значение по умолчанию: 131072 (128 КБ).
copy_files VERIFY_CHECKSUMS [TRUE | FALSE], COMPRESS_ALGалгоритм_сжатия, COMPRESS_LVLуровень_сжатия, TRANSFER_MODEрежим_передачи, [INCR_MODEинкрементальный_режим], [START_LSNначальный_lsn], [TRANSFER_BUFFER_SIZEразмер_буфера], [WORKER_INFOчисло_процессов:ид_процесса]
Передаёт блоки файлов данных и файлов WAL, упакованные в формате CBOR.
VERIFY_CHECKSUMSЛогическое значение (true или false), определяющее необходимость проверки контрольных сумм.
COMPRESS_ALG алгоритм_сжатияИспользуемый алгоритм сжатия. Допустимые значения: zlib, zstd, lz4, none.
COMPRESS_LVL уровень_сжатияУровень сжатия. Возможные значения: 1, 2, 3, 4, 5.
TRANSFER_MODE режим_передачиСпособ передачи данных с сервера в приложение. Возможные значения:
raw — данные передаются в несжатом виде блоками произвольного размера.
packed — данные передаются в упакованном виде блоками по 128 КБ с общим заголовком.
packed — значение по умолчанию.
INCR_MODE инкрементальный_режимТип инкрементального копирования. Допустимые значения: PTRACK, DELTA.
START_LSN начальный_lsnЗначение типа XLogRecPtr, представляющее LSN на момент начала резервного копирования.
TRANSFER_BUFFER_SIZE размер_буфераЧисловое значение, определяющее размер буфера. Единственное возможное значение — значение по умолчанию: 131072 (128 КБ).
WORKER_INFO число_процессов:ид_процессаКоличество процессов и идентификатор процессора.
stop_backup STREAM [TRUE | FALSE], COMPRESS_ALGалгоритм_сжатия, COMPRESS_LVLуровень_сжатия, [EXTERNALSвнешние_каталоги] [TRANSFER_BUFFER_SIZEразмер_буфера], [TRANSFER_MODEрежим_передачи]
Завершает процесс копирования и закрывает текущее соединение. Отправляет в приложение следующие данные:
stop_lsn — LSN на момент завершения резервного копирования.
stop_tli — идентификатор линии времени на момент завершения резервного копирования.
Файл backup.control.
Набор файлов WAL (только при включённой передаче WAL).
STREAMЛогическое значение (true или false), определяющее, включена ли потоковая передача WAL.
COMPRESS_ALG алгоритм_сжатияИспользуемый алгоритм сжатия. Допустимые значения: zlib, zstd, lz4, none.
COMPRESS_LVL уровень_сжатияУровень сжатия. Возможные значения: 1, 2, 3, 4, 5.
EXTERNALS внешние_каталогиСписок внешних каталогов.
TRANSFER_BUFFER_SIZE размер_буфераЧисловое значение, определяющее размер буфера. Единственное возможное значение — значение по умолчанию: 131072 (128 КБ).
TRANSFER_MODE режим_передачиСпособ передачи данных с сервера в приложение. Возможные значения:
raw — данные передаются в несжатом виде блоками произвольного размера.
packed — данные передаются в упакованном виде блоками по 128 КБ с общим заголовком.
packed — значение по умолчанию.
Postgres Professional, Москва, Россия.