pg_recvlogical
Эта страница переведена при помощи нейросети GigaChat.
Изменено поведение оригинальной утилиты. Изменения описаны в рамках подраздела «Доработки Pangolin».
pg_recvlogical — управляет потоками логического декодирования PostgreSQL.
Синтаксис
pg_recvlogical [option...]
Описание
pg_recvlogical используется для управления слотами репликации с логическим декодированием и получения данных из таких слотов.
Утилита устанавливает подключение в режиме репликации, поэтому на нее распространяются все ограничения, характерные для pg_receivewal, а также специфические ограничения логической репликации. Подробнее об этом в разделе «Логическое декодирование».
pg_recvlogical не предоставляет возможностей, соответствующих режимам peek и get в SQL-интерфейсе логического декодирования. Подтверждения о воспроизведении данных отправляются отложено — по мере их получения и при завершении работы. Если нужно просмотреть данные в слоте без их потребления, следует использовать pg_logical_slot_peek_changes.
Когда pg_recvlogical получает сигнал SIGHUP, он закрывает текущий выходной файл и открывает новый, используя имя файла, указанное в параметре --file. Это позволяет выполнить ротацию выходного файла, сначала переименовав текущий файл, а затем отправив сигнал SIGHUP в pg_recvlogical.
Доработки Pangolin
В СУБД Pangolin добавлены новые параметры:
-T--tde-on
Включает или отключает режим TDE.
-D --datadir=PATH
Указывает путь к каталогу данных. Параметр является обязательным при работе в режиме TDE.
Подробнее о TDE описано в подразделе «Прозрачное защитное преобразование данных (TDE)» раздела «Безопасность» документа «Руководство администратора».
-l--plugin-log-level
Задает уровень журналирования для плагинов хранилища.
Параметры
Для утилиты pg_recvlogical существуют следующие параметры командной строки:
--create-slot
Создает новый логический слот репликации с именем, указанным в --slot, используя подключаемый модуль вывода, указанный параметром --plugin, для базы данных, указанной параметром --dbname.
--two-phase может быть указан с --create-slot для включения декодирования подготовленных транзакций.
--drop-slot
Удаляет логический слот репликации с именем, указанным в --slot, и завершает выполнение.
--start
Запускает поток изменений из указанного логического слота в --slot и поддерживает его до сигнала завершения. Если поток на стороне сервера завершается из-за выключения или обрыва соединения, повторная попытка будет выполнена автоматически, если не указан параметр --no-loop.
Формат потока задается выходным плагином, определенным при создании слота.
Команда --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() полностью отключаются, но прогресс все равно передается серверу. Это может привести к потере данных при сбое.
--if-not-exists
Отменяет вызов ошибки, если при использовании с параметром --create-slot, слот с заданным именем уже существует.
-I lsn--startpos=lsn
Начинает репликацию с указанной позиции LSN в режиме --start. Подробнее об этом смотрите в разделах «Логическое декодирование» и «Протокол потоковой репликации». В других режимах параметр игнорируется.
-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 использует переменные окружения, поддерживаемые libpq.
Переменная окружения PG_COLOR указывает, использовать ли цвет в диагностических сообщениях. Возможные значения — always, auto и never.
Примечания
pg_recvlogical сохранит групповые разрешения на полученные WAL-файлы, если они включены в исходном кластере.
Примеры
Пример представлен в разделе «Примеры логического декодирования».