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-файлы, если они включены в исходном кластере.
Примеры
Пример представлен в разделе «Примеры логического декодирования».