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 для примера.