26.4. Справка по расширению biha #
biha — расширение Postgres Pro для управления BiHA-кластером.
В этом разделе содержится информация о параметрах конфигурации, функциях и представлениях расширения biha.
26.4.1. Параметры конфигурации #
Расширение biha поддерживает ряд описанных ниже параметров конфигурации, специфичных для BiHA-кластера:
26.4.1.1. Параметры конфигурации кластера #
Важно
При настройке параметров конфигурации кластера нужно обязательно обеспечить надёжность сети, чтобы изменения затронули все узлы кластера без возникновения ошибок.
Значения этих параметров должны быть одинаковыми на всех узлах кластера.
Не рекомендуется изменять какие-либо параметры конфигурации кластера, пока один из узлов находится в состоянии
NODE_ERROR, так как на этом узле изменения могут не примениться.
service_mode(boolean) #Определяет, включен ли сервисный режим в BiHA-кластере.
Значение можно задать с помощью функции biha.service_mode.
Возможные значения:
f(по умолчанию): сервисный режим отключён.t: сервисный режим включён.
ssl_certificate(text) #Указывает путь к публичному SSL-сертификату, который используется для защиты служебных подключений между узлами инициализированного BiHA-кластера. За подробной информацией обратитесь к Управление SSL для служебных подключений.
Значение можно задать с помощью функции biha.set_ssl_certificate. Чтобы изменения вступили в силу, необходим перезапуск узла.
Значение по умолчанию:
/PGDATA/pg_biha/biha_pub_cert.pemssl_mode(text) #Указывает режим аутентификации для роли
biha_replication_user. За подробной информацией о настройке SSL-аутентификации обратитесь к Настройка SSL для biha_replication_user. За подробной информацией о режимах обратитесь к sslmode.Значение можно задать с помощью функции biha.set_ssl_mode. Чтобы изменения вступили в силу, необходим перезапуск узла.
Возможные значения:
verify-full(по умолчанию)requireverify-ca
ssl_private_key(text) #Указывает путь к закрытому SSL-ключу, который используется для защиты служебных подключений между узлами инициализированного BiHA-кластера. За подробной информацией обратитесь к Управление SSL для служебных подключений.
Значение можно задать с помощью функции biha.set_ssl_private_key. Чтобы изменения вступили в силу, необходим перезапуск узла.
Значение по умолчанию:
/PGDATA/pg_biha/biha_priv_key.pemsynchronous_standby_names.count(integer) #Включает кворумную синхронную репликацию, устанавливая параметр synchronous_standby_names и указывая число синхронных резервных (кворум) с методом
ANY.Значение можно задать с помощью функции biha.set_sync_standbys.
Значение должно быть целым числом больше нуля, больше значения параметра synchronous_standby_names.min, если он задан, а также не должно превышать число последователей, за исключением рефери. Рекомендуется задавать значение
synchronous_standby_names.countменьше, чем значение minnodes.synchronous_standby_names.min(integer) #Включает нестрогую кворумную синхронную репликацию, указывая значение поля
MINпараметра synchronous_standby_names, что является минимальным числом синхронных резервных, которые должны быть доступны, чтобы лидер продолжал подтверждать транзакции. Если значение параметра не указано, BiHA-кластер работает в соответствии с ограничениями синхронной репликации по умолчанию, т.е. лидер не доступен для транзакций на запись, пока все последователи не догонять его текущее состояние.Значение можно задать с помощью функции biha.set_sync_standbys_min.
Значение
synchronous_standby_names.minдолжно быть целым числом равным или больше нуля, а также меньше значения synchronous_standby_names.count. Если задано значение-1, нестрогая кворумная синхронная репликация отключена.synchronous_standby_names.names(integer) #Указывает список синхронных резервных в параметре конфигурации synchronous_standby_names.
Значение можно задать с помощью функции biha.set_ssn, а также изменять список синхронных резервных с помощью функций biha.add_to_ssn или biha.get_ssn.
use_ssl(boolean) #Указывает, будет ли использоваться защищённый режим передачи служебной информации между узлами кластера по протоколу SSL/TLS управляющего канала biha. За подробной информацией обратитесь к Управление SSL для служебных подключений.
Значение можно задать с помощью функции biha.set_use_ssl. Чтобы изменения вступили в силу, необходим перезапуск узла.
Возможные значения:
false(по умолчанию): SSL отключён для служебных подключений BiHA.true: сервисные подключения BiHA защищены SSL.
user_biha_cert(text) #Указывает путь к публичному SSL-сертификату, который используется для аутентификации роли
biha_replication_user. За подробной информацией о настройке SSL-аутентификации обратитесь к Настройка SSL для biha_replication_user.Значение можно задать с помощью функции biha.set_user_cert.
user_biha_key(text) #Указывает путь к закрытому ключу SSL, который используется для аутентификации роли
biha_replication_user. За подробной информацией о настройке SSL-аутентификации обратитесь к Настройка SSL для biha_replication_user.Значение можно задать с помощью функции biha.set_user_key.
26.4.1.2. Параметры конфигурации сегмента #
Следующие параметры конфигурации можно задать индивидуально для каждого логического узла (сегмента). Значения параметров наследуются узлами в рамках сегмента.
heartbeat_max_lost(integer) #Указывает максимальное число сообщений о контроле состояния, которые допустимо не получить по BCP до того, как узел будет считаться недоступным.
Значение можно задать с помощью функции biha.set_heartbeat_max_lost.
Значение по умолчанию:
10Минимальное значение:
3Узлы во всех состояниях используют значение тайм-аута сообщений о контроле состояния, который рассчитывается как
heartbeat_max_lost* heartbeat_send_period, для определения доступности других узлов. Например, если Узел A не получает сообщения о контроле состояния от Узла B в течение вышеупомянутого тайм-аута, состояние Узла B изменится наUNKNOWNв представлении biha.status_v Узла A, что будет означать, что Узел A считает Узел B недоступным. Лидер в состоянииLEADER_RWдополнительно использует тайм-аут, указанный в параметре no_wal_on_follower.heartbeat_send_period(integer) #Указывает частоту отправки сообщений о контроле состояния в миллисекундах.
Значение можно задать с помощью функции biha.set_heartbeat_send_period.
Значение по умолчанию:
1000Минимальное значение:
500Узлы во всех состояниях используют значение тайм-аута сообщений о контроле состояния, который рассчитывается как heartbeat_max_lost *
heartbeat_send_period, для определения доступности других узлов. Например, если Узел A не получает сообщения о контроле состояния от Узла B в течение вышеупомянутого тайм-аута, состояние Узла B изменится наUNKNOWNв представлении biha.status_v Узла A, что будет означать, что Узел A считает Узел B недоступным. Лидер в состоянииLEADER_RWдополнительно использует тайм-аут, указанный в параметре no_wal_on_follower.minnodes(integer) #Указывает минимальное количество рабочих узлов, необходимое, чтобы лидер был открыт для транзакций на запись.
Значение можно задать с помощью функции biha.set_minnodes.
Значение по умолчанию: равно nquorum
Устанавливая это значение, принимайте во внимание возможный риск разделения кластера. Рекомендуется использовать следующую формулу: (
общее_число_узлов+ 1)/2. Например, если в кластере 3 узла, значениеminnodesдолжно быть 2.Если на узле для параметра can_vote установлено значение
false, такой узел игнорируется параметромminnodes.no_wal_on_follower(integer) #Указывает тайм-аут продвижения слота репликации в миллисекундах.
Значение можно задать с помощью функции biha.set_no_wal_on_follower.
Значение по умолчанию:
20000Минимальное значение:
5000BiHA использует этот параметр конфигурации для следующих целей:
Когда вы вручную назначаете узел-последователь в качестве нового лидера с помощью функции biha.set_leader, состояние последователя изменяется на
FOLLOWER_OFFERED.Последователь в состоянии
FOLLOWER_OFFEREDпроверяет, обновилась ли его позиция WAL. Обновление позиции WAL подтверждает, что последователь продолжает получать данные репликации от источника. Если последователь не получает записи WAL дольше, чем задано в параметреno_wal_on_follower, состояние последователя изменяется обратно наFOLLOWER. В этом случае в журнале появляется следующее сообщение: «Timed out waiting for new WAL records from current leader» (Истёк тайм-аут ожидания записей WAL от текущего лидера).Лидер в состоянии
LEADER_RWиспользует параметрno_wal_on_followerв связке со значением тайм-аута сообщений о контроле состояния (который рассчитывается как heartbeat_max_lost * heartbeat_send_period) для определения доступности других узлов.Лидер проверяет позиции слотов репликации других узлов. Если позиция слота репликации узла обновляется, это означает, что узел получает данные репликации от лидера и доступен. Если лидер не получает от узла сообщения о контроле состояния в течение вышеупомянутого тайм-аута, а позиция слота репликации узла не меняется в течение тайм-аута, заданного в
no_wal_on_follower, лидер будет считать узел недоступным, а состояние узла изменится наUNKNOWNв представлении biha.status_v лидера.Если в каскадном BiHA-кластере узел не получает WAL в течение времени, заданного в
no_wal_on_follower, он начинает искать новый источник репликации в соответствии с конфигурацией repl_pref_roles.
nquorum(integer) #Указывает минимальное число узлов, которые должны проголосовать за нового лидера при отказе текущего лидера.
Значение можно задать с помощью функции biha.set_nquorum.
Значение по умолчанию:
2Устанавливая это значение, принимайте во внимание возможный риск разделения кластера. Рекомендуется использовать следующую формулу: (
общее_число_узлов+ 1)/2. Например, если в кластере 3 узла, значениеnquorumдолжно быть 2.Если на узле для параметра can_vote установлено значение
false, такой узел игнорируется параметромnquorum.
26.4.1.3. Параметры конфигурации узла #
Следующие параметры конфигурации можно задать индивидуально для каждого физического узла.
asyncaction_timeout(integer) #Указывает время ожидания выполнения асинхронных операций, таких как добавление сегментов и удаление узлов, в миллисекундах. Если сегмент или узел не добавляются или не удаляются в течение указанного времени, BiHA прерывает SQL-команду.
Значение параметра должно быть одинаковым на всех узлах кластера.
Значение можно задать с помощью функции biha.set_asyncaction_timeout.
Значение по умолчанию:
30000Минимальное значение:
1000biha_hosts(string) #Используется другими узлами для подключению к текущему узлу по внутреннему управляющему каналу (BCP), например, через прокси-сервер или туннель. Если значение
biha_hostsпустое, по умолчанию, используется значение biha_listen_addresses текущего узла.Значение можно задать с помощью функции biha.set_biha_hosts.
Возможные значения: один или несколько разделённых запятыми адресов в формате
hostname:port.port— необязательное значение, если порт не указан или задано значение-1, используется значение biha_port текущего узла.Например:
biha-db-1:5433,biha-proxy:8081biha_listen_addresses(string) #Определяет, на каких адресах открыты слушающие сокеты для внутреннего управляющего канала BCP.
Значение можно задать с помощью функции bihactl.
Возможные значения: один или несколько разделённых запятыми адресов в формате
hostname:port.port— необязательное значение, если порт не указан или задано значение-1, используется значение biha_port текущего узла.Например:
biha-db-1:5433,biha-proxy:8081biha_port(integer) #Указывает порт для обмена служебной информацией между узлами.
Значение параметра задаётся утилитой bihactl и может быть перезаписано при изменении параметров конфигурации biha_hosts, biha_listen_addresses или replication_hosts.
callbacks_timeout(integer) #Устанавливает время для выполнения всех функций-обработчиков для одного события в миллисекундах.
Значение можно задать с помощью функции biha.set_callbacks_timeout.
Значение по умолчанию:
10000Минимальное значение:
1000config_send_period(integer) #Определяет тайм-аут для рассылки сообщения с конфигурацией кластера.
Значение можно задать с помощью функции biha.set_config_send_period.
Значение по умолчанию:
10000Минимальное значение:
500deny_wal_sources(string) #Указывает перечень узлов, которые не могут быть источниками репликации для текущего узла. Если идентификатор узла внесён в перечень, текущий узел не может реплицировать с этого узла.
Значение можно задать с помощью функции biha.set_deny_wal_sources.
Значение по умолчанию: пустое
Параметр
deny_wal_sourcesимеет более высокий приоритет, чем repl_pref_roles. Например, если идентификатор лидера внесён в переченьdeny_wal_sourcesузла, этот узел не реплицирует с лидера, даже если для его параметраpreferred_rolesзадано значениеLF.flw_ro(boolean) #Определяет доступность последователя для операций на чтение.
Значение можно задать с помощью функции biha.set_flw_ro.
Возможные значения:
on(по умолчанию): последователь доступен для операций на чтение.off: чтение с этого последователя разрешено только суперпользователям, а также членам ролейBIHA_CLUSTER_MANAGEMENT_ROLEиpg_monitor.
manage_slots_xmin(boolean) #Определяет, отслеживает ли BiHA значение
xminслотов репликации.Значение можно задать с помощью функции biha.set_manage_slots_xmin.
Возможные значения:
true(по умолчанию): отслеживаниеxminвключено.false: отслеживаниеxminотключено.
max_replicas(integer) #Указывает максимальное число подключений biha к узлу для репликации, то есть максимальное число процессов walsender, где
application_name—biha_node_*. За подробной информацией обратитесь к Подразделу 26.1.5.2.Значение можно задать с помощью функции biha.set_max_replicas.
Значение должно быть целым числом больше нуля и не должно превышать значения max_wal_senders.
Другие возможные значения:
INT_MAX(по умолчанию): число подключения неограниченно.0: подключения запрещены.
pg_port(integer) #Указывает порт узла для входящих подключений к Postgres Pro.
Значение параметра задаётся утилитой bihactl и может быть перезаписано при изменении параметров конфигурации biha_hosts, biha_listen_addresses или replication_hosts.
replication_hosts(string) #Используется другими узлами для подключения к текущему узлу по каналу репликации. Значение параметра biha_listen_addresses должно включать
replication_hosts. Если значениеreplication_hostsпустое, по умолчанию используется значение biha_listen_addresses текущего узла.Значение можно задать с помощью функции biha.set_replication_hosts.
Возможные значения: один или несколько разделённых запятыми адресов в формате
hostname:port.port— необязательное значение, если порт не указан или задано значение-1, используется значение biha_port текущего узла.Максимальное значение строки 1024 байта, в противном случае параметр игнорируется.
Например:
biha-db-1:5433,biha-proxy:8081sql_hosts(string) #Используется другими узлами для выполнения SQL-запросов к текущему узлу. Если значение
sql_hostsпустое, по умолчанию используется значение replication_hosts текущего узла.Значение можно задать с помощью функции biha.set_sql_hosts.
Возможные значения: один или несколько разделённых запятыми адресов в формате
hostname:port.port— необязательное значение, если порт не указан или задано значение-1, используется значение biha_port текущего узла.Максимальное значение строки 1024 байта, в противном случае параметр игнорируется.
Например:
biha-db-1:5433,biha-proxy:8081watchdog_timeout(integer) #Указывает тайм-аут для прекращения принятия запросов узлом, если процесс biha не отвечает, в секундах. За подробной информацией обратитесь к Подразделу 26.3.9.
Значение можно задать с помощью функции biha.set_watchdog_timeout. Чтобы изменения вступили в силу, необходим перезапуск узла.
Значение по умолчанию:
2Минимальное значение:
1
26.4.1.4. Параметры конфигурации, общие для узлов и сегментов #
Следующие параметры конфигурации можно задать индивидуально как для физических, так и для логических узлов (сегментов).
can_be_leader(boolean) #Определяет возможность узла или сегмента стать лидером.
Значение можно задать с помощью функции biha.set_can_be_leader.
Возможные значения:
true(по умолчанию): узел или сегмент может стать кандидатом на выборах нового лидера.false: узел или сегмент не может стать кандидатом на выборах нового лидера.
Самый большой объём WAL может быть на том узле, который не может стать лидером. В этой ситуации при необходимости выборов другие узлы, которые могут предлагать себя в качестве кандидатов в лидеры, попытаются получить недостающие данные с этого узла. В случае успеха один из этих узлов станет лидером. Если данные получить не удалось, на узле, который не может стать лидером, запустится процесс автоматической синхронизации. Если параметр biha.autorewind не включён, состояние этого узла изменится на
NODE_ERROR.can_vote(boolean) #Определяет, может ли узел или сегмент голосовать.
Значение можно задать с помощью функции biha.set_can_vote.
Возможные значения:
true(по умолчанию): узел или сегмент может голосовать.false: узел или сегмент не может голосовать, а также не может быть кандидатом на выборах нового лидера.
leader_timeout(integer) #Определяет максимальную длительность переключения после запуска biha.set_leader, в миллисекундах. Если процесс переключения не завершается в указанный период, узел возвращается в состояние
FOLLOWER.Значение можно задать с помощью функции biha.set_leader_timeout.
Значение по умолчанию:
20000Минимальное значение:
0mode(text) #Указывает режим работы узла или сегмента. Режим задаётся утилитой bihactl, его нельзя изменить после инициализации кластера.
Возможные значения для узла:
regular(по умолчанию): узел может быть лидером или последователем.referee: узел может только участвовать в выборах лидера и не содержит никаких пользовательских баз данных.referee_with_wal: узел участвует в выборах лидера также, как и в режимеreferee, а также получает полный WAL с лидера.
Возможные значения для сегмента:
regularname(text) #Указывает имя узла или сегмента. Имя задаётся утилитой bihactl, его нельзя изменить после инициализации кластера.
priority(integer) #Задаёт приоритет узла или сегмента в секундах, который влияет как на выборы, так и на репликацию в кластере.
Значение можно задать с помощью функции biha.set_priority.
Значение должно быть целым числом больше или равным нулю. Значение
0означает наивысший приоритет.Значение по умолчанию:
-1, параметр игнорируется.Примечание
После изменения значения по умолчанию его нельзя снова задать, то есть отключение
priorityне поддерживается.BiHA использует этот параметр конфигурации для следующих целей:
Задать тайм-аут начала репликации при выборе источника репликации в BiHA-кластере с каскадной репликацией. Чем выше значение, тем позднее узел начинает репликацию и разрешает подключение менее приоритетных узлов. Параметр необходим для того, чтобы узлы кластера могли наладить схему каскадной репликации автоматически.
Установить приоритет узла в кластере с синхронной репликацией. Значение определяет тайм-аут, по истечении которого узел предложит себя в качестве кандидата на выборах. Нулевое значение означает самый высокий приоритет.
Важно
Чтобы обеспечить корректную работу параметра, установите значение параметра --sync-standbys на единицу меньше общего количества узлов кластера.
repl_pref_roles(text) #Указывает предпочтительную роль узла, выступающего в качестве источника репликации для текущего узла в BiHA-кластере с каскадной репликацией.
Значение можно задать с помощью функции biha.set_pref_roles.
Возможные значения:
L(лидер),F(последователь) илиR(рефери), или их комбинации. Значение должно содержать от одного до трёх символов, которые не должны повторяться. Например:L,F,LFRилиLF.Значение по умолчанию:
L, которое означает, что данные реплицируются с лидера или главного последователя в зависимости от сегмента, в котором расположен узел.
26.4.1.5. Необязательные параметры конфигурации #
Следующие параметры конфигурации являются необязательными и могут быть изменены с помощью команды ALTER SYSTEM SET, например:
ALTER SYSTEM SET biha.autorewind = true;
Значения этих параметров на узлах кластера могут отличаться.
biha.autorewind(boolean) #Управляет политикой автоматической синхронизации для узла, в отношении которого должен быть выполнен
pg_rewind. Например, для старого лидера при его синхронизации с новым лидером. За подробной информацией обратитесь к Автоматическая синхронизация кластера после аварийного переключения.Возможные значения:
false(по умолчанию): автоматическая синхронизация не выполняется.true: автоматическая синхронизация выполняется после ошибки, после которой узел переходит в состояниеNODE_ERROR.
biha.autowaltrim(boolean) #Управляет политикой автоматического выравнивания WAL в рамках одного узла. За подробной информацией обратитесь к Автоматическая синхронизация кластера после аварийного переключения.
Возможные значения:
true(по умолчанию): BiHA автоматически планирует и выполняет процедуру выравнивания WAL, если это возможно.false: процедура выравнивания WAL не выполняется, синхронизация кластера проводится с помощью pg_rewind.
biha.wal_validation(boolean) #Управляет механизмом проверки WAL. Процедура проверки WAL запускается при обновлении истории, а также при состоянии узла
PRESTARTUP, чтобы исключить прерывание процесса восстановления по причине несогласованности WAL.Возможные значения:
true(по умолчанию): валидация WAL включена.false: валидация WAL отключена.
Механизм проверки WAL выполняет следующие действия:
Проверяет линии времени. Если в TLI (идентификаторе линии времени) не хватает полных сегментов WAL до точки переключения или вообще нет сегментов, он считается некорректным.
Скрывает некорректные линии времени от узлов BiHA. Это не позволяет узлу с большей, но некорректной линией времени стать кандидатом на роль лидера.
Перезапускает Postgres Pro в случае несогласованности WAL на повышаемом узле.
Проверяет согласованность WAL при состоянии узла
PRESTARTUPи, при необходимости, пытается исправить WAL автоматически.
26.4.1.6. Уровни протоколирования biha #
26.4.1.6.1. Общие уровни протоколирования #
Общие уровни протоколирования используются для компонентов biha, у которых нет специальных уровней протоколирования.
biha.BihaLog_log_level(enum) #Задаёт уровень протоколирования для предоставления общей информации о работе компонентов biha. Значение по умолчанию —
LOG.biha.BihaWarn_log_level(enum) #Задаёт уровень протоколирования для предупреждения о возможных ошибках в работе компонентов biha. Значение по умолчанию —
WARNING.biha.BihaDetails_log_level(enum) #Задаёт уровень протоколирования для предоставления подробной информации о работе компонентов biha. Значение по умолчанию —
DEBUG1.biha.BihaDebug_log_level(enum) #Задаёт уровень протоколирования для предоставления отладочной информации о работе компонентов biha. Значение по умолчанию —
DEBUG2.biha.BihaDebug2_log_level(enum) #Задаёт уровень протоколирования для предоставления отладочной информации о работе компонентов biha. Значение по умолчанию —
DEBUG3.
26.4.1.6.2. Уровни протоколирования управляющего канала BiHA (BCP) и транспорта #
biha.BcpTransportLog_log_level(enum) #Задаёт уровень протоколирования для предоставления общей информации о работе управляющего канала. Значение по умолчанию —
LOG.biha.BcpTransportWarn_log_level(enum) #Задаёт уровень протоколирования для вывода предупреждений о возможных проблемах в канале управления. Значение по умолчанию —
WARNING.biha.BcpTransportDetails_log_level(enum) #Задаёт уровень протоколирования для предоставления подробной информации о работе управляющего канала. Значение по умолчанию —
DEBUG1.biha.BcpTransportDebug_log_level(enum) #Задаёт уровень протоколирования для предоставления отладочной информации о работе управляющего канала. Значение по умолчанию —
DEBUG2.
26.4.1.6.3. Уровни протоколирования Node Controller #
Следующие уровни протоколирования предоставляют информацию о компоненте Node Controller.
biha.NodeControllerLog_log_level(enum) #Задаёт уровень протоколирования для предоставления общей информации о работе компонента
Node Controller. Значение по умолчанию —LOG.biha.NodeControllerWarn_log_level(enum) #Задаёт уровень протоколирования для вывода предупреждений о возможных проблемах компоненте
Node Controller. Значение по умолчанию —WARNING.biha.NodeControllerDetails_log_level(enum) #Задаёт уровень протоколирования для предоставления подробной информации о работе компонента
Node Controller. Значение по умолчанию —DEBUG1.biha.NodeControllerDebug_log_level(enum) #Задаёт уровень протоколирования для предоставления отладочной информации о работе компонента
Node Controller. Значение по умолчанию —DEBUG2.biha.NodeControllerDebug2_log_level(enum) #Задаёт уровень протоколирования для предоставления отладочной информации о работе компонента
Node Controller. Значение по умолчанию —DEBUG3.
26.4.1.6.4. Уровни протоколирования Postgres Controller #
Следующие уровни протоколирования предоставляют информацию о компоненте Postgres Controller.
biha.PgControllerLog_log_level(enum) #Задаёт уровень протоколирования для предоставления общей информации о работе компонента
Postgres Controller. Значение по умолчанию —LOG.biha.PgControllerWarn_log_level(enum) #Задаёт уровень протоколирования для вывода предупреждений о возможных проблемах в компоненте
Postgres Controller. Значение по умолчанию —WARNING.biha.PgControllerDetails_log_level(enum) #Задаёт уровень протоколирования для предоставления подробной информации о работе компонента
Postgres Controller. Значение по умолчанию —DEBUG1.biha.PgControllerDebug_log_level(enum) #Задаёт уровень протоколирования для предоставления отладочной информации о работе компонента
Postgres Controller. Значение по умолчанию —DEBUG2.biha.PgControllerDebug2_log_level(enum) #Задаёт уровень протоколирования для предоставления отладочной информации о работе компонента
Postgres Controller. Значение по умолчанию —DEBUG3.
26.4.1.6.5. Уровни протоколирования Config Controller #
Следующие уровни протоколирования предоставляют информацию о компоненте Config Controller.
biha.BihaConfigLog_log_level(enum) #Задаёт уровень протоколирования для предоставления общей информации о работе компонента
Config Controller. Значение по умолчанию —LOG.biha.BihaConfigWarn_log_level(enum) #Задаёт уровень протоколирования для вывода предупреждений о возможных проблемах в компоненте
Config Controller. Значение по умолчанию —WARNING.biha.BihaConfigDetails_log_level(enum) #Задаёт уровень протоколирования для предоставления подробной информации о работе компонента
Config Controller. Значение по умолчанию —DEBUG1.biha.BihaConfigDebug_log_level(enum) #Задаёт уровень протоколирования для предоставления отладочной информации о работе компонента
Config Controllercomponent. Значение по умолчанию —DEBUG2.biha.BihaConfigDebug2_log_level(enum) #Задаёт уровень протоколирования для предоставления отладочной информации о работе компонента
Config Controller. Значение по умолчанию —DEBUG3.
26.4.2. Функции #
Все перечисленные ниже функции необходимо вызывать из базы данных biha_db, например:
biha_db=# SELECT biha.add_node(222, 1111);
Если иное не указано в описании функции, функция должна вызываться на лидере.
26.4.2.1. Состав кластера #
biha.add_node (#idinteger,идентификатор_родительского_узлаinteger) →booleanДобавляет сегмент в кластер GDBiHA. Если не указать
идентификатор_родительского_узла, по умолчанию в качестве родительского узла будет назначен узел с идентификатором 1111. За подробной информацией обратитесь к Подразделу 26.3.1.Например, добавьте сегмент с идентификатором
222в кластер с идентификатором1111:biha_db=# SELECT biha.add_node(222, 1111); add_node ------------- t (1 row)
biha.set_leader (#idinteger,режимstring) →booleanУстанавливает лидера, главного последователя или лидер-сегмент вручную. За подробной информацией о процедуре ручного переключения обратитесь к Ручное переключение узлов.
Примечание
Вызывайте эту функцию на узле, который вы хотите сделать новым лидером или главным последователем. Не вызывайте функцию на текущем лидере.
Поддерживаются следующие режимы переключения:
graceful(по умолчанию): повышаемый узел ожидает понижения старого лидера или главного последователя и при необходимости догоняет его по записям WAL.immediate: переключение происходит немедленно, без ожидания. Состояние узла с указанным идентификатором сразу меняется наLEADER_RW/LEADER_ROилиFRONT_FOLLOWER, пропуская состояниеFOLLOWER_OFFERED. В этом режиме функция-обработчикLEADER_CHANGE_STARTEDне вызывается. Если на текущем лидере или главном последователе выполняется команда в режимеimmediate, его состояние сразу меняется наFOLLOWERи собщение о смене лидера передаётся на другие узлы.Важно
Режим
immediateнебезопасен, так как может привести к потере данных. Перед переключением в этом режиме рекомендуется включить автоматическую синхронизацию, задав для параметра конфигурации biha.autorewind значениеtrue.
Например, назначьте узел с идентификатором
2новым лидером в режимеimmediate:biha_db=# SELECT biha.set_leader(2, 'immediate'); set_leader ------------- t (1 row)
biha.set_leader_timeout (#idinteger,значение_тайм_аутаinteger) →booleanЗадаёт значение параметра конфигурации leader_timeout.
Функцию
biha.set_leader_timeoutможно вызвать для отдельного физического узла или сегмента в зависимости от указанного идентификатора. При вызове функции для сегмента значение времени ожидания переключения применяется ко всем узлам в рамках сегмента.Например, чтобы установить время ожидания
10000мс для всех узлов в сегменте222, выполните:biha_db=# SELECT * FROM biha.set_leader_timeout(222, 10000); set_leader_timeout ------------- t (1 row)
biha.remove_node (#idinteger) →booleanУдаляет узел или сегмент из кластера. Перед удалением узел необходимо остановить. Если узел является родительским для другого узла, удалить его нельзя. За подробной информацией об изменении состава кластера обратитесь к Подразделу 26.3.1.
Например, удалите узел с идентификатором
4:biha_db=# SELECT biha.remove_node(3); remove_node ------------- t (1 row)
26.4.2.2. Конфигурирование кластера #
biha.config () →#setof recordВозвращает значения параметров конфигурации для каждого узла и сегмента. Наиболее критичные параметры конфигурации можно также посмотреть с помощью представления Подраздел 26.4.3.1.
Отображаются следующие параметры:
id: идентификатор узла (integer).nquorum: текущее значение nquorum (integer).minnodes: текущее значение minnodes (integer).heartbeat_send_period: текущее значение heartbeat_send_period (integer).heartbeat_max_lost: текущее значение heartbeat_max_lost (integer).no_wal_on_follower: текущее значение no_wal_on_follower (integer).sync_standbys_min: текущее значения поляMINпараметра synchronous_standby_names (integer).priority: текущее значение priority (integer).can_be_leader: текущее значение can_be_leader (boolean).can_vote: текущее значение can_vote (boolean).mode: текущее значение mode (text).proxima_enabled: текущий статус proxima, если расширение поддерживается текущей версией Postgres Pro Standard (integer).name: имя узла (text).repl_pref_roles: предпочтительные роли узлов для репликации, заданные в параметре конфигурации repl_pref_roles (text).max_replicas: максимальное число репликационных подключений к узлу, заданное в параметре конфигурации max_replicas (integer).config_version: текущая версия конфигурацииpg_biha/biha_conf_(версия_конфигурации.jsoninteger).parent_id: уникальный идентификатор узла, который является родительским для текущего узла (integer).service_mode: текущее значение service_mode (boolean).unit_type: тип юнита. Возможные значения:NODE,SEGMENT.deny_wal_sources: текущее значение deny_wal_sources (string).biha_hosts: текущее значение biha_hosts (string).replication_hosts: текущее значение replication_hosts (string).sql_hosts: текущее значение sql_hosts (string).leader_timeout: текущее значение leader_timeout (integer).use_ssl: текущее значение use_ssl (boolean).ssl_certificate: текущее значение ssl_certificate (text).ssl_private_key: текущее значение ssl_private_key (text).user_cert: текущее значение user_biha_cert (text).user_key: текущее значение user_biha_key (text).ssl_mode: текущее значение ssl_mode (text).flw_ro: текущее значение flw_ro (boolean).callbacks_timeout: текущее значение callbacks_timeout (integer).watchdog_timeout: текущее значение watchdog_timeout (integer).asyncaction_timeout: текущее значение asyncaction_timeout (integer).manage_slots_xmin: текущее значение manage_slots_xmin (boolean).config_send_period: текущее значение config_send_period (integer).
Например, вызовите функцию
biha.configдля узла с идентификатором1:biha_db=# select * from biha.config() where id = 1 \gx -[ RECORD 1 ]---------+-------------------------- id | 1 nquorum | 3 minnodes | 1 heartbeat_send_period | 1000 heartbeat_max_lost | 10 no_wal_on_follower | 20000 sync_standbys_min | -2 priority | -1 can_be_leader | t can_vote | t mode | regular proxima_enabled | f name | biha_node_1 repl_pref_roles | L max_replicas | 2147483647 config_version | 12 parent_id | 111 service_mode | f unit_type | NODE deny_wal_sources | biha_hosts | biha-db-1:5433,biha-proxy:8081 replication_hosts | biha-db-1:5432,postgres-proxy:8081 sql_hosts | leader_timeout | 20000 use_ssl | f ssl_certificate | pg_biha/biha_pub_cert.pem ssl_private_key | pg_biha/biha_priv_key.pem user_cert | user_key | ssl_mode | flw_ro | t callbacks_timeout | 10000 watchdog_timeout | 2 asyncaction_timeout | 30000 manage_slots_xmin | t config_send_period | 10000
biha.config_json () →#setof recordВозвращает конфигурационный файл в формате JSON. Чтобы увидеть содержимое ветви конфигурационного дерева JSON, используйте функцию biha.get_option.
Например:
biha_db=# select biha.config_json(); config_json ------------------------------------------------------- { + "unit": { + "id": 1111, + "mode": "regular", + "name": "biha_node_1111", + "nquorum": 1, + "can_vote": true, + "children": [ + { + "id": 111, + ... "proxima_enabled": false, + "ssl_certificate": "pg_biha/biha_pub_cert.pem", + "ssl_private_key": "pg_biha/biha_priv_key.pem", + "synchronous_standby_names": { + "min": -2, + "count": -1, + "names": [ + ] + } + } (1 row)biha.get_option (#json_pathtext) →setof recordВозвращает содержимое ветви конфигурационного дерева JSON по указанному JSON-пути. Чтобы увидеть весь конфигурационный файл JSON, используйте функцию biha.config_json.
Например:
biha_db=# select biha.get_option('$.unit.children.[0].children.[1].biha_listen_addresses.[0].address'); get_option ------------ "node-3" (1 row)biha.set_config_send_period (#idinteger,config_send_periodinteger) →booleanЗадаёт значение параметра конфигурации config_send_period.
26.4.2.3. Мониторинг кластера #
biha.error_details () →#setof recordВозвращает описание причины, по которой узел перешёл в состояние
NODE_ERROR. Возвращаемая запись содержит тип ошибки, подробную информацию о ней, место возникновения с указаниемbegin_lsn,end_lsnи идентификаторов текущей и следующей линии времени, а такжеreplay_lsn.Например:
biha_db=# \x biha_db=# SELECT * FROM biha.error_details(); -[ RECORD 1 ]--+------------------------------------------------------------------------------------- │ type | TIMELINE_ERROR │ details | Timeline divergence detected: current timeline ended before replayLSN, rewind needed │ next_tli | 3 │ next_begin_lsn | │ next_end_lsn | │ cur_tli | 2 │ cur_begin_lsn | 0/17F53A0 │ cur_end_lsn | 0/3455FC8 │ replay_lsn | 0/34593B8
biha.monitoring () →#setof recordОтображает таблицу, которая содержит данные мониторинга текущего статуса узлов кластера. Таблица содержит следующие столбцы:
id: уникальный идентификатор узла.time: время получения данных мониторинга.biha_state: текущее состояние узла. За подробной информацией о возможных состояниях обратитесь к biha.status_v.pg_state: текущее состояние Postgres Pro. Возможные значения:Prestartup,Startup,Recovery,Recovery_Pause,Promoting,Promoted.online: показывает, в сети ли узел.startup_progress: показывает прогресс запуска в процентах, когда значениеpg_state—Startup.
Например:
biha_db=# select * from biha.monitoring(); id | time | biha_state | pg_state | online | startup_progress ----+------------------------+----------------+----------+--------+----------------- 3 | 2025-09-02 13:49:57+03 | LEADER_RW | Promoted | t | 1 | 2025-09-02 13:49:57+03 | CSTATE_FORMING | Startup | t | 81 2 | 2025-09-02 13:49:57+03 | FOLLOWER | Recovery | t | (3 rows)
biha.nodes () →#setof recordВыводит состояние транспортного канала BiHA текущего узла по отношению к другим узлам и определяет представление
biha.nodes_v, подробно описанное в biha.nodes_v.Функция выводит таблицу со следующими столбцами:
id: идентификатор узла.host: хост узла.port: порт узла.state: состояние подключения узла. Столбец может содержать одно из следующих значений:ACTIVE: есть активные клиентские подключения к узлу. В этом состоянии выполняются операции на чтение и запись.CONNECTING: попытка установить клиентское соединение с узлом.IDLE: узел находится в состоянии пассивного ожидания.INIT: инициализация клиентского соединения.SSLCONNECT: попытка установить защищённое соединение. Это состояние отображается только при включённом SSL.SSLACCEPT: попытка принять защищённое соединение. Это состояние отображается только при включённом SSL.
conn_start: время начала подключения.conn_count: количество подключений к узлу с момента запуска кластера.
Например:
biha_db=# SELECT * FROM biha.nodes(); id | host | port | state | conn_start | conn_count ----+-----------+-------+--------+------------------------+------------ 1 | localhost | 10001 | ACTIVE | 2023-07-05 17:17:17+07 | 1 2 | localhost | 10002 | | | 5 | localhost | 10005 | ACTIVE | 2023-07-05 17:17:17+07 | 1 3 | localhost | 10003 | ACTIVE | 2023-07-05 17:17:17+07 | 1 4 | localhost | 10004 | ACTIVE | 2023-07-05 17:17:17+07 | 1 (4 rows)
biha.status () →#setof recordОпределяет представление
biha.status_v, подробно описанное в biha.status_v. Использовать эту функцию не рекомендуется , так как она предоставляет необработанные данные для представления.
26.4.2.4. Репликация #
Следующие функции используются для настройки репликации и управления ею.
biha.add_to_ssn (#idinteger) →booleanПримечание
Эту функцию можно вызвать, только если включена кворумная синхронная репликация.
Добавляет указанный узел в список синхронных резервных параметра synchronous_standby_names.names. Необходимо указывать узел, имени которого ещё нет в списке.
Например:
biha_db=# SELECT biha.add_to_ssn(3); add_to_ssn ------------- t (1 row)
biha.get_ssn () →#varcharОтображает текущее значение параметра synchronous_standby_names.
Например:
biha_db=# SELECT biha.get_ssn(); get_ssn --------------------------------------------- ANY 1 (biha_node_1,biha_node_2,biha_node_3) (1 row)
biha.set_deny_wal_sources (#idinteger,запрещённые_идентификаторыinteger[]) →booleanЗадаёт значение параметра конфигурации deny_wal_sources для указанного узла или сбрасывает существующее значение.
Массив
запрещённых_идентификаторовдолжен соответствовать следующим требованиям:Указанные узлы должны быть физическими и входить в кластер.
Идентификаторы должны соответствовать формату идентификаторов узлов и не должны повторяться.
Размер массива не должен превышать максимальное допустимое число узлов в кластере.
Например, чтобы запретить репликацию узла с идентификатором
3с узла с идентификатором1, выполните:biha_db=# SELECT biha.set_deny_wal_sources(3, ARRAY[1]); set_deny_wal_sources -------------- t (1 row)
Чтобы сбросить значение параметра и установить пустое значение, вызовите функцию с пустым массивом.
biha.set_max_replicas (#idinteger,max_replicas_numinteger) →booleanЗадаёт значение параметра конфигурации max_replicas.
Например, для узла с идентификатором
1настройте максимум3реплики:biha_db=# SELECT biha.set_max_replicas(1, 3); set_max_replicas ------------------ t (1 row)
biha.set_pref_roles (#идентификатор_узлаinteger,значениеtext) →booleanЗадаёт значение параметра конфигурации repl_pref_roles.
Например:
biha_db=# SELECT biha.set_pref_roles(1, 'LFR'); set_pref_roles ---------------- t (1 row)
biha.set_priority (#идентификатор_узлаinteger,значениеinteger) →booleanЗадаёт значение параметра конфигурации priority.
Например:
biha_db=# SELECT biha.set_priority(1, 10); set_priority -------------- t (1 row)
biha.remove_from_ssn (#idinteger) →booleanПримечание
Эту функцию можно вызвать, только если включена кворумная синхронная репликация.
Удаляет указанный узел из списка синхронных резервных узлов параметра synchronous_standby_names.names. Необходимо указать узел, имя которого уже есть в списке.
Например:
biha_db=# SELECT biha.remove_from_ssn(3); remove_from_ssn ------------- t (1 row)
biha.set_ssn (#VARIADIC idsinteger[]) →booleanПримечание
Эту функцию можно вызвать, только если включена кворумная синхронная репликация.
Задаёт значение параметра конфигурации synchronous_standby_names.names.
Например:
biha_db=# SELECT biha.set_ssn(1, 2, 3); set_ssn --------- t (1 row)
biha.set_sync_standbys (#sync_standbys_countinteger) →booleanЗадаёт значение параметра конфигурации synchronous_standby_names.count.
Важно
Используйте эту функцию с осторожностью, так как изменение количества синхронных резервных узлов может повлиять на работу системы приоритетов или вызвать зависание клиентских приложений при запросе данных с отстающего узла.
Например:
biha_db=# SELECT biha.set_sync_standbys(1); set_sync_standbys ------------------- t (1 row)
biha.set_sync_standbys_min (#sync_standbys_min_countinteger) →booleanПримечание
Эту функцию можно вызвать, только если включена кворумная синхронная репликация.
Задаёт значение параметра конфигурации synchronous_standby_names.min.
С помощью этой функции можно также управлять нестрогой кворумной синхронной репликацией. Чтобы отключить нестрогую кворумную синхронную репликацию, задайте значение
-1.Например:
biha_db=# SELECT biha.set_sync_standbys_min(1); set_sync_standbys_min ----------------------- f (1 row)
26.4.2.5. Выборы и кворум #
biha.set_minnodes (#idinteger,minnodesinteger) →booleanЗадаёт значение minnodes. Если
идентификатор_узла— физический узел, значениеbiha.minnodesзадаётся для сегмента, в котором узел расположен. Еслиидентификатор_узла— сегмент, значение задаётся для текущего сегмента и расположенных в нём узлов. Можно задать разные значения для каждого сегмента.Например:
biha_db=# SELECT biha.set_minnodes(3, 1); set_minnodes -------------------------- t (1 row)
biha.set_nquorum (#idinteger,nquoruminteger) →booleanЗадаёт значение nquorum. Если
идентификатор_узла— физический узел, значениеbiha.nquorumзадаётся для сегмента, в котором узел расположен. Еслиидентификатор_узла— сегмент, значение задаётся для текущего сегмента и расположенных в нём узлов. Для каждого сегмента можно задать разные значения.Например:
biha_db=# SELECT biha.set_nquorum(3, 3); set_nquorum -------------------------- t (1 row)
biha.set_nquorum_and_minnodes (#idinteger,nquoruminteger,minnodesinteger) →booleanЗадаёт значения параметров nquorum и minnodes. Если
node_id— физический узел, значенияnquorumиminnodesзадаются для сегмента, в котором узел расположен. Еслиnode_id— сегмент, значения задаются для текущего сегмента и расположенных в нём узлов. Для каждого сегмента можно задать разные значения.Например:
biha_db=# SELECT biha.set_nquorum_and_minnodes(3, 3, 1); set_nquorum_and_minnodes -------------------------- t (1 row)
biha.set_can_be_leader (#idinteger,can_be_leaderboolean) →booleanЗадаёт значение параметра конфигурации can_be_leader.
Например, чтобы разрешить узлу с идентификатором
4стать кандидатом на роль лидера, выполните:biha_db=# SELECT biha.set_can_be_leader(4,true); set_can_be_leader -------------- t (1 row)
biha.set_can_vote (#idinteger,can_voteboolean) →booleanЗадаёт значение параметра конфигурации can_vote.
Например, чтобы разрешить узлу с идентификатором
4голосовать, выполните:biha_db=# SELECT biha.set_can_vote(4,true); set_can_vote -------------- t (1 row)
26.4.2.6. Настройка сети #
biha.config_network () →#setof recordВыводит текущие значения сетевых параметров конфигурации. В выводе значение biha_listen_addresses отображается для других сетевых параметров конфигурации, если их значения не были заданы.
Например:
biha_db=# select * from biha.config_network(); id | biha_listen_addresses | biha_hosts | biha_port | replication_hosts | sql_hosts | port ----+-----------------------+------------+-----------+-------------------+-----------+------ 1 | biha-db-1 | biha-db-1 | 5433 | biha-db-1 | biha-db-1 | 5432 2 | biha-db-2 | biha-db-2 | 5433 | biha-db-2 | biha-db-2 | 5432 3 | biha-db-3 | biha-db-3 | 5433 | biha-db-3 | biha-db-3 | 5432 4 | biha-db-4 | biha-db-4 | 5433 | biha-db-4 | biha-db-4 | 5432 5 | biha-db-5 | biha-db-5 | 5433 | biha-db-5 | biha-db-5 | 5432 (5 rows)biha.set_biha_hosts (#idinteger,VARIADIC biha_hoststext[]) →booleanЗадаёт значение параметра конфигурации biha_hosts.
Например:
biha_db=# select biha.set_biha_hosts(1, 'biha-1:8080', 'biha-p', 'biha-2222:3333'); set_biha_hosts ---------------- t (1 row)
biha.set_sql_hosts (#idinteger,VARIADIC sql_hoststext[]) →booleanЗадаёт значение параметра конфигурации sql_hosts.
Например:
biha_db=# select biha.set_sql_hosts(1, 'bha-1:8080', 'bha-p', 'bha-2222:3333'); set_sql_hosts ---------------- t (1 row)
biha.set_replication_hosts (#idinteger,VARIADIC replication_hoststext[]) →booleanЗадаёт значение параметра конфигурации replication_hosts.
Например:
biha_db=# select biha.set_replication_hosts(1, 'bha-1:8080', 'bha-p', 'bha-2222:3333'); set_replication_hosts ----------------------- t (1 row)
26.4.2.7. Настройка безопасности #
biha.set_ssl_certificate (#text) →booleanЗадаёт значение параметра конфигурации ssl_certificate
Например:
biha_db=# SELECT biha.set_ssl_certificate('/tmp/install/share/extension/biha_pub_cert.pem'); WARNING: [BiHA] this parameter takes effect after node restart set_ssl_certificate --------------------- t (1 row)biha.set_ssl_mode (#text) →booleanЗадаёт значение параметра конфигурации ssl_mode.
Например:
biha_db=# SELECT biha.set_ssl_mode('verify-full'); WARNING: [BiHA] this parameter takes effect after node restart set_ssl_mode -------------- t (1 row)biha.set_ssl_private_key (#text) →booleanЗадаёт значение параметра конфигурации ssl_private_key.
Например:
biha_db=# SELECT biha.set_ssl_private_key('/tmp/install/share/extension/biha_priv_key.pem'); WARNING: [BiHA] this parameter takes effect after node restart set_ssl_private_key --------------------- t (1 row)biha.set_user_cert (#text) →booleanЗадаёт значение параметра конфигурации user_biha_cert.
Например:
biha_db=# SELECT biha.set_user_cert('/tmp/install/share/extension/biha_pub_cert.pem'); WARNING: [BiHA] this parameter takes effect after node restart set_user_cert --------------- t (1 row)biha.set_user_key (#text) →booleanЗадаёт значение параметра конфигурации user_biha_key.
Например:
biha_db=# SELECT biha.set_user_key('/tmp/install/share/extension/biha_priv_key.pem'); WARNING: [BiHA] this parameter takes effect after node restart set_user_key -------------- t (1 row)biha.set_use_ssl (#boolean) →booleanЗадаёт значение параметра конфигурации use_ssl.
Например:
biha_db=# SELECT biha.set_use_ssl(true) WARNING: [BiHA] this parameter takes effect after node restart set_use_ssl ------------- t (1 row)
26.4.2.8. Управление функциями-обработчиками #
biha.set_callbacks_timeout (#идентификатор_узлаinteger,значение_тайм_аутаinteger) →booleanЗадаёт значение параметра конфигурации callbacks_timeout.
biha.register_callback (#eventtext,functiontext,база_данныхtext,executortext,приоритетinteger) →integerДобавляет новый обработчик и возвращает его уникальный идентификатор. Функцию можно вызвать только на лидере в состоянии
LEADER_RW. Новый обработчик будет реплицирован на последователей.Примечание
Со стороны biha нет проверки наличия функции
funcв базе данныхdatabase. Если указанная функция не существует, исполнение обработчика завершится ошибкой.Пример использования
biha.register_callbackсм. в Регистрация функций-обработчиков.Таблица 26.3. Определения переменных
Имя Тип Описание eventtext Событие в BiHA-кластере, которое запускает функцию-обработчик. Подробнее о событиях и соответствующих типах функций-обработчиков читайте в Типы обработчиков. functiontext Название SQL-функции, которую расширение biha исполняет при наступлении события event. Функция должна находиться в базе данныхdatabase, иначе она не будет исполнена.база_данныхtext База данных, в которой исполняется функция func.executortext Пользователь, от имени которого исполняется функция
func. Это необязательный параметр. Значение по умолчанию —biha_callbacks_user.приоритетinteger Чем ниже значение, тем раньше исполнится обработчик. Это необязательный параметр. Значение по умолчанию — 0.biha.unregister_callback(#callback_id)Удаляет обработчик. Функцию можно вызвать только на лидере в состоянии
LEADER_RW. Пример использования функцииbiha.unregister_callbackсм. в разделе Отмена регистрации функции-обработчика.
26.4.2.9. Прочие функции #
biha.get_magic_string() →#stringГенерирует «магическую» строку для узла кластера. Например:
biha_db=# SELECT biha.get_magic_string(); get_magic_string ---------------------------------------------------------------------- dmVyc2lvbj0xIGhvc3Q9bG9jYWxob3N0IHBvcnQ9NjU0MzIgYmloYS1wb3J0PTEwMDAx (1 row)biha.set_asyncaction_timeout (#idinteger,значение_тайм_аутаinteger) →booleanЗадаёт значение параметра конфигурации asyncaction_timeout.
Например:
biha_db=# SELECT biha.set_asyncaction_timeout(1, 50000); set_asyncaction_timeout ------------------------- t (1 row)
biha.set_flw_ro (#idinteger,available_for_read_onlyboolean) →booleanЗадаёт значение параметра конфигурации flw_ro.
Например:
biha_db=# SELECT biha.set_flw_ro(1, true); set_flw_ro ------------ t (1 row)
biha.set_manage_slots_xmin (#idinteger,manage_slots_xminboolean) →booleanЗадаёт значение параметра конфигурации manage_slots_xmin.
biha.service_mode (#enable_service_modeboolean,forceboolean) →booleanВключает сервисный режим в BiHA-кластере. Эту функцию можно вызвать только на лидере. Функция принимает следующие параметры:
enable: если задано значениеtrue, сервисный режим включён. Если задано значениеfalse, сервисный режим отключён. Значение по умолчанию —false.force: если задано значениеtrue, позволяет отключить сервисный режим, игнорируя ошибки. Если значение не задано илиfalse, сервисный режим нельзя отключить до разрешения всех ошибок. Значение по умолчанию —false.
biha.set_heartbeat_max_lost (#integer) →booleanЗадаёт значение параметра конфигурации heartbeat_max_lost.
Например:
biha_db=# SELECT biha.set_heartbeat_max_lost(7); set_heartbeat_max_lost ------------- t (1 row)
biha.set_heartbeat_send_period (#integer) →booleanЗадаёт значение параметра heartbeat_send_period в миллисекундах.
Например:
biha_db=# SELECT biha.set_heartbeat_send_period(2000); set_heartbeat_send_period ------------- t (1 row)
biha.set_no_wal_on_follower (#integer) →booleanЗадаёт значение параметра конфигурации no_wal_on_follower.
Например:
biha_db=# SELECT biha.set_no_wal_on_follower(10000); set_no_wal_on_follower ------------------------ t (1 row)
biha.set_watchdog_timeout (#idinteger,значение_тайм_аутаinteger) →booleanЗадаёт значение параметра конфигурации watchdog_timeout.
Например:
biha_db=# SELECT biha.set_watchdog_timeout(1, 10); WARNING: [BiHA] this parameter takes effect after node restart set_watchdog_timeout ---------------------- t (1 row)
biha.reset_node_error () →#booleanСбрасывает состояние
NODE_ERRORна узле. Используйте эту функцию после того, как устранена причина перехода узла в состояниеNODE_ERROR. За подробной информацией обратитесь к разделу Восстановление узла из состояния NODE_ERROR.
26.4.3. Представления #
Чтобы обращаться к перечисленным ниже представлениям, необходимо подключиться к базе данных biha_db.
26.4.3.1. biha.config_v #
В этом представлении выводятся наиболее критичные параметры, возвращаемые функцией biha.config.
Например:
biha_db=# select * from biha.config_v;
id | unit_type | name | parent_id | mode | nquorum | minnodes | heartbeat_send_period | heartbeat_max_lost
------+-----------+----------------+-----------+---------+---------+----------+-----------------------+--------------------
1 | NODE | biha_node_1 | 111 | regular | 3 | 1 | 1000 | 10
3 | NODE | biha_node_3 | 111 | regular | 3 | 1 | 1000 | 10
4 | NODE | biha_node_4 | 111 | regular | 3 | 1 | 1000 | 10
111 | SEGMENT | biha_node_111 | 1111 | regular | 1 | 1 | 1000 | 10
1111 | SEGMENT | biha_node_1111 | | regular | 1 | 1 | 1000 | 10
(5 rows)Таблица 26.4. Представление biha.config_v
| Имя столбца | Описание |
|---|---|
id | Идентификатор узла (integer). |
unit_type | Тип узла. Возможные значения: NODE, SEGMENT. |
name | Имя узла (text). |
parent_id | Уникальный идентификатор узла, который является родительским для текущего (integer). |
mode | Текущее значение mode (text) |
nquorum | Текущее значение nquorum (integer). |
minnodes | Текущее значение minnodes (integer). |
heartbeat_send_period | Текущее значение heartbeat_send_period (integer). |
heartbeat_max_lost | Текущее значение heartbeat_max_lost (integer). |
26.4.3.2. biha.nodes_v #
В этом представлении показывается состояние подключения узлов в кластере. Для узла, на котором выполняется запрос для представления, следующие столбцы содержат NULL: state, since_conn_start, conn_count.
Например:
biha_db=# SELECT * FROM biha.nodes_v; id | host | port | state | since_conn_start | conn_count ----+-----------+-------+--------+------------------+------------ 1 | localhost | 10001 | ACTIVE | 00:02:28.42069 | 1 2 | localhost | 10002 | | | 3 | localhost | 10003 | ACTIVE | 00:02:23.42069 | 1 4 | localhost | 10004 | ACTIVE | 00:02:23.42069 | 1 5 | localhost | 10005 | ACTIVE | 00:02:23.42069 | 1 (4 rows)
Таблица 26.5. Представление biha.nodes_v
| Имя столбца | Описание |
|---|---|
id | Идентификатор узла. |
host | Адрес узла. |
port | Порт узла. |
state | Состояние соединения узла. В этом столбце может отображаться одно из следующих значений:
|
since_conn_start | Время, прошедшее с момента подключения узла к сети. |
conn_count | Сколько раз узел подключался к сети с момента запуска кластера. |
26.4.3.3. biha.status_v #
В этом представлении показывается состояние узлов в кластере.
Например:
biha_db=# SELECT * FROM biha.status_v; id | leader_id | term | online | state | last_known_state | since_last_hb ----+-----------+------+--------+-----------+------------------+----------------- 1 | 1 | 4 | t | LEADER_RW | LEADER_RW | 2 | 1 | 4 | t | FOLLOWER | FOLLOWER | 00:00:01.931472 3 | 1 | 4 | f | UNKNOWN | FOLLOWER | 00:00:18.931472 4 | 1 | 4 | t | FOLLOWER | FOLLOWER | 00:00:01.931472 5 | 1 | 4 | t | FOLLOWER | FOLLOWER | 00:00:01.931472 (5 rows)
Таблица 26.6. Представление biha.status_v
| Имя столбца | Описание |
|---|---|
id | Идентификатор узла (integer). |
leader_id | Идентификатор узла-лидера (integer). |
term | Поколение узла (integer). Используется при голосовании на выборах нового узла-лидера. |
online | Показывает, подключён ли узел к сети (boolean: t или f). |
state | Состояние узла (
|
last_known_state | Последнее известное состояние узла (text). |
since_last_hb | Время, прошедшее с момента получения последнего сообщения о контроле состояния (interval). |
26.4.3.4. biha.super_status_v #
Расширенная версия представления biha.status_v, которая дополнительно отображает данные для кластера GDBiHA.
Представление biha.super_status_v содержит следующие дополнительные столбцы:
name: имя узла (text).unit_type: тип юнита. Возможные значения:NODE,SEGMENT.parent_id: уникальный идентификатор узла, который является родительским для текущего узла (integer).segment_name: имя сегмента, к которому принадлежит узел (text).