bihactl
bihactl — создать BiHA-кластер в Postgres Pro
Синтаксис
bihactl cluster init [параметр...] --host --pgdata
bihactl cluster status [параметр...]
bihactl cluster show-config [параметр...]
bihactl node add [параметр...] --pgdata { --use-leader | --magic-file | --magic-string }
bihactl segment add [параметр...] { --use-leader | --magic-file | --magic-string }
Описание
bihactl — это утилита командной строки, которая позволяет создать BiHA-кластер, изменять его состав, а также отслеживать статус кластера. За подробной информацией о решении BiHA обратитесь к главе Встроенная отказоустойчивость (BiHA).
Важно
bihactl для Postgres Pro Enterprise 18 обеспечивает обратную совместимость с bihactl для Postgres Pro Enterprise 16.X и 17.X. Однако команды bihactl из предыдущих версий считаются устаревшими, поэтому рекомендуется использовать команды bihactl, описанные в этой документации.
В этом разделе содержится информация о командах утилиты bihactl:
Узел-последователь можно добавить с использованием «магической» строки, сохранённой после выполнения команды bihactl cluster init, передав в команде bihactl node add параметр -s.
Справка по командной строке #
cluster init #
Синтаксис:
bihactl cluster init [--biha-node-id=идентификатор_узла] [--biha-port=порт_biha] [--cluster-name=имя_кластера] [--convert] [--enable-proxima] --host=хост[--magic-file=магический_файл] [--max-replicas=макс_число_реплик] [--minnodes=мин_число_узлов] [--node-name=имя_узла] [--no-password] [--nquorum=значение_кворума] [--options=параметры_initdb] --pgdata=каталог_данных[--port=порт] [--preferred-roles=предпочтительные_роли_для_репликации] [--priority=приоритет_узла] [--sync-standbys=число_синхронных_ведомых_серверов[--sync-standbys-min=мин_число_синхронных_ведомых_серверов]] [--use-ssl]
Инициализирует кластер и задаёт узел-лидер. При выполнении этой команды bihactl запускает утилиту initdb. На этом этапе также можно указать необходимые параметры этой утилиты при помощи флага -o.
Эта команда может принимать следующие параметры:
-Iid_узла--biha-node-id=#id_узлаУказывает уникальный идентификатор узла.
-Pпорт_biha--biha-port=#порт_bihaУказывает порт для обмена служебной информацией между узлами. Если порт не указан, устанавливается значение --port + 1.
--cluster-name=#имя_кластераУказывает имя BiHA-кластера. Имя по умолчанию —
biha_node_1111.-C--convert#Преобразовывает существующий узел в узел-лидер отказоустойчивого кластера.
-x--enable-proxima#Включает расширение proxima с параметрами по умолчанию в BiHA-кластере при его создании с нуля или на лидере при преобразовании существующего кластера конструкции ведущий-ведомый в BiHA-кластер.
-hадрес_узла--host=#адрес_узлаУказывает хост для входящих подключений. Значение по умолчанию —
PGHOST.-fфайл_с_магической_строкой--magic-file=#файл_с_магической_строкойУказывает путь к «магическому» файлу, который содержит закодированные данные для подключения к лидеру. Файл должен существовать в момент выполнения команды bihactl node add.
--max-replicas=#макс_число_репликУказывает максимальное число репликационных подключений biha к узлу, т.е. максимальное число процессов walsender, где в качестве
application_nameуказаноbiha_node_*.Возможные значения:
0,INT_MAX. Значение по умолчанию —INT_MAX, количество подключений неограниченно.-Mмин_число_узлов--minnodes=#мин_число_узловУказывает минимальное число работающих узлов, при котором узел-лидер будет доступен для пишущих транзакций. Если параметр не задан, его значение будет равно значению параметра
--nquorum.--no-password#Если задан, bihactl не предлагает вручную указать пароль для роли
biha_replication_user.--node-name=#имя_узлаУказывает имя узла-лидера.
-Nзначение_кворума--nquorum=#значение_кворумаУказывает минимальное число узлов, которые должны проголосовать за нового лидера при отказе текущего лидера. Значение по умолчанию —
2.Устанавливая это значение, принимайте во внимание возможный риск разделения кластера. Рекомендуется использовать следующую формулу: (
общее_число_узлов+ 1)/2. Например, если в кластере 3 узла,значение_кворумадолжно быть 2.-oпараметры_initdb--options=#параметры_initdbДополнительно указывает параметры утилиты initdb.
-Dкаталог_данных--pgdata=#каталог_данныхУказывает каталог, где будет храниться кластер баз данных. По умолчанию bihactl использует значение
PGDATA.-pпорт--port=#портУказывает порт узла для входящих соединений.
Если не указан, bihactl использует значение по умолчанию — 5432.
--preferred-roles=#предпочтительные_роли_для_репликацииУказывает предпочтительную роль узла для репликации в BiHA-кластере с каскадной репликацией.
Возможные значения: комбинации
L(лидер),F(последователь) иR(рефери). Значение должно содержать от 1 до 3 символов, которые не должны повторяться. Например:L,F,LFRилиLF.Значение по умолчанию —
L, которое означает, что данные реплицируются только с лидера.--priority=#приоритет_узлаЗадаёт вес узла, который влияет как на выборы, так и на репликацию в кластере, в миллисекундах. Возможные значения:
0,INT_MAX. Значение по умолчанию —-1, при котором параметр игнорируется. Значение параметра можно изменить только функцией biha.set_priority.BiHA использует этот параметр конфигурации для следующих целей:
Задать тайм-аут начала репликации при выборе источника репликации в BiHA-кластере с каскадной репликацией. Чем выше значение, тем позднее узел начинает репликацию и разрешает подключение менее приоритетных узлов. Параметр необходим для того, чтобы узлы кластера могли наладить схему каскадной репликации автоматически.
Установить приоритет узла в кластере с синхронной репликацией. Значение определяет тайм-аут, по истечении которого узел предложит себя в качестве кандидата на выборах. Нулевое значение указывает на самый высокий приоритет.
Важно
Чтобы обеспечить корректную работу параметра, задайте для --sync-standbys значение на одну единицу меньше, чем общее число узлов кластера.
-Yчисло_синхронных_ведомых_серверов--sync-standbys=#число_синхронных_ведомых_серверовВключает кворумную синхронную репликацию, устанавливая параметр synchronous_standby_names и указывая число синхронных резервных узлов (кворум) с методом
ANY. Рекомендуется указывать значениечисло_синхронных_резервных_узловменьше, чем значение параметра--minnodes.-yмин_число_синхронных_ведомых_серверов--sync-standbys-min=#мин_число_синхронных_ведомых_серверовВключает нестрогую кворумную синхронную репликацию, указывая значение поля
MINпараметра synchronous_standby_names. Это значение задаёт минимальное число синхронных резервных узлов, которые должны быть доступны, чтобы лидер продолжал работать. Значениеминимальное_число_синхронных_резервных_узловдолжно быть меньше, чем --sync-standbys, и не может быть отрицательным. Если параметр не задан, BiHA-кластер будет работать в соответствии с ограничениями синхронной репликации по умолчанию, т.е. лидер будет недоступен для пишущих транзакций, пока все последователи не достигнут его текущего состояния.-S--use-ssl#Включает защищённый режим передачи служебной информации между узлами кластера по протоколу SSL/TLS управляющего канала biha.
cluster show-config #
Синтаксис:
bihactl cluster show-config [--format=формат_вывода_данных] [--host=хост] [--magic-file=магический_файл] [--magic-string=магическая_строка] [--port=порт]
Отображает полную информацию о конфигурации кластера. Эта команда может принимать следующие параметры:
--format=формат_вывода_данныхУказывает формат вывода информации о статусе. Возможные значения:
json,yamlиtable.-hадрес_узла--host=адрес_узлаУказывает хост для входящих подключений. Значение по умолчанию —
PGHOST.-fфайл_с_магической_строкой--magic-file=файл_с_магической_строкойУказывает путь к файлу с «магической» строкой, содержащей закодированные данные для подключения к узлу-лидеру.
-sмагическая_строка--magic-string=магическая_строкаУказывает «магическую» строку, содержащую закодированные данные для подключения к лидеру.
-pпорт--port=портУказывает порт узла для входящих соединений.
Если не указан, bihactl использует значение по умолчанию — 5432.
cluster status #
Синтаксис:
bihactl cluster status [--format=формат_вывода_данных] [--host=хост] [--magic-file=магический_файл] [--magic-string=магическая_строка] [--port=порт]
Проверяет статус узла и отображает его в представлении biha.status_v. Эта команда может принимать следующие параметры:
--format=формат_вывода_данныхУказывает формат вывода информации о статусе. Возможные значения:
json,yamlиtable.-hадрес_узла--host=адрес_узлаУказывает хост для входящих подключений. Значение по умолчанию —
PGHOST.-fфайл_с_магической_строкой--magic-file=файл_с_магической_строкойУказывает путь к файлу с «магической» строкой, содержащей закодированные данные для подключения к узлу-лидеру.
-sмагическая_строка--magic-string=магическая_строкаУказывает «магическую» строку, содержащую закодированные данные для подключения к лидеру.
-pпорт--port=портУказывает порт узла для входящих соединений.
Если не указан, bihactl использует значение по умолчанию — 5432.
node add #
Синтаксис:
bihactl node add [--backup-method=средство_резервного_копирования] [--backup-options=параметры_резервного_копирования] [--biha-node-id=идентификатор_узла] [--biha-port=порт_biha] [--can-vote=true_или_false] [--convert-standby] [--host=хост] [--max-replicas=макс_число_реплик] [--mode=режим_узла] [--referee-with-postgres-db]] [--name=имя_узла] [--pgdata=каталог_данных] [--port=порт] [--preferred-roles=предпочтительные_роли_для_репликации] [--priority=приоритет_узла] {--segment-id=идентификатор_сегмента| --segment-nameимя_сегмента} {--use-leader=информация_для_подключения| --magic-string=магическая_строка| --magic-file=магический_файл}
Добавляет последователя в инициализированный кластер. При выполнении этой команды создаётся резервная копия лидера с помощью pg_basebackup или pg_probackup. При добавлении узла утилита bihactl удерживает слот репликации, вызывая pg_probackup с параметрами --slot= или pg_probackup с параметрами ИМЯ_СЛОТА, --wal-method=stream, --checkpoint=fast--stream --slot=, что предотвращает удаление WAL на лидере во время создания резервной копии.ИМЯ_СЛОТА
Примечание
Узлы необходимо добавлять по очереди. Не добавляйте новый узел, если создание ранее добавленного узла ещё не завершено и узел находится в состоянии CSTATE_FORMING. В противном случае может возникнуть следующая ошибка:
WARNING: aborting backup due to backend exiting before pg_backup_stop was
called
Для выбора утилиты резервного копирования используется параметр -m, а параметры выбранной утилиты можно задать при помощи параметра -O.
Эта команда может принимать следующие параметры:
-mметод_резервирования--backup-method=#метод_резервированияУказывает утилиту резервного копирования. Допускаются значения
pg_basebackupиpg_probackup. Значение по умолчанию —pg_basebackup. Если не указывать параметр--backup-method, будет использован метод резервного копирования по умолчанию. Утилитаpg_basebackup— единственное допустимое значение при добавлении узла-рефери.-Oпараметры_резервирования--backup-options=#параметры_резервированияДополнительно указывает параметры pg_basebackup или pg_probackup в зависимости от утилиты резервного копирования, заданной в параметре
--backup-method.-Iid_узла--biha-node-id=#id_узлаУказывает уникальный идентификатор узла.
-pпорт--port=#портУказывает порт узла для входящих соединений.
Если не указан, bihactl использует значение по умолчанию — 5432.
--can-vote#Определяет, может ли узел голосовать. Значение по умолчанию —
true. Если заданоfalse, узел не может голосовать, а также не может выдвигать себя в качестве кандидата на выборах лидера.-c--convert-standby#Преобразовывает существующий узел в узел-последователь отказоустойчивого кластера. Узел должен быть репликой узла-лидера до преобразования.
-hадрес_узла--host=#адрес_узлаУказывает хост для входящих подключений. Значение по умолчанию —
PGHOST.-fфайл_с_магической_строкой--magic-file=#файл_с_магической_строкойИспользует файл с «магической» строкой, содержащей закодированные данные, для подключения к узлу-лидеру.
-sмагическая_строка--magic-string=#магическая_строкаИспользует «магическую» строку, содержащую закодированные данные, для подключения к узлу-лидеру.
--max-replicas=#макс_число_репликУказывает максимальное число репликационных подключений biha к узлу, т.е. максимальное число процессов walsender, где в качестве
application_nameуказаноbiha_node_*.Возможные значения:
0,INT_MAX. Значение по умолчанию —INT_MAX, количество подключений неограниченно.-rрежим_работы_узла--mode=#режим_работы_узлаУказывает режим работы узла. Допустимы следующие значения:
regular— узел может быть как лидером, так и последователем. Это значение по умолчанию.referee— узел только участвует в выборах лидера и не содержит пользовательских баз данных.referee_with_wal— узел участвует в выборах лидера так же, как в режимеreferee, и получает все файлы WAL от узла-лидера.
По умолчанию база данных
postgresне копируется на узел в режимеrefereeилиreferee_with_wal. Чтобы скопировать базу данныхpostgresна рефери, воспользуйтесь параметром --referee-with-postgres-db.--name=#имя_узлаУказывает имя узла-последователя. Если не указано, имя генерируется автоматически в формате
biha_node_+--biha-node-id. Например, если--biha-node-id— 1, имя узла —biha_node_1.-Dкаталог_данных--pgdata=#каталог_данныхУказывает каталог, где будет храниться кластер баз данных. Если параметр не задан, bihactl будет использовать значение
PGDATA.-Pпорт_biha--biha-port=#порт_bihaУказывает порт для обмена служебной информацией между узлами. Если порт не указан, устанавливается значение --port + 1.
--preferred-roles=#предпочтительные_роли_для_репликацииУказывает предпочтительную роль узла для репликации в BiHA-кластере с каскадной репликацией.
Возможные значения: комбинации
L(лидер),F(последователь) иR(рефери). Значение должно содержать от 1 до 3 символов, которые не должны повторяться. Например:L,F,LFRилиLF.Значение по умолчанию —
L, которое означает, что данные реплицируются только с лидера.--priority=#приоритет_узлаЗадаёт вес узла, который влияет как на выборы, так и на репликацию в кластере, в миллисекундах. Возможные значения:
0,INT_MAX. Значение по умолчанию —-1, при котором параметр игнорируется. Значение параметра можно изменить только функцией biha.set_priority.BiHA использует этот параметр конфигурации для следующих целей:
Задать тайм-аут начала репликации при выборе источника репликации в BiHA-кластере с каскадной репликацией. Чем выше значение, тем позднее узел начинает репликацию и разрешает подключение менее приоритетных узлов. Параметр необходим для того, чтобы узлы кластера могли наладить схему каскадной репликации автоматически.
Установить приоритет узла в кластере с синхронной репликацией. Значение определяет тайм-аут, по истечении которого узел предложит себя в качестве кандидата на выборах. Нулевое значение указывает на самый высокий приоритет.
Важно
Чтобы обеспечить корректную работу параметра, задайте для --sync-standbys значение на одну единицу меньше, чем общее число узлов кластера.
-R--referee-with-postgres-db#Копирует базу данных
postgresсо всеми объектами на узел-рефери. Этот параметр можно использовать только при добавлении узла в режимеrefereeилиreferee_with_wal.--segment-id=#идентификатор_сегментаУказывает уникальный идентификатор сегмента, в который добавляется узел. Если сегмент не указать, по умолчанию узел будет добавлен в сегмент
111. Необходимо использовать либо--segment-id, либо --segment-name для указания сегмента.--segment-name=#имя_сегментаУказывает имя сегмента, в который добавляется узел. Если сегмент не указать, по умолчанию узел будет добавлен в сегмент
111. Необходимо использовать либо--segment-name, либо --segment-id для указания сегмента.-lпараметры_подключения--use-leader=#параметры_подключенияУказывает параметры подключения к узлу-лидеру в следующем формате:
host=
адрес_узла_лидераport=порт_лидераbiha-port=порт_biha_лидера
segment add #
Синтаксис:
bihactl segment add [--id=идентификатор_сегмента] [--minnodes=мин_число_узлов] [--name=имя_сегмента] [--nquorum=значение_кворума] {--use-leader=информация_для_подключения| --magic-string=магическая_строка| --magic-file=магический_файл}
Добавляет сегмент, который предназначен для объединения узлов BiHA-кластера, размещённых в одном центре обработки данных.
Предупреждение
Эта команда является частью функциональности геораспределённости и отказоустойчивости, которая в настоящий момент является экспериментальной и не рекомендуется к использованию в производственной среде.
Эта команда может принимать следующие параметры:
-Iидентификатор_сегмента--id=#идентификатор_сегментаУказывает уникальный идентификатор сегмента.
-fфайл_с_магической_строкой--magic-file=#файл_с_магической_строкойИспользует файл с «магической» строкой, содержащей закодированные данные для подключения к узлу кластера.
-sмагическая_строка--magic-string=#магическая_строкаИспользует «магическую» строку, содержащую закодированные данные для подключения к узлу кластера.
--name=#имя_сегментаУказывает имя сегмента. Если не указано, имя генерируется автоматически в формате
biha_node_+--id. Например, если--id— 1, имя сегмента —biha_node_1.-lпараметры_подключения--use-leader=#параметры_подключенияУказывает параметры подключения к узлу кластера в следующем формате:
host=
хост_узлаport=порт_узлаbiha-port=biha_порт_узла