qhb_receivewal - потоковые журналы записи с сервера QHB

qhb_receivewal - потоковые журналы записи с сервера QHB

Описание

qhb_receivewal используется для потоковой передачи журнала предварительной записи (Write Ahead Log, WAL) из работающего кластера QHB. Журнал упреждающей записи передается по протоколу потоковой репликации и записывается в локальный каталог. Этот каталог можно использовать в качестве расположения архива для восстановления с использованием восстановления на определенный момент времени (см. раздел Непрерывное архивирование и восстановление на момент времени).

qhb_receivewal направляет журнал упреждающей записи в режиме реального времени, поскольку он генерируется на сервере, и не ожидает завершения сегментов, как это делает archive_command. По этой причине нет необходимости устанавливать archive_timeout при использовании qhb_receivewal.

В отличие от приемника WAL резервного сервера QHB, qhb_receivewal по умолчанию сбрасывает данные WAL только тогда, когда файл WAL закрыт. Опция --synchronous должна быть указана для сброса данных WAL в режиме реального времени. Так как qhb_receivewal не применяет WAL, вы не должны допускать, чтобы он стал синхронным резервом, когда synchronous_commit равен remote_apply. Если это произойдет, он окажется резервным, который никогда не догонит, и приведет к блокировке фиксации транзакции. Чтобы избежать этого, вы должны либо настроить подходящее значение для synchronous_standby_names, либо указать application_name для qhb_receivewal, который ему не соответствует, либо изменить значение synchronous_commit на что-то отличное от remote_apply .

Журнал предварительной записи передается по обычному соединению QHB и использует протокол репликации. Соединение должно быть установлено суперпользователем или пользователем, имеющим разрешения REPLICATION (см. раздел Атрибуты ролей), а qhb_hba.conf должен разрешить соединение репликации. Сервер также должен быть настроен с max_wal_senders, установленным достаточно высоко, чтобы оставить хотя бы один сеанс доступным для потока.

Если соединение потеряно или если оно не может быть изначально установлено, с нефатальной ошибкой, qhb_receivewal будет повторять попытку подключения бесконечно и восстанавливать потоковую передачу как можно скорее. Чтобы избежать этого, используйте параметр -n.

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

Синтаксис

qhb_receivewal [OPTION] ...

Параметры

CONNECTION OPTIONS

АргументОписание
-d, --dbname=CONNSTRИмя базы данных для подключения.
-h, --host=HOSTNAMEИмя хоста, на котором работает сервер. Если значение начинается с косой черты, оно используется в качестве каталога для сокета домена Unix. Значение по умолчанию берется из переменной среды PGHOST, далее предпринимается попытка подключения через сокет домена Unix.
-p, --port=PORTTCP порт или расширение файла локального сокета домена Unix. По умолчанию берётся переменная среды PGPORT, или порт заданный при компиляции.
-U, --username=NAMEИмя пользователя для подключения.
-w, --no-passwordНе запрашивать ввод пароля. Если серверу требуется аутентификация по паролю, а пароль недоступен другими способами, такими как файл .pgpass, попытка подключения завершится неудачно. Эта опция может быть полезна в пакетных заданиях и сценариях, где нет ни одного пользователя для ввода пароля.
-W, --passwordАвтоматически запросить пароль, если сервер требует аутентификацию по паролю. Утилита будет пытаться подключиться, для аутентификации. В некоторых случаях стоит ввести -W чтобы избежать дополнительной попытки подключения.

OPTIONS

АргументОписание
-D, --directory=DIRКаталог для записи вывода. Обязательный параметр.
-E, --endpos=LSNАвтоматически останавливать репликацию и выходить с кодом выхода 0, когда приём достигает указанного номера LSN. Если есть запись с LSN, равным lsn, запись будет обработана.
--if-not-existsНе генерировать ошибку, если при опции create-slot будет найден уже существующий слот с указанным именем.
-n, --no-loopЗавершить работу с ошибкой, и не выполнять новую попытку подключения при ошибках соединения.
--no-syncОтключить принудительный сброс на диск WAL-журналов. Последующий сбой операционной системы может привести к повреждению сегментов WAL. Полезно для тестирования, но не следует использовать при архивации WAL в производственной среде. Эта опция несовместима с --synchronous.
-s, --status-interval=SECSИнтервал отправки пакетов состояния. Подробнее
-S, --slot=SLOTNAMEТребовать от qhb_receivewal использования существующего слота репликации. Подробнее
--synchronousЗаписать данные WAL на диск сразу же после их получения. Подробнее
-v, --verboseВключает подробный режим.
-V, --versionВывести версию qhb_receivewal и выйти
-Z, --compress=0-9Включает gzip-сжатие журналов записи с опережением и указывает уровень сжатия (от 0 до 9, 0 - без сжатия и 9 - с наилучшим сжатием). Суффикс .gz будет автоматически добавлен ко всем именам файлов.
-?, --helpПоказать справку об аргументах командной строки qhb_receivewal и выйти.

status interval

-s SECS, --status-interval=SECS

Задает количество секунд между пакетами состояния, отправляемыми обратно на сервер. Это позволяет упростить мониторинг прогресса с сервера. Нулевое значение полностью отключает периодические обновления статуса, хотя обновление по-прежнему будет отправляться по запросу сервера, чтобы избежать отключения по тайм-ауту. Значение по умолчанию составляет 10 секунд.

SLOTNAME

-S SLOTNAME, --slot=SLOTNAME Требовать от qhb_receivewal использования существующего слота репликации. Когда используется эта опция, qhb_receivewal будет сообщать серверу позицию сброса, указывая, когда каждый сегмент был синхронизирован с диском, чтобы сервер мог удалить этот сегмент, если в этом нет необходимости.

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

Опция --synchronous должна быть указана дополнительно для правильной работы.

synchronous

--synchronous Записать данные WAL на диск сразу после их получения. Также отправьте пакет состояния обратно на сервер сразу после очистки независимо от --status-interval.

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

Дополнительные опции

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

ПараметрОписание
--create-slotСоздать новый слот физической репликации с именем, указанным в параметре --slot, и выйти.
--drop-slotУдалить слот репликации с именем, указанным в --slot, и выйти.

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

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

Окружение

Эта утилита, как и большинство других утилит QHB, использует переменные окружения, поддерживаемые libpq .

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

Примечания

При использовании qhb_receivewal вместо archive_command в качестве основного метода резервного копирования WAL настоятельно рекомендуется использовать слоты репликации. В противном случае сервер может свободно перезаписывать или удалять файлы журналов WAL перед их резервным копированием, поскольку он не имеет никакой информации ни от архива, ни от слотов репликации о том, как далеко заархивирован поток WAL. Однако обратите внимание, что слот репликации заполнит дисковое пространство сервера, если получатель не успевает за извлечением данных WAL.

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

Примеры

Для потоковой передачи журнала предварительной записи с сервера mydbserver и его сохранения в локальном каталоге /usr/local/qhb/archive :

$ qhb_receivewal -h mydbserver -D /usr/local/qhb/archive

Смотрите Также

qhb_basebackup