pg_recvlogical#

pg_recvlogical

pg_recvlogical

pg_recvlogical — управление потоками логического декодирования Tantor BE

Синтаксис

pg_recvlogical [option...]

Описание

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

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

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

При отсутствии фатальных ошибок, pg_recvlogical будет работать до тех пор, пока не будет завершен сигналом SIGINT (Control+C) или сигналом SIGTERM.

Опции

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

--create-slot

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

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

--drop-slot

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

--start

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

Формат потока определяется выходным плагином, указанным при создании слота.

Соединение должно быть с той же базой данных, которая использовалась для создания слота.

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

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

-E lsn
--endpos=lsn

В режиме --start автоматически останавливает репликацию и завершает работу с нормальным статусом 0, когда достигается указанный LSN. Если указано вне режима --start, возникает ошибка.

Если есть запись с LSN, точно равным lsn, запись будет выведена.

Опция --endpos не учитывает границы транзакции и может обрезать вывод посередине транзакции. Любая частично выведенная транзакция не будет потреблена и будет воспроизведена снова при следующем чтении слота. Отдельные сообщения никогда не обрезаются.

-f filename
--file=filename

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

-F interval_seconds
--fsync-interval=interval_seconds

Определяет, с какой частотой pg_recvlogical должен выполнять вызовы fsync(), чтобы гарантировать безопасную запись выходного файла на диск.

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

Указание интервала 0 отключает полностью вызовы fsync(), при этом по-прежнему отображается прогресс сервера. В этом случае данные могут быть потеряны в случае сбоя.

-I lsn
--startpos=lsn

В режиме --start начинается репликация с указанного LSN. Подробности о влиянии этого смотрите в документации в разделах Глава 46 и Раздел 52.4. В других режимах игнорируется.

--if-not-exists

Не выдавать ошибку, когда указана опция --create-slot и слот с указанным именем уже существует.

-n
--no-loop

Когда соединение с сервером потеряно, не пытайтесь повторно подключиться в цикле, просто завершите работу.

-o name[=value]
--option=name[=value]

Передайте опцию name в выходной плагин, и, если указано, значение опции value. Какие опции существуют и каковы их эффекты, зависит от используемого выходного плагина.

-P plugin
--plugin=plugin

При создании слота используйте указанный плагин вывода логического декодирования. См. Глава 46. Эта опция не имеет эффекта, если слот уже существует.

-s interval_seconds
--status-interval=interval_seconds

Эта опция имеет тот же эффект, что и опция с тем же именем в pg_receivewal. См. описание там.

-S slot_name
--slot=slot_name

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

-t
--two-phase

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

-v
--verbose

Включает режим подробного вывода.

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

-d dbname
--dbname=dbname

База данных, к которой нужно подключиться. См. описание действий для получения подробной информации об этом. dbname может быть строкой подключения. Если это так, параметры строки подключения переопределяют любые конфликтующие параметры командной строки. По умолчанию используется имя пользователя.

-h hostname-or-ip
--host=hostname-or-ip

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

-p port
--port=port

Определяет TCP-порт или расширение локального файла сокета Unix, на котором сервер прослушивает соединения. По умолчанию используется переменная окружения PGPORT, если она установлена, или значение по умолчанию, заданное при компиляции.

-U user
--username=user

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

-w
--no-password

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

-W
--password

Заставьте pg_recvlogical запросить пароль перед подключением к базе данных.

Эта опция никогда не является обязательной, так как pg_recvlogical автоматически запросит пароль, если сервер требует аутентификацию по паролю. Однако pg_recvlogical потратит попытку подключения, чтобы узнать, что сервер требует пароль. В некоторых случаях стоит ввести -W, чтобы избежать дополнительной попытки подключения.

Доступны следующие дополнительные параметры:

-V
--version

Выведите версию pg_recvlogical и завершите работу.

-?
--help

Показать справку о командной строке для pg_recvlogical и выйти.

Статус выхода

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

Окружение

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

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

Примечания

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

Примеры

См. Раздел 46.1 для примера.

См. также

pg_receivewal