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=PORT | TCP порт или расширение файла локального сокета домена 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