pg_recvlogical#

Примечание

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

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 существуют следующие параметры командной строки:

--create-slot

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

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

--drop-slot

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

--start

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

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

Примечание

Команда --start требует подключения к той же базе данных, что использовалась при создании слота.

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

-E lsn
--endpos=lsn

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

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

-f filename
--file=filename

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

-F interval_seconds
--fsync-interval=interval_seconds

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

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

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

-I lsn
--startpos=lsn

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

--if-not-exists

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

-n
--no-loop

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

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

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

-P plugin
--plugin=plugin

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

-s interval
--status-interval=interval

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

-S slotname
--slot=slotname

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

-t
--two-phase

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

-v
--verbose

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

-d dbname
--dbname=dbname

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

-h host
--host=host

Указывает хост компьютера, на котором запущен сервер. Значение по умолчанию берется из переменной окружения 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