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