Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

F.39. pgpro_bindump — модуль протокола репликации для резервного копирования и восстановления

pgpro_bindump — это модуль, предоставляющий дополнительные команды для протокола репликации Postgres Pro, в частности для использования с утилитой pg_probackup3. pgpro_bindump имеет следующие преимущества:

  • Упрощённая связь с сервером. Для подключения к серверу баз данных pgpro_bindump не требует протокола SSH и связанных с ним настроек.

  • Интегрированная передача WAL. Файлы WAL передаются вместе с файлами данных, что снижает риск потери информации при резервном копировании.

  • Оптимизированное хранение. Файлы копируются не в исходном виде, а архивируются в собственном формате pg_probackup3CBOR (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 выполните шаги ниже.

  1. Задайте следующие параметры в файле postgresql.conf:

    shared_preload_libraries = 'pgpro_bindump'
    wal_level = 'replica' # or 'logical'
    walsender_plugin_libraries = 'pgpro_bindump'
  2. Перезапустите экземпляр 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, Москва, Россия.