qhb_recvlogical

qhb_recvlogical — управлять потоками логического декодирования QHB


Синтаксис

qhb_recvlogical [параметр...]

Описание

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

Она создает соединение в режиме репликации, поэтому к ней применяются те же ограничения, что и к qhb_receivewal, плюс ограничения для логической репликации (см. главу Логическое декодирование).

qhb_recvlogical не имеет аналога режимам просмотра и получения интерфейса SQL логического декодирования. Она отправляет подтверждения воспроизведения для данных медленно, по мере их получения и при успешном завершении. Чтобы проверить данные, ожидающие в слоте, не принимая их, используйте функцию pg_logical_slot_peek_changes.

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


Параметры

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

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

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

--start
Начать прием потока изменений из слота логической репликации, заданного в параметре --slot, продолжая до прерывания сигналом. Если передача потока изменений на стороне сервера прекращается из-за завершения работы сервера или разрыва соединения с ним, повторять цикл подключения и приема, если не указан параметр --no-loop.
Формат потока определяется плагином вывода, указанным при создании слота.
Подключаться нужно к той же базе данных, которая использовалась для создания слота.

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

Следующие параметры командной строки управляют расположением и форматом вывода и другим поведением репликации:

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

-f имя_файла
--file=имя_файла
Записать полученные и декодированные данные транзакций в этот файл. Для записи в stdout напишите -.

-F секунды_интервала
--fsync-interval=секунды_интервала
Определяет, как часто qhb_recvlogical должна производить вызовы fsync(), чтобы обеспечить благополучный сброс выходного файла на диск.
Сервер будет периодически требовать от клиента совершить сброс на диск и сообщить ему сохраненную позицию. Данный параметр является дополнением к этому, позволяя проводить сброс чаще.
При значении интервала 0 проведение вызовов fsync() полностью выключается, хотя серверу все еще сообщается о прогрессе. При этом в случае сбоя данные могут быть потеряны.

-I lsn
--startpos=lsn
В режиме --start начать репликацию с заданного LSN. Подробную информацию о том, как это работает, см. в главе Логическое декодирование и в разделе Протокол потоковой репликации. В других режимах игнорируется.

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

-n
--no-loop
При потере соединения с сервером не повторять циклично попытки подключения, а просто завершиться.

-o имя[=значение]
--option=имя[=значение]
Передать имя параметра плагину вывода вместе со значением этого параметра (если указано). Существующие параметры и их эффекты зависят от используемого плагина вывода.

-P плагин
--plugin=плагин
При создании слота использовать заданный плагин вывода логического декодирования. См. главу Логическое декодирование. Этот параметр не действует, если слот уже существует.

-s секунды_интервала
--status-interval=секунды_интервала
Этот параметр действует так же, как и одноименный параметр утилиты qhb_receivewal. См. его описание там.

-S имя_слота
--slot=имя_слота
В режиме --start использовать существующий слот логической репликации с именем имя_слота. В режиме --create-slot создать слот с этим именем. В режиме --drop-slot удалить слот с этим именем.

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

-v
--verbose
Включает режим подробных сообщений.

Следующие параметры командной строки управляют параметрами подключения к базе данных.

-d имя_бд
--dbname=имя_бд
База данных для подключения. Что именно это означает, см. в описании действий программы. В имени_бд может задаваться строка подключения. В этом случае параметры в строке подключения переопределяют любые конфликтующие параметры в командной строке. По умолчанию выбирается имя пользователя.

-h имя_хоста-или-ip
--host=имя_хоста-или-ip
Задает имя хост-компьютера, на котором работает сервер. Если значение начинается со слэша, оно используется в качестве каталога для сокета домена Unix. Значение по умолчанию определяется переменной среды PGHOST, если она установлена. В противном случае производится попытка подключения к сокету домена Unix.

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

-U пользователь
--username=пользователь
Имя пользователя, под которым производится подключение. По умолчанию это имя текущего пользователя операционной системы.

-w
--no-password
Никогда не запрашивать ввод пароля. Если серверу требуется аутентификация по паролю, и пароль недоступен с помощью иных средств, таких как файл .pgpass, попытка подключения завершится неудачно. Этот параметр может быть полезен в пакетных заданиях и скриптах, где нет пользователя, чтобы ввести пароль.

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

Также имеются следующие дополнительные параметры:

-V
--version
Вывести версию qhb_recvlogical и завершиться.

-?
--help
Показать справку об аргументах командной строки qhb_recvlogical и завершиться.


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

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


Операционная среда

Эта утилита, как и большинство других утилит QHB, использует переменные среды, поддерживаемые libpq (см. раздел Переменные среды).

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


Примечания

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


Примеры

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


См. также

qhb_receivewal