Перейти к основному содержимому

patronictl

примечание

Эта страница переведена при помощи нейросети GigaChat.

Patroni имеет интерфейс командной строки с именем patronictl, который в основном используется для взаимодействия с REST API Patroni и с DCS. Он предназначен для упрощения выполнения операций в кластере и может легко использоваться как людьми, так и скриптами.

Конфигурация

patronictl использует 3 раздела конфигурации:

  • ctl: как аутентифицироваться против REST API Patroni и как проверять подлинность сервера. Подробнее смотрите настройки ctl;
  • restapi: как аутентифицироваться против REST API Patroni и как проверять подлинность сервера. Используется только если конфигурации ctl недостаточно. patronictl в основном интересуется разделом restapi.authentication (в случае отсутствия ctl.authentication) и настройкой restapi.cafile (в случае отсутствия ctl.cacert). Подробнее смотрите настройки REST API;
  • DCS (например, etcd): как связаться и аутентифицироваться против DCS, используемого Patroni.

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

Если выбрано использование переменных окружения, это прямой подход. Patronictl прочитает переменные окружения и использует их значения.

Если выбрано использование файла конфигурации, доступны разные способы сообщить patronictl о файле, который будет использоваться. По умолчанию patronictl попытается загрузить файл конфигурации с именем patronictl.yaml, который, как ожидается, будет найден в одном из следующих путей, в зависимости от системы:

  • Mac OS X: ~/Library/Application Support/patroni
  • Mac OS X (POSIX): ~/.patroni
  • Unix: ~/.config/patroni
  • Unix (POSIX): ~/.patroni
  • Windows (roaming): C:\Users\<user>\AppData\Roaming\patroni
  • Windows (not roaming): C:\Users\<user>\AppData\Local\patroni

Переопределить это поведение можно либо:

  • Установив переменную окружения PATRONICTL_CONFIG_FILE с путем к пользовательскому файлу конфигурации;
  • Используя аргумент командной строки -c / --config-file утилиты patronictl с путем к пользовательскому файлу конфигурации.
примечание

Если patronictl запускается на том же хосте, где запущен демон patroni, можно просто использовать тот же файл конфигурации, если он содержит все разделы конфигурации, требуемые patronictl.

Использование

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

Прежде чем переходить к каждой из подкоманд patronictl, имейте в виду, что сам patronictl имеет следующие аргументы командной строки:

АргументОписание
-c / --config-fileКак объяснялось ранее, используется для указания пути к файлу конфигурации для patronictl.
-d / --dcs-url / --dcsПредоставить строку подключения к DCS, используемому Patroni. Этот аргумент можно использовать либо для переопределения настроек DCS и namespace из конфигурации patronictl, либо для их определения, если они отсутствуют в конфигурации. Значение должно быть в формате DCS://HOST:PORT/NAMESPACE, например etcd3://localhost:2379/service для подключения к etcd v3, работающему на localhost, с кластером Patroni, хранящимся в пространстве имен service. Любая часть, отсутствующая в значении аргумента, будет заменена значением, присутствующим в конфигурации, или значением по умолчанию.
-k / --insecureФлаг для обхода проверки SSL-сертификата сервера REST API.

Это синопсис для запуска команды из patronictl:

patronictl [ { -c | --config-file } CONFIG_FILE ]
[ { -d | --dcs-url | --dcs } DCS_URL ]
[ { -k | --insecure } ]
SUBCOMMAND
примечание

Это синтаксис для синопсиса:

  • Опции в квадратных скобках необязательны;
  • Опции в фигурных скобках представляют операцию «выбрать одно из множества»;
  • Опции с [, ... ] могут быть указаны несколько раз;
  • Элементы, написанные заглавными буквами, представляют литерал, которому должно быть присвоено значение.

Данный синтаксис используется при описании подкоманд patronictl в следующих подразделах. Также при описании подкоманд в следующих подразделах синопсис команд следует рассматривать как замену для SUBCOMMAND в приведенном выше синопсисе.

В следующих подразделах можно найти описание каждой команды, реализованной в patronictl. В качестве примера используются файлы конфигурации, присутствующие в репозитории GitHub Patroni (файлы postgres0.yml, postgres1.yml и postgres2.yml).

patronictl dsn

Синопсис

dsn
[ CLUSTER_NAME ]
[ { { -r | --role } { leader | primary | standby-leader | replica | standby | any } | { -m | --member } MEMBER_NAME } ]
[ --group CITUS_GROUP ]

Описание

patronictl dsn получает строку подключения для одного участника кластера Patroni.

Если несколько участников соответствуют параметрам этой команды, один из них будет выбран с приоритетом первичного узла.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni. Если не задано, patronictl попытается получить его из конфигурации scope, если она существует.
-r / --roleВыбрать участника с заданной ролью. Роль может быть одной из: leader (лидер обычного или standby-кластера Patroni), primary (лидер обычного кластера Patroni), standby-leader (лидер standby-кластера Patroni), replica (реплика кластера Patroni), standby (то же, что replica), any (любая роль; то же, что опустить этот параметр).
-m / --memberВыбрать участника кластера с заданным именем. MEMBER_NAME — имя участника.
--groupВыбрать участника, входящего в заданную группу Citus. CITUS_GROUP — идентификатор группы Citus.

Примеры

Получить DSN первичного узла:

$ patronictl -c postgres0.yml dsn batman -r primary
host=127.0.0.1 port=5432

Получить DSN узла с именем postgresql1:

$ patronictl -c postgres0.yml dsn batman --member postgresql1
host=127.0.0.1 port=5433

patronictl edit-config

Синопсис

edit-config
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
[ { -q | --quiet } ]
[ { -s | --set } CONFIG="VALUE" [, ... ] ]
[ { -p | --pg } PG_CONFIG="PG_VALUE" [, ... ] ]
[ { --apply | --replace } CONFIG_FILE ]
[ --force ]

Описание

patronictl edit-config изменяет динамическую конфигурацию кластера и обновляет DCS этими изменениями.

примечание

При вызове через TTY команда пытается показать diff динамической конфигурации через пейджер. По умолчанию она пытается использовать либо less, либо more. Если требуется другой пейджер, установите переменную окружения PAGER с желаемым значением.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni. Если не задано, patronictl попытается получить его из конфигурации scope, если она существует.
--groupИзменить динамическую конфигурацию заданной группы Citus. Если не задано, patronictl попытается получить его из конфигурации citus.group, если она существует. CITUS_GROUP — идентификатор группы Citus.
-q / --quietФлаг для пропуска показа diff конфигурации.
-s / --setУстановить заданную опцию динамической конфигурации с заданным значением. CONFIG — имя пути динамической конфигурации в дереве YAML, с уровнями, соединенными через .. VALUE — значение для CONFIG. Если оно равно null, то CONFIG будет удален из динамической конфигурации.
-p / --pgУстановить заданную опцию динамической конфигурации Postgres с заданным значением. По сути, это сокращение для -s / --set с префиксом postgresql.parameters. для CONFIG. PG_CONFIG — имя конфигурации Postgres, которую нужно задать. PG_VALUE — значение для PG_CONFIG. Если оно равно null, то PG_CONFIG будет удален из динамической конфигурации.
--applyПрименить динамическую конфигурацию из заданного файла. Аналогично указанию нескольких опций -s / --set, по одной для каждой конфигурации из CONFIG_FILE. CONFIG_FILE — путь к файлу, содержащему динамическую конфигурацию для применения, в формате YAML. Используйте -, если хотите читать из stdin.
--replaceЗаменить динамическую конфигурацию в DCS на динамическую конфигурацию, указанную в заданном файле. CONFIG_FILE — путь к файлу, содержащему новую динамическую конфигурацию для вступления в силу, в формате YAML. Используйте -, если хотите читать из stdin.
--forceФлаг для пропуска запросов подтверждения при изменении динамической конфигурации. Полезно для скриптов.

Примеры

Изменить GUC Postgres max_connections:

patronictl -c postgres0.yml edit-config batman --pg max_connections="150" --force
---
+++
@@ -1,6 +1,8 @@
loop_wait: 10
maximum_lag_on_failover: 1048576
postgresql:
+ parameters:
+ max_connections: 150
pg_hba:
- host replication replicator 127.0.0.1/32 md5
- host all all 0.0.0.0/0 md5

Configuration changed

Изменить настройки loop_wait и ttl:

patronictl -c postgres0.yml edit-config batman --set loop_wait="15" --set ttl="45" --force
---
+++
@@ -1,4 +1,4 @@
-loop_wait: 10
+loop_wait: 15
maximum_lag_on_failover: 1048576
postgresql:
pg_hba:
@@ -6,4 +6,4 @@
- host all all 0.0.0.0/0 md5
use_pg_rewind: true
retry_timeout: 10
-ttl: 30
+ttl: 45

Configuration changed

Удалить настройку maximum_lag_on_failover из динамической конфигурации:

patronictl -c postgres0.yml edit-config batman --set maximum_lag_on_failover="null" --force
---
+++
@@ -1,5 +1,4 @@
loop_wait: 10
-maximum_lag_on_failover: 1048576
postgresql:
pg_hba:
- host replication replicator 127.0.0.1/32 md5

Configuration changed

patronictl failover

Синопсис

failover
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
--candidate CANDIDATE_NAME
[ --force ]

Описание

patronictl failover выполняет ручной failover в кластере.

Он предназначен для использования, когда кластер не работает исправно, например:

  • Нет лидера;

    или

  • Нет доступного синхронного standby в синхронном кластере.

Он также позволяет выполнить failover на асинхронный узел, если включен синхронный режим.

примечание

Ничто не мешает запустить patronictl failover в исправном кластере. Однако рекомендуется использовать patronictl switchover в таких случаях.

warning

Запуск failover может привести к потере данных в зависимости от того, насколько актуальна повышаемая реплика по сравнению с первичным узлом.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni. Если не задано, patronictl попытается получить его из конфигурации scope, если она существует.
--groupВыполнить failover в заданной группе Citus. CITUS_GROUP — идентификатор группы Citus.
--candidateУзел, который должен быть повышен при failover. CANDIDATE_NAME — имя узла для повышения.
--forceФлаг для пропуска запросов подтверждения при выполнении failover. Полезно для скриптов.

Примеры

Выполнить failover на узел postgresql2:

$ patronictl -c postgres0.yml failover batman --candidate postgresql2 --force
Current cluster topology
+ Cluster: batman (7277694203142172922) -+-----------+----+-------------+-----+------------+-----+
| Member | Host | Role | State | TL | Receive LSN | Lag | Replay LSN | Lag |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
| postgresql0 | 127.0.0.1:5432 | Leader | running | 3 | | | | |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming | 3 | 0/40004E8 | 0 | 0/40004E8 | 0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming | 3 | 0/40004E8 | 0 | 0/40004E8 | 0 |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
2023-09-12 11:52:27.50978 Successfully failed over to "postgresql2"
+ Cluster: batman (7277694203142172922) -+---------+----+-------------+---------+------------+---------+
| Member | Host | Role | State | TL | Receive LSN | Lag | Replay LSN | Lag |
+-------------+----------------+---------+---------+----+-------------+---------+------------+---------+
| postgresql0 | 127.0.0.1:5432 | Replica | stopped | | unknown | unknown | unknown | unknown |
| postgresql1 | 127.0.0.1:5433 | Replica | running | 3 | 0/4000188 | 0 | 0/4000188 | 0 |
| postgresql2 | 127.0.0.1:5434 | Leader | running | 3 | | | | |
+-------------+----------------+---------+---------+----+-------------+---------+------------+---------+

patronictl flush

Синопсис

flush
CLUSTER_NAME
[ MEMBER_NAME [, ... ] ]
{ restart | switchover }
[ --group CITUS_GROUP ]
[ { -r | --role } { leader | primary | standby-leader | replica | standby | any } ]
[ --force ]

Описание

patronictl flush отменяет запланированные события, если они есть.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni.
MEMBER_NAMEОтменить запланированные события для заданного(ых) участника(ов) Patroni. Можно указать несколько участников. Если участники не указаны, рассматриваются все. Примечание: используется только при отмене запланированных событий перезапуска.
restartОтменить запланированные события перезапуска.
switchoverОтменить запланированное событие переключения.
--groupОтменить запланированные события из заданной группы Citus. CITUS_GROUP — идентификатор группы Citus.
-r / --roleОтменить запланированные события для участников с заданной ролью (смотрите значения ролей выше). Примечание: используется только при отмене запланированных событий перезапуска.
--forceФлаг для пропуска запросов подтверждения при выполнении flush. Полезно для скриптов.

Примеры

Отменить запланированное событие переключения:

$ patronictl -c postgres0.yml flush batman switchover --force
Success: scheduled switchover deleted

Отменить запланированный перезапуск всех standby-узлов:

$ patronictl -c postgres0.yml flush batman restart -r replica --force
+ Cluster: batman (7277694203142172922) -+-----------+----+-------------+-----+------------+-----+---------------------------+
| Member | Host | Role | State | TL | Receive LSN | Lag | Replay LSN | Lag | Scheduled restart |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+---------------------------+
| postgresql0 | 127.0.0.1:5432 | Leader | running | 5 | | | | | 2025-03-23T18:00:00-03:00 |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming | 5 | 0/4000400 | 0 | 0/4000400 | 0 | 2025-03-23T18:00:00-03:00 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming | 5 | 0/4000400 | 0 | 0/4000400 | 0 | 2025-03-23T18:00:00-03:00 |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+---------------------------+
Success: flush scheduled restart for member postgresql1
Success: flush scheduled restart for member postgresql2

patronictl history

Синопсис

history
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
[ { -f | --format } { pretty | tsv | json | yaml } ]

Описание

patronictl history показывает историю событий failover и switchover из кластера, если они есть.

В вывод включается следующая информация:

ПолеОписание
TLTimeline Postgres, на котором произошло событие.
LSNLSN Postgres, на котором произошло событие.
ReasonПричина, полученная из файла .history Postgres.
TimestampВремя, когда произошло событие.
New LeaderУчастник Patroni, который был повышен во время события.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni. Если не задано, patronictl попытается получить его из конфигурации scope, если она существует.
--groupПоказать историю событий из заданной группы Citus. CITUS_GROUP — идентификатор группы Citus. Если не задано, patronictl попытается получить его из конфигурации citus.group, если она существует.
-f / --formatКак форматировать список событий в выводе. Формат может быть одним из: pretty (красивая таблица), tsv (табличные данные с разделителями \t), json (JSON), yaml (YAML). По умолчанию: pretty.
--forceФлаг для пропуска запросов подтверждения. Полезно для скриптов.

Примеры

Показать историю событий:

$ patronictl -c postgres0.yml history batman
+----+----------+------------------------------+----------------------------------+-------------+
| TL | LSN | Reason | Timestamp | New Leader |
+----+----------+------------------------------+----------------------------------+-------------+
| 1 | 24392648 | no recovery target specified | 2023-09-11T22:11:27.125527+00:00 | postgresql0 |
| 2 | 50331864 | no recovery target specified | 2023-09-12T11:34:03.148097+00:00 | postgresql0 |
| 3 | 83886704 | no recovery target specified | 2023-09-12T11:52:26.948134+00:00 | postgresql2 |
| 4 | 83887280 | no recovery target specified | 2023-09-12T11:53:09.620136+00:00 | postgresql0 |
+----+----------+------------------------------+----------------------------------+-------------+

patronictl list

Синопсис

list
[ CLUSTER_NAME [, ... ] ]
[ --group CITUS_GROUP ]
[ { -e | --extended } ]
[ { -t | --timestamp } ]
[ { -f | --format } { pretty | tsv | json | yaml } ]
[ { -W | { -w | --watch } TIME } ]

Описание

patronictl list показывает информацию о кластере Patroni и его участниках.

В вывод включается следующая информация:

ПолеОписание
ClusterИмя кластера Patroni.
MemberИмя участника Patroni.
HostХост, на котором расположен участник.
RoleТекущая роль участника: Leader, Standby Leader, Sync Standby, Replica.
StateТекущее состояние Postgres в участнике Patroni: running, streaming, in archive recovery, stopped, crashed и др.
TLТекущая timeline Postgres в участнике Patroni.
Receive LSNПоследняя позиция WAL, полученная и синхронизированная на диск потоковой репликацией участника.
Receive LagОтставание репликации между позицией Receive LSN участника и его upstream в МБ.
Replay LSNПоследняя позиция WAL, воспроизведенная во время восстановления участника.
Replay LagОтставание репликации между позицией Replay LSN участника и его upstream в МБ.

Дополнительная информация, которая может быть включена в вывод:

ПолеОписание
System identifierСистемный идентификатор Postgres. Показывается в заголовке таблицы, только в формате pretty.
GroupИдентификатор группы Citus. Показывается в заголовке таблицы, только для кластера Citus.
Pending restart* указывает, что узлу требуется перезапуск для применения конфигурации Postgres. Показывается как атрибут участника.
Scheduled restartВременная метка запланированного перезапуска. Показывается как атрибут участника.
TagsТеги, заданные для участника Patroni. Показывается как атрибут участника.
Scheduled switchoverВременная метка запланированного переключения. Показывается в футере таблицы, только в формате pretty.
Maintenance modeЕсли мониторинг кластера в настоящее время приостановлен. Показывается в футере таблицы, только в формате pretty.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni.
--groupПоказать информацию об участниках из заданной группы Citus.
-e / --extendedПоказать расширенную информацию. Принудительно показывать атрибуты Pending restart, Scheduled restart и Tags, даже если их значение пусто. Применяется только к форматам вывода pretty и tsv.
-t / --timestampПечатать временную метку перед выводом информации о кластере и его участниках.
-f / --formatФормат вывода: pretty, tsv, json, yaml. По умолчанию: pretty.
-WАвтоматически обновлять информацию каждые 2 секунды.
-w / --watchАвтоматически обновлять информацию с указанным интервалом. TIME — интервал между обновлениями в секундах.

Примеры

Показать информацию о кластере в формате pretty:

$ patronictl -c postgres0.yml list batman
+ Cluster: batman (7277694203142172922) -+-----------+----+-------------+-----+------------+-----+
| Member | Host | Role | State | TL | Receive LSN | Lag | Replay LSN | Lag |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
| postgresql0 | 127.0.0.1:5432 | Leader | running | 5 | | | | |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming | 5 | 0/40004E8 | 0 | 0/40004E8 | 0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming | 5 | 0/40004E8 | 0 | 0/40004E8 | 0 |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+

patronictl pause

Синопсис

pause
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
[ --wait ]

Описание

patronictl pause временно переводит кластер Patroni в режим обслуживания и отключает автоматический failover.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni.
--groupПриостановить заданную группу Citus.
--waitДождаться, пока все участники Patroni будут приостановлены, прежде чем вернуть управление вызывающему.

Примеры

Перевести кластер в режим обслуживания и дождаться приостановки всех узлов:

$ patronictl -c postgres0.yml pause batman --wait
'pause' request sent, waiting until it is recognized by all nodes
Success: cluster management is paused

patronictl query

Синопсис

query
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
[ { { -r | --role } { leader | primary | standby-leader | replica | standby | any } | { -m | --member } MEMBER_NAME } ]
[ { -d | --dbname } DBNAME ]
[ { -U | --username } USERNAME ]
[ --password ]
[ --format { pretty | tsv | json | yaml } ]
[ { { -f | --file } FILE_NAME | { -c | --command } SQL_COMMAND } ]
[ --delimiter ]
[ { -W | { -w | --watch } TIME } ]

Описание

patronictl query выполняет SQL-команду или скрипт против участника кластера Patroni.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni.
--groupВыполнить запрос к заданной группе Citus.
-r / --roleВыбрать участника с заданной ролью.
-m / --memberВыбрать участника с заданным именем.
-d / --dbnameБаза данных для подключения и выполнения запроса.
-U / --usernameПользователь для подключения к базе данных.
--passwordЗапросить пароль для подключающегося пользователя. Также можно создать файл ~/.pgpass или установить переменную окружения PGPASSWORD.
--formatФормат вывода запроса: pretty, tsv, json, yaml. По умолчанию: tsv.
-f / --fileИспользовать файл как источник команд для выполнения запросов.
-c / --commandВыполнить заданную SQL-команду в запросе.
--delimiterРазделитель при выводе информации в формате tsv, или \t, если опущен.
-WАвтоматически перезапускать запрос каждые 2 секунды.
-w / --watchАвтоматически перезапускать запрос с указанным интервалом.

Примеры

Выполнить SQL-команду как пользователь postgres с запросом пароля:

$ patronictl -c postgres0.yml query batman -U postgres --password -c "SELECT now()"
Password:
now
2023-09-12 18:10:53.228084+00:00

patronictl reinit

Синопсис

reinit
CLUSTER_NAME
[ MEMBER_NAME [, ... ] ]
[ --group CITUS_GROUP ]
[ --wait ]
[ --force ]
[ --from-leader ]

Описание

patronictl reinit перестраивает экземпляр Postgres standby, управляемый участником-репликой кластера Patroni.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni.
MEMBER_NAMEИмя участника-реплики, для которого будет перестроен экземпляр Postgres. Можно указать несколько участников.
--groupПерестроить участника-реплику заданной группы Citus.
--waitДождаться завершения реинициализации standby-узла(ов) Postgres.
--forceФлаг для пропуска запросов подтверждения при перестройке экземпляров Postgres standby.
--from-leaderФлаг для получения basebackup напрямую от лидера. Полезно для скриптов.

Примеры

Запросить перестройку всех участников-реплик кластера Patroni и немедленно вернуть управление:

$ patronictl -c postgres0.yml reinit batman postgresql1 postgresql2 --force
+ Cluster: batman (7277694203142172922) -+-----------+----+-------------+-----+------------+-----+
| Member | Host | Role | State | TL | Receive LSN | Lag | Replay LSN | Lag |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
| postgresql0 | 127.0.0.1:5432 | Leader | running | 5 | | | | |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming | 5 | 0/40004E8 | 0 | 0/40004E8 | 0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming | 5 | 0/40004E8 | 0 | 0/40004E8 | 0 |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
Success: reinitialize for member postgresql1
Success: reinitialize for member postgresql2

patronictl reload

Синопсис

reload
CLUSTER_NAME
[ MEMBER_NAME [, ... ] ]
[ --group CITUS_GROUP ]
[ { -r | --role } { leader | primary | standby-leader | replica | standby | any } ]
[ --force ]

Описание

patronictl reload запрашивает перезагрузку локальной конфигурации для одного или нескольких участников Patroni. Также запускает pg_ctl reload на управляемом экземпляре Postgres, даже если ничего не изменилось.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni.
MEMBER_NAMEЗапросить перезагрузку локальной конфигурации для заданного(ых) участника(ов) Patroni. Можно указать несколько участников. Если участники не указаны, рассматриваются все.
--groupЗапросить перезагрузку участников заданной группы Citus.
-r / --roleВыбрать участников с заданной ролью.
--forceФлаг для пропуска запросов подтверждения при запросе перезагрузки локальной конфигурации.

Примеры

Запросить перезагрузку локальной конфигурации всех участников кластера Patroni:

$ patronictl -c postgres0.yml reload batman --force
+ Cluster: batman (7277694203142172922) -+-----------+----+-------------+-----+------------+-----+
| Member | Host | Role | State | TL | Receive LSN | Lag | Replay LSN | Lag |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
| postgresql0 | 127.0.0.1:5432 | Leader | running | 5 | | | | |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming | 5 | 0/40004E8 | 0 | 0/40004E8 | 0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming | 5 | 0/40004E8 | 0 | 0/40004E8 | 0 |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
Reload request received for member postgresql0 and will be processed within 10 seconds
Reload request received for member postgresql1 and will be processed within 10 seconds
Reload request received for member postgresql2 and will be processed within 10 seconds

patronictl remove

Синопсис

remove
CLUSTER_NAME
[ --group CITUS_GROUP ]
[ { -f | --format } { pretty | tsv | json | yaml } ]

Описание

patronictl remove удаляет информацию о кластере из DCS. Это интерактивное действие.

warning

Эта операция уничтожит информацию о кластере Patroni из DCS.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni.
--groupУдалить информацию о кластере Patroni, связанную с заданной группой Citus.
-f / --formatФормат списка участников в выводе при запросе подтверждения: pretty, tsv, json, yaml. По умолчанию: pretty.

Примеры

Удалить информацию о кластере Patroni batman из DCS:

$ patronictl -c postgres0.yml remove batman
+ Cluster: batman (7277694203142172922) -+-----------+----+-------------+-----+------------+-----+
| Member | Host | Role | State | TL | Receive LSN | Lag | Replay LSN | Lag |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
| postgresql0 | 127.0.0.1:5432 | Leader | running | 5 | | | | |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming | 5 | 0/40004E8 | 0 | 0/40004E8 | 0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming | 5 | 0/40004E8 | 0 | 0/40004E8 | 0 |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
Please confirm the cluster name to remove: batman
You are about to remove all information in DCS for batman, please type: "Yes I am aware": Yes I am aware
This cluster currently is healthy. Please specify the leader name to continue: postgresql0

patronictl restart

Синопсис

restart
CLUSTER_NAME
[ MEMBER_NAME [, ...] ]
[ --group CITUS_GROUP ]
[ { -r | --role } { leader | primary | standby-leader | replica | standby | any } ]
[ --any ]
[ --pg-version PG_VERSION ]
[ --pending ]
[ --timeout TIMEOUT ]
[ --scheduled TIMESTAMP ]
[ --force ]

Описание

patronictl restart запрашивает перезапуск экземпляра Postgres, управляемого участником кластера Patroni. Перезапуск может быть выполнен немедленно или запланирован на более позднее время.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni.
--groupПерезапустить кластер Patroni, связанный с заданной группой Citus.
-r / --roleВыбрать участников с заданной ролью.
--anyПерезапустить один случайный узел среди тех, которые соответствуют заданным фильтрам.
--pg-versionВыбрать только участников, версия управляемого экземпляра Postgres которых старше заданной версии.
--pendingВыбрать только участников, помеченных как Pending restart.
--timeoutПрервать перезапуск, если он занимает больше указанного таймаута, и выполнить failover на реплику, если проблема на первичном узле.
--scheduledЗапланировать перезапуск на заданную временную метку.
--forceФлаг для пропуска запросов подтверждения при запросе операций перезапуска.

Примеры

Перезапустить все участники кластера немедленно:

$ patronictl -c postgres0.yml restart batman --force
+ Cluster: batman (7277694203142172922) -+-----------+----+-------------+-----+------------+-----+
| Member | Host | Role | State | TL | Receive LSN | Lag | Replay LSN | Lag |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
| postgresql0 | 127.0.0.1:5432 | Leader | running | 6 | | | | |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming | 6 | 0/40004E8 | 0 | 0/40004E8 | 0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming | 6 | 0/40004E8 | 0 | 0/40004E8 | 0 |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
Success: restart on member postgresql0
Success: restart on member postgresql1
Success: restart on member postgresql2

patronictl resume

Синопсис

resume
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
[ --wait ]

Описание

patronictl resume выводит кластер Patroni из режима обслуживания и повторно включает автоматический failover.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni.
--groupВозобновить заданную группу Citus.
--waitДождаться, пока все участники Patroni будут возобновлены, прежде чем вернуть управление вызывающему.

Примеры

Вывести кластер из режима обслуживания:

$ patronictl -c postgres0.yml resume batman --wait
'resume' request sent, waiting until it is recognized by all nodes
Success: cluster management is resumed

patronictl show-config

Синопсис

show-config
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]

Описание

patronictl show-config показывает динамическую конфигурацию кластера, которая хранится в DCS.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni.
--groupПоказать динамическую конфигурацию заданной группы Citus.

Примеры

Показать динамическую конфигурацию кластера batman:

$ patronictl -c postgres0.yml show-config batman
loop_wait: 10
postgresql:
parameters:
max_connections: 250
pg_hba:
- host replication replicator 127.0.0.1/32 md5
- host all all 0.0.0.0/0 md5
use_pg_rewind: true
retry_timeout: 10
ttl: 30

patronictl switchover

Синопсис

switchover
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
[ { --leader | --primary } LEADER_NAME ]
--candidate CANDIDATE_NAME
[ --force ]

Описание

patronictl switchover выполняет переключение в кластере. Предназначено для использования, когда кластер исправен: есть лидер, есть доступные синхронные standby в синхронном кластере.

примечание

Если кластер не работает исправно, может быть полезен patronictl failover.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni.
--groupВыполнить переключение в заданной группе Citus.
--leader / --primaryУказать, кто является лидером, который должен быть понижен во время переключения.
--candidateУзел, который должен быть повышен при переключении и принять роль первичного.
--scheduledЗапланировать переключение на заданную временную метку.
--forceФлаг для пропуска запросов подтверждения при выполнении переключения.

Примеры

Выполнить переключение на узел postgresql2:

$ patronictl -c postgres0.yml switchover batman --leader postgresql0 --candidate postgresql2 --force
Current cluster topology
+ Cluster: batman (7277694203142172922) -+-----------+----+-------------+-----+------------+-----+
| Member | Host | Role | State | TL | Receive LSN | Lag | Replay LSN | Lag |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
| postgresql0 | 127.0.0.1:5432 | Leader | running | 6 | | | | |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming | 6 | 0/40004E8 | 0 | 0/40004E8 | 0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming | 6 | 0/40004E8 | 0 | 0/40004E8 | 0 |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
2023-09-13 14:15:23.07497 Successfully switched over to "postgresql2"
+ Cluster: batman (7277694203142172922) -+---------+----+-------------+---------+------------+---------+
| Member | Host | Role | State | TL | Receive LSN | Lag | Replay LSN | Lag |
+-------------+----------------+---------+---------+----+-------------+---------+------------+---------+
| postgresql0 | 127.0.0.1:5432 | Replica | stopped | | unknown | unknown | unknown | unknown |
| postgresql1 | 127.0.0.1:5433 | Replica | running | 6 | 0/4000188 | 0 | 0/4000188 | 0 |
| postgresql2 | 127.0.0.1:5434 | Leader | running | 6 | | | | |
+-------------+----------------+---------+---------+----+-------------+---------+------------+---------+

patronictl topology

Синопсис

topology
[ CLUSTER_NAME [, ... ] ]
[ --group CITUS_GROUP ]
[ { -W | { -w | --watch } TIME } ]

Описание

patronictl topology показывает информацию о кластере Patroni и его участниках с использованием древовидного представления.

Вывод включает те же поля, что и patronictl list, но с древовидной структурой участников в терминах соединений репликации.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni.
--groupПоказать информацию об участниках из заданной группы Citus.
-WАвтоматически обновлять информацию каждые 2 секунды.
-w / --watchАвтоматически обновлять информацию с указанным интервалом.

Примеры

Показать топологию кластера batmanpostgresql1 и postgresql2 реплицируются с postgresql0:

$ patronictl -c postgres0.yml topology batman
+ Cluster: batman (7277694203142172922) ---+-----------+----+-------------+-----+------------+-----+
| Member | Host | Role | State | TL | Receive LSN | Lag | Replay LSN | Lag |
+---------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
| postgresql0 | 127.0.0.1:5432 | Leader | running | 8 | | | | |
| + postgresql1 | 127.0.0.1:5433 | Replica | streaming | 8 | 0/40004E8 | 0 | 0/40004E8 | 0 |
| + postgresql2 | 127.0.0.1:5434 | Replica | streaming | 8 | 0/40004E8 | 0 | 0/40004E8 | 0 |
+---------------+----------------+---------+-----------+----+-------------+-----+------------+-----+

patronictl version

Синопсис

version
[ CLUSTER_NAME [, ... ] ]
[ MEMBER_NAME [, ... ] ]
[ --group CITUS_GROUP ]

Описание

patronictl version получает версию приложения patronictl. Кроме того, может включать информацию о версиях кластеров Patroni и их участников.

Параметры

ПараметрОписание
CLUSTER_NAMEИмя кластера Patroni.
MEMBER_NAMEИмя участника кластера Patroni.
--groupУчитывать кластер Patroni с заданной группой Citus.

Примеры

Получить версию только patronictl:

$ patronictl -c postgres0.yml version
patronictl version 4.0.0

Получить версию patronictl и всех участников кластера batman:

$ patronictl -c postgres0.yml version batman
patronictl version 4.0.0

postgresql0: Patroni 4.0.0 PostgreSQL 16.4
postgresql1: Patroni 4.0.0 PostgreSQL 16.4
postgresql2: Patroni 4.0.0 PostgreSQL 16.4