pg_recvlogical
Эта страница переведена при помощи нейросети GigaChat.
pg_recvlogical — управляет потоками логического декодирования PostgreSQL.
Синтаксис
pg_recvlogical [option...]
Описание
pg_recvlogical используется для управления слотами репликации с логическим декодированием и получения данных из таких слотов.
Утилита устанавливает подключение в режиме репликации, поэтому на нее распространяются все ограничения, характерные для pg_receivewal, а также специфические ограничения логической репликации. Подробнее об этом в разделе «Логическое декодирование».
pg_recvlogical не предоставляет возможностей, соответствующих режимам peek и get в SQL-интерфейсе логического декодирования. Подтверждения о воспроизведении данных отправляются отложено — по мере их получения и при завершении работы. Если нужно просмотреть данные в слоте без их потребления, следует использовать pg_logical_slot_peek_changes.
В отсутствие критических ошибок pg_recvlogical будет выполняться до прерывания сигналом SIGINT (Control+C) или SIGTERM.
Параметры
Для утилиты pg_recvlogical существуют следующие параметры командной строки:
--create-slot- Создает новый логический слот репликации с именем, указанным в
--slot, используя подключаемый модуль вывода, указанный параметром--plugin, для базы данных, указанной параметром--dbname.--two-phaseможет быть указан с--create-slotдля включения декодирования подготовленных транзакций.
--drop-slot- Удаляет логический слот репликации с именем, указанным в
--slot, и завершает выполнение.
--start- Запускает поток изменений из указанного логического слота в
--slotи поддерживает его до сигнала завершения. Если поток на стороне сервера завершается из-за выключения или обрыва соединения, повторная попытка будет выполнена автоматически, если не указан параметр--no-loop.Формат потока задается выходным плагином, определенным при создании слота.
noteКоманда
--startтребует подключения к той же базе данных, что использовалась при создании слота.--create-slotи--startможно использовать совместно.--drop-slotнельзя комбинировать с другими действиями.
-E lsn--endpos=lsn- Завершает репликацию и выходит с кодом 0 в режиме
--start, как только достигается указанный LSN. Если используется не в режиме--start, возникает ошибка. Если есть запись с LSN точно равнымlsn, она будет выведена.Параметр
--endposне учитывает границы транзакций, поэтому может прерывать вывод посередине транзакции. Такая неполная транзакция будет проигнорирована и воспроизведена заново при следующем чтении. Однако отдельные сообщения никогда не обрезаются.
-f filename--file=filename- Сохраняет полученные и декодированные данные транзакций в указанный файл. Укажите
-для вывода вstdout.
-F interval_seconds--fsync-interval=interval_seconds- Определяет, как часто
pg_recvlogicalбудет выполнятьfsync(), чтобы гарантировать сохранность выходного файла на диске.Сервер периодически запрашивает у клиента выполнение сохранения данных и сообщение о сохраненной позиции. Эта настройка позволяет делать
fsync()чаще.Если указан 0, вызовы
fsync()полностью отключаются, но прогресс все равно передается серверу. Это может привести к потере данных при сбое.
-I lsn--startpos=lsn- Начинает репликацию с указанной позиции LSN в режиме
--start. Подробнее об этом смотрите в разделах «Логическое декодирование» и «Протокол потоковой репликации». В других режимах параметр игнорируется.
--if-not-exists- Отменяет вызов ошибки, если при использовании с параметром
--create-slot, слот с заданным именем уже существует.
-n--no-loop- Не выполняет повторных попыток подключения при ошибке соединения. В случае ошибки сразу завершает выполнение с ошибкой.
-o name[=value]--option=name[=value]- Передает указанный параметр
nameи, при наличии, его значение плагину вывода. Доступные параметры и их поведение зависят от конкретного плагина.
-P plugin--plugin=plugin- Использует заданный плагин логического декодирования при создании слота. Подробнее об этом в разделе «Логическое декодирование». Не влияет, если слот уже существует.
-s interval--status-interval=interval- Описание параметра приведено в разделе с параметрами pg_receivewal.
-S slotname--slot=slotname- В режиме
--startиспользуется указанный слот. В режиме--create-slot— создает слот с этим именем. В режиме--drop-slot— удаляет его.
-t--two-phase- Включает декодирование подготовленных транзакций. Параметр может быть указан только с
--create-slot.
-v--verbose- Включает режим подробного вывода.
-d dbname--dbname=dbname- Задает имя базы данных для подключения.
dbnameможет быть строкой подключения. В этом случае параметры строки подключения имеют приоритет над одноименными параметрами командной строки.
-h host--host=host- Указывает хост компьютера, на котором запущен сервер. Значение по умолчанию берется из переменной окружения
PGHOST. Если она не установлена, выполняется подключение к Unix-сокету (каталог Unix-сокета начинается с косой черты).
-p port--port=port- Указывает TCP-порт или расширение файла локального Unix-сокета для подключения к серверу. Значение по умолчанию берется из переменной окружения
PGPORTили задается при компиляции.
-U username--username=username- Указывает имя пользователя для подключения. Имя пользователя операционной системы по умолчанию.
-w--no-password- Отключает запрос на ввод пароля. Если сервер требует аутентификации по паролю и пароль недоступен другими способами, такими как файл
.pgpass, попытка подключения завершится неудачей. Параметр полезен в пакетных заданиях и сценариях, где нет пользователя, который мог бы ввести пароль.
-W--password- Запрашивает пароль перед подключением к основному серверу.
Параметр не является обязательным, поскольку pg_recvlogical автоматически запросит пароль, если сервер требует аутентификацию паролем. Однако утилита потратит попытку подключения, чтобы выяснить, что сервер хочет пароль. В некоторых случаях стоит ввести -W, чтобы избежать дополнительной попытки подключения.
-V--version- Выводит версию
pg_recvlogicalи завершается.
-?--help- Показывает справку о параметрах командной строки утилиты
pg_recvlogicalи завершается.
Код завершения
Утилита pg_recvlogical завершается с кодом статуса 0 после получения сигнала SIGINT или SIGTERM. Это нормальный способ ее завершения. Следовательно, это не ошибка. Для фатальных ошибок или других сигналов статус завершения будет ненулевым.
Переменные окружения
Утилита pg_recvlogical использует переменные окружения, поддерживаемые libpq.
Переменная окружения PG_COLOR указывает, использовать ли цвет в диагностических сообщениях. Возможные значения — always, auto и never.
Примечания
pg_recvlogical сохранит групповые разрешения на полученные WAL-файлы, если они включены в исходном кластере.
Примеры
Пример представлен в разделе «Примеры логического декодирования».