pg_recvlogical
pg_recvlogical — управлять потоками логического декодирования PostgreSQL
Синтаксис
pg_recvlogical
[параметр
...]
Описание
Утилита pg_recvlogical
управляет слотами логического декодирования и принимает данные из таких слотов репликации.
Она создаёт соединение в режиме репликации, так что на него распространяются те же ограничения, что и с pg_receivewal, плюс ограничения логической репликации (см. Главу 48).
pg_recvlogical
не предоставляет возможностей, соответствующих режимам peek и get в SQL-интерфейсе логического декодирования. Она передаёт серверу подтверждения воспроизведения данных по мере их получения и при штатном выходе. Чтобы просмотреть данные, ожидающие передачи через слот, не принимая их, воспользуйтесь функцией pg_logical_slot_peek_changes
.
Параметры
Для выбора действия необходимо указать минимум один из этих параметров:
--create-slot
Создать новый слот логической репликации с именем, заданным аргументом
--slot
, используя модуль вывода, заданный аргументом--plugin
, для базы данных, указанной в--dbname
.--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=
секунды
Устанавливает, как часто pg_recvlogical будет вызывать
fsync()
, чтобы гарантировать, что выходной файл надёжно сохранён на диске.Сервер время от времени даёт клиенту команду сохранить данные и сообщить сохранённую позицию, но этот параметр позволяет выполнять сохранение чаще.
При значении, равном
0
, функцияfsync()
вообще не вызывается, но серверу сообщается новая позиция. Это может привести к потере данных в случае сбоя.-I
lsn
--startpos=
lsn
В режиме
--start
репликация начнётся с данного LSN. Как это работает, подробно описывается в Главе 48 и Разделе 52.4. В других режимах игнорируется.--if-not-exists
Не выдавать ошибку, когда указан параметр
--create-slot
и слот с заданным именем уже существует.-n
--no-loop
Когда подключение к серверу потеряно, не повторять цикл, просто завершить работу.
-o
имя
[=значение
]--option=
имя
[=значение
]Передаёт параметр
имя_параметра
модулю вывода, при этом может быть передано и егозначение
. Набор параметров и их действия зависят от выбранного модуля вывода.-P
модуль
--plugin=
модуль
Использовать указанный модуль вывода логического декодирования при создании слота. См. Главу 48. Этот параметр не действует, если слот уже существует.
-s
секунды
--status-interval=
секунды
Этот параметр действует так же, как одноимённый параметр pg_receivewal (см. его описание там).
-S
имя_слота
--slot=
имя_слота
Этот параметр задаёт имя слота логической репликации, который будет использоваться в режиме
--start
, создаваться в режиме--create-slot
или удаляться в режиме--drop-slot
.-v
--verbose
Включает режим подробных сообщений.
Далее описаны параметры управления подключением.
-d
имя_бд
--dbname=
имя_бд
Имя базы данных для подключения. Как именно используется данная база, рассказывается в описании действий программы. В данном аргументе может задаваться строка подключения. В этом случае параметры в строке подключения переопределяют одноимённые параметры, заданные в командной строке. По умолчанию в качестве имени базы выбирается имя пользователя.
-h
имя_компьютера-или-ip
--host=
имя_компьютера-или-ip
Указывает имя компьютера, на котором работает сервер. Если значение начинается с косой черты, оно определяет каталог Unix-сокета. Значение по умолчанию берётся из переменной окружения
PGHOST
, если она установлена. В противном случае выполняется подключение к Unix-сокету.-p
порт
--port=
порт
Указывает TCP-порт или расширение файла локального Unix-сокета, через который сервер принимает подключения. Значение по умолчанию определяется переменной окружения
PGPORT
, если она установлена, либо числом, заданным при компиляции.-U
user
--username=
user
Имя пользователя для подключения. По умолчанию это имя текущего пользователя операционной системы.
-w
--no-password
Не выдавать запрос на ввод пароля. Если сервер требует аутентификацию по паролю и пароль не доступен с помощью других средств, таких как файл
.pgpass
, попытка соединения не удастся. Этот параметр может быть полезен в пакетных заданиях и скриптах, где нет пользователя, который вводит пароль.-W
--password
Принудительно запрашивать пароль перед подключением к базе данных.
Это несущественный параметр, так как pg_recvlogical запрашивает пароль автоматически, если сервер проверяет подлинность по паролю. Однако чтобы понять это, pg_recvlogical лишний раз подключается к серверу. Поэтому иногда имеет смысл ввести
-W
, чтобы исключить эту ненужную попытку подключения.
Также есть следующие дополнительные параметры:
-V
--version
Сообщить версию pg_recvlogical и завершиться.
-?
--help
Показать справку по аргументам командной строки pg_recvlogical и завершиться.
Переменные окружения
Как и большинство других утилит PostgreSQL, приложение также использует переменные окружения, поддерживаемые libpq (см. Раздел 33.14).
Примеры
Примеры использования можно найти в Разделе 48.1.