Перейти к основному содержимому

pg_recvlogical

примечание

Эта страница переведена при помощи нейросети GigaChat.

warning

Изменено поведение оригинальной утилиты. Изменения описаны в рамках подраздела «Доработки Pangolin».

pg_recvlogical — управляет потоками логического декодирования PostgreSQL.

Синтаксис

pg_recvlogical [option...]

Описание

pg_recvlogical используется для управления слотами репликации с логическим декодированием и получения данных из таких слотов.

Утилита устанавливает подключение в режиме репликации, поэтому на нее распространяются все ограничения, характерные для pg_receivewal, а также специфические ограничения логической репликации. Подробнее об этом в разделе «Логическое декодирование».

pg_recvlogical не предоставляет возможностей, соответствующих режимам peek и get в SQL-интерфейсе логического декодирования. Подтверждения о воспроизведении данных отправляются отложено — по мере их получения и при завершении работы. Если нужно просмотреть данные в слоте без их потребления, следует использовать pg_logical_slot_peek_changes.

В отсутствие критических ошибок pg_recvlogical будет выполняться до прерывания сигналом SIGINT (Control+C) или SIGTERM.

Когда pg_recvlogical получает сигнал SIGHUP, он закрывает текущий выходной файл и открывает новый, используя имя файла, указанное в параметре --file. Это позволяет выполнить ротацию выходного файла, сначала переименовав текущий файл, а затем отправив сигнал SIGHUP в pg_recvlogical.

Когда pg_recvlogical получает сигнал SIGHUP, он закрывает текущий выходной файл и открывает новый, используя имя файла, указанное в параметре --file. Это позволяет выполнить ротацию выходного файла, сначала переименовав текущий файл, а затем отправив сигнал SIGHUP в pg_recvlogical.

Доработки Pangolin

В СУБД Pangolin добавлены новые параметры:

-T
--tde-on

Включает или отключает режим TDE.

-D
--datadir=PATH

Указывает путь к каталогу данных. Параметр является обязательным при работе в режиме TDE.

Подробнее о TDE описано в подразделе «Прозрачное защитное преобразование данных (TDE)» раздела «Безопасность» документа «Руководство администратора».

-l
--plugin-log-level

Задает уровень журналирования для плагинов хранилища.

Параметры

Для утилиты pg_recvlogical существуют следующие параметры командной строки:

--create-slot

Создает новый логический слот репликации с именем, указанным параметром --slot, используя выходной плагин, указанный параметром --plugin, для базы данных, указанной параметром --dbname.

Параметры --slot и --dbname обязательны для выполнения этого действия.

Параметры --enable-two-phase и --enable-failover можно указать с помощью параметра --create-slot.

--drop-slot

Удаляет слот репликации с именем, указанным в параметре --slot, затем завершает работу.

Для выполнения этого действия параметр --slot обязателен.

--start

Запускает поток изменений из указанного логического слота в --slot и поддерживает его до сигнала завершения. Если поток на стороне сервера завершается из-за выключения или обрыва соединения, повторная попытка будет выполнена автоматически, если не указан параметр --no-loop.

Для выполнения этого действия необходимы параметры --slot, --dbname и --file.

Формат потока определяется плагином вывода, указанным при создании слота.

Соединение должно быть с той же базой данных, которая использовалась для создания слота.

--create-slot и --start можно использовать совместно. --drop-slot нельзя комбинировать с другими действиями.

-E lsn
--endpos=lsn

Завершает репликацию и выходит с кодом 0 в режиме --start, как только достигается указанный LSN. Если используется не в режиме --start, возникает ошибка. Если есть запись с LSN точно равным lsn, она будет выведена.

Параметр --endpos не учитывает границы транзакций, поэтому может прерывать вывод посередине транзакции. Такая неполная транзакция будет проигнорирована и воспроизведена заново при следующем чтении. Однако отдельные сообщения никогда не обрезаются.

--enable-failover

Включает синхронизацию слота с резервными устройствами. Этот параметр может быть указан только вместе с --create-slot.

-f filename
--file=filename

Сохраняет полученные и декодированные данные транзакций в указанный файл. Укажите - для вывода в stdout.

Этот параметр обязателен для параметра --start.

-F interval_seconds
--fsync-interval=interval_seconds

Определяет, как часто pg_recvlogical будет выполнять fsync(), чтобы гарантировать сохранность выходного файла на диске.

Сервер периодически запрашивает у клиента выполнение сохранения данных и сообщение о сохраненной позиции. Эта настройка позволяет делать fsync() чаще.

Если указан 0, вызовы fsync() полностью отключаются, но прогресс все равно передается серверу. Это может привести к потере данных при сбое.

--if-not-exists

Отменяет вызов ошибки, если при использовании с параметром --create-slot, слот с заданным именем уже существует.

-I lsn
--startpos=lsn

Начинает репликацию с указанной позиции LSN в режиме --start. Подробнее об этом смотрите в разделах «Логическое декодирование» и «Протокол потоковой репликации». В других режимах параметр игнорируется.

-n
--no-loop

Не выполняет повторных попыток подключения при ошибке соединения. В случае ошибки сразу завершает выполнение с ошибкой.

-o name[=value]
--option=name[=value]

Передает указанный параметр name и, при наличии, его значение плагину вывода. Доступные параметры и их поведение зависят от конкретного плагина.

-P plugin
--plugin=plugin

Использует заданный плагин логического декодирования при создании слота. Подробнее об этом в разделе «Логическое декодирование». Не влияет, если слот уже существует.

-s interval_seconds
--status-interval=interval_seconds

Описание параметра приведено в разделе с параметрами pg_receivewal.

-S slotname
--slot=slotname

В режиме --start используется указанный слот. В режиме --create-slot — создает слот с этим именем. В режиме --drop-slot — удаляет его.

Этот параметр обязателен для выполнения любого из действий.

-t
--enable-two-phase
--two-phase(устарело)

Включает декодирование подготовленных транзакций. Параметр может быть указан только с --create-slot.

-v
--verbose

Включает режим подробного вывода.

-d dbname
--dbname=dbname

Задает имя базы данных для подключения. dbname может быть строкой подключения. В этом случае параметры строки подключения имеют приоритет над одноименными параметрами командной строки.

Этот параметр обязателен для параметров --create-slot и --start.

-h hostname-or-ip
--host=hostname-or-ip

Указывает хост компьютера, на котором запущен сервер. Значение по умолчанию берется из переменной окружения PGHOST. Если она не установлена, выполняется подключение к Unix-сокету (каталог Unix-сокета начинается с косой черты).

-p port
--port=port

Указывает TCP-порт или расширение файла локального Unix-сокета для подключения к серверу. Значение по умолчанию берется из переменной окружения PGPORT или задается при компиляции.

-U username
--username=username

Указывает имя пользователя для подключения. Имя пользователя операционной системы по умолчанию.

-w
--no-password

Отключает запрос на ввод пароля. Если сервер требует аутентификации по паролю и пароль недоступен другими способами, такими как файл .pgpass, попытка подключения завершится неудачей. Параметр полезен в пакетных заданиях и сценариях, где нет пользователя, который мог бы ввести пароль.

-W
--password

Запрашивает пароль перед подключением к основному серверу.

Параметр не является обязательным, поскольку pg_recvlogical автоматически запросит пароль, если сервер требует аутентификацию паролем. Однако утилита потратит попытку подключения, чтобы выяснить, что сервер хочет пароль. В некоторых случаях стоит ввести -W, чтобы избежать дополнительной попытки подключения.

-V
--version

Выводит версию pg_recvlogical и завершается.

-?
--help

Показывает справку о параметрах командной строки утилиты pg_recvlogical и завершается.

Код завершения

Утилита pg_recvlogical завершается с кодом статуса 0 после получения сигнала SIGINT или SIGTERM. Это нормальный способ ее завершения. Следовательно, это не ошибка. Для фатальных ошибок или других сигналов статус завершения будет ненулевым.

Переменные окружения

Утилита pg_recvlogical использует переменные окружения, поддерживаемые libpq.

Переменная окружения PG_COLOR указывает, использовать ли цвет в диагностических сообщениях. Возможные значения — always, auto и never.

Примечания

pg_recvlogical сохранит групповые разрешения на полученные WAL-файлы, если они включены в исходном кластере.

Примеры

Пример представлен в разделе «Примеры логического декодирования».

Смотрите также

pg_receivewal