F.39. pgpro_bindump — модуль протокола репликации для резервного копирования и восстановления
pgpro_bindump — это модуль, предоставляющий дополнительные команды для протокола репликации Postgres Pro, в частности для использования с утилитой pg_probackup3. pgpro_bindump имеет следующие преимущества:
Упрощённая связь с сервером. Для подключения к серверу баз данных pgpro_bindump не требует протокола SSH и связанных с ним настроек.
Интегрированная передача WAL. Файлы WAL передаются вместе с файлами данных, что снижает риск потери информации при резервном копировании.
Оптимизированное хранение. Файлы копируются не в исходном виде, а архивируются в собственном формате pg_probackup3 —
CBOR
(RFC 8949 Concise Binary Object Representation, Сжатое представление двоичных объектов), что повышает эффективность хранения.
F.39.1. Архитектура
Для обработки подключений от внешних приложений создаётся выделенный обслуживающий процесс. Для отправки запросов к этому процессу можно использовать утилиту pg_probackup3 или собственное приложение.
При необходимости можно устанавливать несколько соединений для одного приложения.
Поскольку модуль pgpro_bindump имеет прямой доступ к файлам базы данных, дополнительных разрешений не требуется.
Приложение pgpro_bindump использует библиотеку libpgprobackup вместе со встроенным модулем кодирования для передачи данных в приложение.
Плагин walsender_plugin_libraries
упрощает процесс добавления и использования новых команд репликации, включая пользовательские.
F.39.2. Ограничения и требования
В настоящее время pgpro_bindump имеет следующие ограничения и требования:
Для работы pgpro_bindump требуются
libpgprobackup.so
иlibpb3_encoder.so
.
F.39.3. Установка и подготовка
После установки Postgres Pro выполните шаги ниже.
Задайте следующие параметры в файле
postgresql.conf
:shared_preload_libraries = 'pgpro_bindump' wal_level = 'replica' # or 'logical' walsender_plugin_libraries = 'pgpro_bindump'
Перезапустите экземпляр Postgres Pro.
F.39.4. Команды репликации
Модуль pgpro_bindump поддерживает следующие команды репликации:
just-noop
— команда-заглушка, не выполняющая никаких действий.start_backup
— запускает процесс резервного копирования.copy_files
— копирует файлы в форматеCBOR
.stop_backup
— останавливает процесс резервного копирования.
Резервное копирование выполняется в режиме PRO — расширенном режиме источника данных, включающем все доступные оптимизации и улучшения, в том числе проприетарный протокол репликации и специализированные команды репликации.
Для отправки команд из пользовательского приложения в pgpro_bindump и получения приложением выходных данных из pgpro_bindump используйте libpq.
Примечание
Для работы требуется активное подключение к работающему серверу Postgres Pro.
F.39.4.1. start_backup
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 КБ).
F.39.4.2. copy_files
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
число_процессов
:ид_процесса
Количество процессов и идентификатор процессора.
F.39.4.3. stop_backup
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
— значение по умолчанию.
F.39.5. Авторы
Postgres Professional, Москва, Россия.