qhb_recvlogical

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


Синтаксис

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

Описание

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

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

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


Параметры

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

--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, использует переменные среды, поддерживаемые libpq (см. раздел Переменные среды).

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


Примечания

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


Примеры

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


См. также

qhb_receivewal