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

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