patronictl patronictl の設定、構文、およびサブコマンドに関するコマンド リファレンス。
Patroni には patronictl
という名前のコマンドライン インターフェイスがあり、これは基本的に Patroni の REST API および DCS と対話するために使用されます。これは、クラスター内での操作の実行を容易にすることを目的としており、人間またはスクリプトで簡単に使用できます。
構成 patronictl
は、構成の 3 セクションを使用します。
ctl : Patroni REST API に対して認証する方法、およびサーバー ID を検証する方法。詳細については、ctl設定
を参照してください。restapi : Patroni REST API に対して認証する方法、およびサーバー ID を検証する方法。 ctl 構成が十分でない場合にのみ使用されます。 patronictl
は、主に restapi.authentication セクション (ctl.authentication が欠落している場合) と restapi.cafile 設定 (ctl.cacert が欠落している場合) に関係します。詳細については、REST API 設定
を参照してください。DCS (例: etcd ): Patroni によって使用される DCS に接続して認証する方法。 これらの構成オプションは、環境変数または構成ファイルから取得できます。 環境構成の設定
または 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 (ローミング): C:\Users\<user>\AppData\Roaming\patroni Windows (ローミングなし): C:\Users\<user>\AppData\Local\patroni 次のいずれかの方法でその動作をオーバーライドできます。
カスタム構成ファイルへのパスを使用して環境変数 PATRONICTL_CONFIG_FILE を設定します。 patronictl
の -c / --config-file コマンドライン引数をカスタム構成ファイルへのパスとともに使用します。注記
patroni デーモンが実行されているのと同じホストで patronictl
を実行している場合、patronictl
に必要なすべての構成セクションがファイルに含まれていれば、同じ構成ファイルを使用することができます。
使用法 patronictl
は、いくつかの便利な操作を公開します。このセクションでは、それぞれについて説明することを目的としています。
patronictl
の各サブコマンドに入る前に、patronictl
自体に次のコマンドライン引数があることに注意してください。
-c / --config-file 前に説明したように、patronictl
の構成ファイルへのパスを提供するために使用されます。
-d / --dcs-url / --dcs Patroni によって使用される DCS に接続文字列を提供します。
この引数は、patronictl
構成から DCS および namespace 設定をオーバーライドするか、構成に欠落している場合に定義するために使用できます。
値は DCS://HOST:PORT/NAMESPACE の形式である必要があります。 etcd3://localhost:2379/service は、service 名前空間に格納されている Patroni クラスターを使用して、localhost 上で実行されている etcd v3 に接続します。引数の値に欠落している部分は、構成に存在する値またはそのデフォルトに置き換えられます。
-k / --insecure REST API サーバー SSL 証明書の検証をバイパスするフラグ。
これは、patronictl
からコマンドを実行するための概要です。
patronictl [ { -c | --config-file } CONFIG_FILE ]
[ { -d | --dcs-url | --dcs } DCS_URL ]
[ { -k | --insecure } ]
SUBCOMMAND 注記
これは概要の構文です。
角括弧内のオプションはオプションです。 中括弧内のオプションは、「セットの 1 つを選択する」操作を表します。 Options と [, ... ] は複数回指定できます。 大文字で書かれたものは、値を与える必要があるリテラルを表します。 次のサブセクションで patronictl
サブコマンドを説明するときに、これと同じ構文を使用します。また、以下のサブセクションでサブコマンドを説明する場合、コマンドの概要は、上記の概要の SUBCOMMAND を置き換えるものと見なす必要があります。
次のサブセクションでは、patronictl
によって実装される各コマンドの説明を見つけることができます。例として、Patroni の GitHub リポジトリに存在する構成ファイル (ファイル postgres0.yml、postgres1.yml、および postgres2.yml) を使用します。
patronictl demote-cluster
あらすじ
demote-cluster
[ CLUSTER_NAME ]
[ --host HOST ]
[ --port PORT ]
[ --restore-command RESTORE_COMMAND ]
[ --primary-slot-name PRIMARY_SLOT_NAME ]
[ --force ]
説明 patronictl demote-cluster は、通常の Patroni クラスターを スタンバイクラスタ
に変換します。
このコマンドは、提供されたリモート プライマリー接続オプションから構築された standby_cluster セクションを使用して動的構成にパッチを適用し、リーダーがスタンバイ リーダーとして実行されるまで待機します。 --force が使用されていない限り、構成を変更する前に現在のクラスター トポロジを出力し、確認を求めます。
--host、--port、または --restore-command の少なくとも 1 つを指定する必要があります。
パラメータ CLUSTER_NAME: Patroni クラスターの名前。
指定しない場合、patronictl
は、scope 構成が存在する場合は、そこからそれを取得しようとします。
--host: リモート ノードのアドレス。
--port: リモート ノードのポート。
--restore-command: リモート プライマリーから WAL レコードを復元するコマンド。
--primary-slot-name: レプリケーションに使用するリモート ノード上のレプリケーション スロットの名前。
--force: クラスターを降格するときに確認プロンプトをスキップするフラグ。
スクリプトに便利です。
例 クラスターをリモートのプライマリー エンドポイントに従うスタンバイ クラスターに降格します。
$ patronictl -c postgres0.yml demote-cluster batman --host 192.0.2.10 --port 5432 --primary-slot-name batman --force
patronictl dsn
あらすじ
dsn
[ CLUSTER_NAME ]
[ { { -r | --role } { leader | primary | standby-leader | replica | standby | any } | { -m | --member } MEMBER_NAME } ]
[ --group CITUS_GROUP ]
説明 patronictl dsn は、Patroni クラスターの 1 つのメンバーの接続文字列を取得します。
複数のメンバーがこのコマンドのパラメーターに一致する場合、プライマリー ノードを優先してそのうちの 1 つが選択されます。
パラメータ CLUSTER_NAME: Patroni クラスターの名前。
指定しない場合、patronictl
は、scope 構成が存在する場合は、そこからそれを取得しようとします。
-r / --role 指定されたロールを持つメンバーを選択します。
役割は次のいずれかになります。
leader: 通常の Patroni クラスターまたはスタンバイ Patroni クラスターのリーダー。またはprimary: 通常の Patroni クラスターのリーダー。またはstandby-leader: スタンバイ Patroni クラスターのリーダー。またはreplica: Patroni クラスターのレプリカ。またはstandby: replica と同じ。またはany: 任意のロール。このパラメータを省略した場合と同じです。または-m / --member 指定された名前を持つクラスターのメンバーを選択します。
MEMBER_NAME はメンバーの名前です。
--group 指定された Citus グループに属するメンバーを選択します。
CITUS_GROUP は、Citus グループの ID です。
例 プライマリー ノードの DSN を取得します。
$ patronictl -c postgres0.yml dsn batman -r primary
host = 127.0.0.1 port = 5432 postgresql1 という名前のノードの DSN を取得します。
$ 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 を通じて呼び出される場合、コマンドはページャーを通じて動的構成の差分を表示しようとします。デフォルトでは、less または more のいずれかを使用しようとします。別のページャーが必要な場合は、PAGER 環境変数を目的のページャーに設定します。
パラメータ CLUSTER_NAME: Patroni クラスターの名前。
指定しない場合、patronictl
は、scope 構成が存在する場合は、そこからそれを取得しようとします。
--group 指定された Citus グループの動的構成を変更します。
指定しない場合、patronictl
は、citus.group 構成が存在する場合は、そこからそれを取得しようとします。
CITUS_GROUP は、Citus グループの ID です。
-q / --quiet 構成の差分の表示をスキップするフラグ。
-s / --set 指定された動的構成オプションを指定された値で設定します。
CONFIG は、 YAML ツリー内の動的構成パスの名前であり、レベルは . で結合されます。
VALUE は CONFIG の値です。 null の場合、CONFIG は動的構成から削除されます。
-p / --pg 指定された動的 Postgres 構成オプションを指定された値で設定します。
これは本質的に、--s / --set の短縮形であり、CONFIG に postgresql.parameters. が付加されています。
PG_CONFIG は、設定する Postgres 構成の名前です。
PG_VALUE は PG_CONFIG の値です。 null の場合、PG_CONFIG は動的構成から削除されます。
--apply 指定されたファイルから動的構成を適用します。
これは、CONFIG_FILE の構成ごとに 1 つずつ、複数の -s / --set オプションを指定するのと似ています。
CONFIG_FILE は、適用する動的構成を含むファイルへのパス (YAML 形式) です。 stdin から読み取りたい場合は、- を使用します。
--replace DCS の動的構成を、指定されたファイルで指定された動的構成に置き換えます。
CONFIG_FILE は、有効にする新しい動的構成を含むファイルへのパス (YAML 形式) です。 stdin から読み取りたい場合は、- を使用します。
--force 動的構成を変更するときに確認プロンプトをスキップするためのフラグ。
スクリプトに便利です。
例 max_connections Postgres GUC を変更します。
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 は、クラスター内で手動フェイルオーバーを実行します。
これは、クラスターが正常でない場合に使用するように設計されています。例:
リーダーはいません。または 同期クラスターでは使用できる同期スタンバイはありません。 同期モードが有効な場合は、非同期ノードにフェイルオーバーすることもできます。
注記
正常なクラスターで patronictl failover を実行することを妨げるものはありません。ただし、そのような場合には patronictl switchover を使用することをお勧めします。
警告
フェイルオーバーをトリガーすると、プロモートされたレプリカがプライマリーと比較してどの程度最新であるかによって、データ損失が発生する可能性があります。
パラメータ CLUSTER_NAME: Patroni クラスターの名前。
指定しない場合、patronictl
は、scope 構成が存在する場合は、そこからそれを取得しようとします。
--group 指定された Citus グループでフェイルオーバーを実行します。
CITUS_GROUP は、Citus グループの ID です。
--candidate フェイルオーバー時に昇格されるノード。
CANDIDATE_NAME は、昇格するノードの名前です。
--force フェイルオーバーの実行時に確認プロンプトをスキップするためのフラグ。
スクリプトに便利です。
例 ノード 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 グループの ID です。
-r / --role 指定されたロールを持つメンバーのスケジュールされたイベントを破棄します。
役割は次のいずれかになります。
leader: 通常の Patroni クラスターまたはスタンバイ Patroni クラスターのリーダー。またはprimary: 通常の Patroni クラスターのリーダー。またはstandby-leader: スタンバイ Patroni クラスターのリーダー。またはreplica: Patroni クラスターのレプリカ。またはstandby: replica と同じ。またはany: 任意のロール。このパラメータを省略した場合と同じです。注記
スケジュールされた再起動イベントを破棄する場合にのみ使用されます。
--force フラッシュの実行時に確認プロンプトをスキップするためのフラグ。
スクリプトに便利です。
例 スケジュールされたスイッチオーバー イベントを破棄します。
$ patronictl -c postgres0.yml flush batman switchover --force
Success: scheduled switchover deleted すべてのスタンバイ ノードのスケジュールされた再起動を破棄します。
$ 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 ノード postgresql0 および postgresql1 のスケジュールされた再起動を破棄します。
$ patronictl -c postgres0.yml flush batman postgresql0 postgresql1 restart --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 postgresql0
Success: flush scheduled restart for member postgresql1
patronictl history
あらすじ
history
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
[ { -f | --format } { pretty | tsv | json | yaml } ]
説明 patronictl history は、クラスターからのフェイルオーバーおよびスイッチオーバー イベントの履歴を表示します (存在する場合)。
出力には次の情報が含まれます。
TL Postgres イベントが発生したタイムライン。
LSN Postgres LSN イベントが発生した場所。
Reason Postgres .history ファイルから取得された理由。
Timestamp イベントが発生した時刻。
New Leader Patroni イベント中に昇格したメンバー。
パラメータ CLUSTER_NAME Patroni クラスターの名前。
指定しない場合、patronictl
は、scope 構成が存在する場合は、そこからそれを取得しようとします。
--group 指定された Citus グループからのイベントの履歴を表示します。
CITUS_GROUP は、Citus グループの ID です。
指定しない場合、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 |
+----+----------+------------------------------+----------------------------------+-------------+ イベントの履歴を YAML 形式で表示します。
$ patronictl -c postgres0.yml history batman -f yaml
- LSN: 24392648
New Leader: postgresql0
Reason: no recovery target specified
TL: 1
Timestamp: '2023-09-11T22:11:27.125527+00:00'
- LSN: 50331864
New Leader: postgresql0
Reason: no recovery target specified
TL: 2
Timestamp: '2023-09-12T11:34:03.148097+00:00'
- LSN: 83886704
New Leader: postgresql2
Reason: no recovery target specified
TL: 3
Timestamp: '2023-09-12T11:52:26.948134+00:00'
- LSN: 83887280
New Leader: postgresql0
Reason: no recovery target specified
TL: 4
Timestamp: '2023-09-12T11:53:09.620136+00:00'
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: 通常の Patroni クラスターの現在のリーダー。またはStandby Leader: Patroni スタンバイ クラスターの現在のリーダー。またはSync Standby: 同期モードが有効になっている Patroni クラスターの同期スタンバイ。またはReplica: Patroni クラスターの通常のスタンバイ。State Patroni メンバーの Postgres の現在の状態。
考えられる状態の例をいくつか示します。
running: Postgres が現在稼働しているかどうか。streaming: レプリカと Postgres が現在プライマリー ノードから WAL をストリーミングしている場合。in archive recovery: レプリカと Postgres が現在アーカイブから WAL をフェッチしているかどうか。stopped: Postgres がシャットダウンされていた場合。crashed: Postgres がクラッシュした場合。TL Patroni メンバー内の現在の Postgres タイムライン。
Receive LSN メンバーのストリーミング レプリケーションによって受信され、ディスクに同期された最後の先行書き込みログの場所 (pg_catalog.pg_last_(xlog|wal)_receive_(location|lsn)())。
Receive Lag メンバーの Receive LSN 位置と MB 内のその上流との間のレプリケーション ラグ。
Replay LSN メンバーのリカバリ中に再生された最後の先行書き込みログの場所 (pg_catalog.pg_last_(xlog|wal)_replay_(location|lsn)())。
Replay Lag メンバーの Replay LSN 位置と MB 内のその上流との間のレプリケーション ラグ。
それに加えて、次の情報が出力に含まれる場合があります。
System identifier Postgres システム識別子。
注記
テーブルヘッダーに表示されます。
出力形式が pretty の場合にのみ表示されます。
Group Citus グループ ID。
注記
テーブルヘッダーに表示されます。
Citus クラスターの場合にのみ表示されます。
Pending restart * は、一部の Postgres 構成を有効にするためにノードの再起動が必要であることを示します。空の値は、ノードを再起動する必要がないことを示します。
注記
メンバー属性として表示されます。
次の場合に表示されます。
pretty または tsv 形式で拡張出力を有効にして印刷します。またはノードの再起動が必要な場合。 Scheduled restart Patroni メンバーによって管理される Postgres インスタンスの再起動がスケジュールされたタイムスタンプ。空の値は、メンバーにスケジュールされた再起動がないことを示します。
注記
メンバー属性として表示されます。
次の場合に表示されます。
pretty または tsv 形式で拡張出力を有効にして印刷します。またはノードにスケジュールされた再起動がある場合。 Tags Patroni メンバーに設定されたタグが含まれます。空の値は、タグが設定されていないか、タグがデフォルト値で設定されていることを示します。
注記
メンバー属性として表示されます。
次の場合に表示されます。
pretty または tsv 形式で拡張出力を有効にして印刷します。またはIf ノードにカスタム タグ、またはデフォルト以外の値を持つデフォルト タグがある場合。 Scheduled switchover Patroni クラスターのスイッチオーバーがスケジュールされている場合のタイムスタンプ。
注記
テーブルのフッターに表示されます。
スケジュールされたスイッチオーバーがある場合にのみ表示され、出力形式は pretty です。
Maintenance mode
クラスター監視が現在一時停止されている場合。
> テーブルのフッターに表示されます。 > > クラスターが一時停止されており、出力形式が pretty の場合にのみ表示されます。
パラメータ CLUSTER_NAME Patroni クラスターの名前。
指定しない場合、patronictl
は、scope 構成が存在する場合は、そこからそれを取得しようとします。
--group 指定された Citus グループのメンバーに関する情報を表示します。
CITUS_GROUP は、Citus グループの ID です。
-e / --extended 拡張情報を表示します。
値が空であっても、Pending restart、Scheduled restart、Tags 属性を強制的に表示します。
注記
pretty および tsv 出力形式にのみ適用されます。
-t / --timestamp クラスターとそのメンバーに関する情報を出力する前にタイムスタンプを出力します。
-f / --format 出力内のイベントのリストをフォーマットする方法。
形式は次のいずれかになります。
pretty: 履歴を美しいテーブルとして出力します。またはtsv: \t で区切られた列を含む表形式の情報として履歴を出力します。またはjson: 履歴を JSON 形式で出力します。またはyaml: YAML 形式で履歴を出力します。デフォルトは pretty です。
-W 2 秒ごとに情報を自動的に更新します。
-w / --watch 指定した間隔で情報を自動的に更新します。
TIME は、更新間の間隔 (秒単位) です。
例 クラスターに関する情報をきれいな形式で表示します。
$ 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 -c postgres0.yml list batman -e
+ Cluster: batman ( 7277694203142172922) -+-----------+----+-------------+-----+------------+-----+-----------------+------------------------+-------------------+------+
| Member | Host | Role | State | TL | Receive LSN | Lag | Replay LSN | Lag | Pending restart | Pending restart reason | Scheduled restart | Tags |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+-----------------+------------------------+-------------------+------+
| 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 | | | | |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+-----------------+------------------------+-------------------+------+ クラスターに関する情報を実行のタイムスタンプとともに YAML 形式で表示します。
$ patronictl -c postgres0.yml list batman -f yaml -t
2023-09-12 13:30:48
- Cluster: batman
Host: 127.0.0.1:5432
Member: postgresql0
Role: Leader
State: running
TL: 5
- Cluster: batman
Host: 127.0.0.1:5433
Receive LSN: 0/40004E8
Receive Lag: 0
Replay LSN: 0/40004E8
Replay Lag: 0
Member: postgresql1
Role: Replica
State: streaming
TL: 5
- Cluster: batman
Host: 127.0.0.1:5434
Receive LSN: 0/40004E8
Receive Lag: 0
Replay LSN: 0/40004E8
Replay Lag: 0
Member: postgresql2
Role: Replica
State: streaming
TL: 5
patronictl pause
あらすじ
pause
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
[ --wait ]
説明 patronictl pause は、Patroni クラスターを一時的にメンテナンス モードにし、自動フェイルオーバーを無効にします。
パラメータ CLUSTER_NAME Patroni クラスターの名前。
指定しない場合、patronictl
は、scope 構成が存在する場合は、そこからそれを取得しようとします。
--group 指定された Citus グループを一時停止します。
CITUS_GROUP は、Citus グループの ID です。
指定しない場合、patronictl
は、citus.group 構成が存在する場合は、そこからそれを取得しようとします。
--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
あらすじ
promote-cluster
[ CLUSTER_NAME ]
[ --force ]
説明 patronictl promote-cluster は、スタンバイ クラスターを通常の Patroni クラスターに変換します。
このコマンドは、動的構成から standby_cluster セクションを削除し、リーダーがプライマリーとして実行されるまで待機します。 --force が使用されていない限り、構成を変更する前に現在のクラスター トポロジを出力し、確認を求めます。
パラメータ CLUSTER_NAME: Patroni クラスターの名前。
指定しない場合、patronictl
は、scope 構成が存在する場合は、そこからそれを取得しようとします。
--force: クラスターを昇格するときに確認プロンプトをスキップするためのフラグ。
スクリプトに便利です。
例 スタンバイ クラスターを通常の Patroni クラスターとして実行するように昇格します。
$ patronictl -c postgres0.yml promote-cluster batman --force
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 は、Patroni クラスターのメンバーに対して SQL コマンドまたはスクリプトを実行します。
パラメータ CLUSTER_NAME Patroni クラスターの名前。
指定しない場合、patronictl
は、scope 構成が存在する場合は、そこからそれを取得しようとします。
--group 指定された Citus グループをクエリーします。
CITUS_GROUP は、Citus グループの ID です。
-r / --role 指定されたロールを持つメンバーを選択します。
役割は次のいずれかになります。
leader: 通常の Patroni クラスターまたはスタンバイ Patroni クラスターのリーダー。またはprimary: 通常の Patroni クラスターのリーダー。またはstandby-leader: スタンバイ Patroni クラスターのリーダー。またはreplica: Patroni クラスターのレプリカ。またはstandby: replica と同じ。またはany: 任意のロール。このパラメータを省略した場合と同じです。-m / --member 指定された名前のメンバーを選択します。
MEMBER_NAME は、選択されるメンバーの名前です。
-d / --dbname 接続してクエリーを実行するデータベース。
DBNAME はデータベースの名前です。指定しない場合、デフォルトの USERNAME が使用されます。
-U / --username データベースに接続するユーザー。
USERNAME ユーザーの名前。指定しない場合、デフォルトは patronictl query を実行しているオペレーティング システム ユーザーになります。
--password 接続ユーザーのパスワードの入力を求めます。
Patroni は libpq を使用するため、代わりに ~/.pgpass ファイルを作成するか、PGPASSWORD 環境変数を設定できます。
--format クエリーの出力をフォーマットする方法。
形式は次のいずれかになります。
pretty: クエリー出力を美しいテーブルとして出力します。またはtsv: \t で区切られた列を含む表形式の情報としてクエリー出力を出力します。またはjson: クエリー出力を JSON 形式で出力します。またはyaml: クエリー出力を YAML 形式で出力します。デフォルトは tsv です。
-f / --file クエリーを実行するコマンドのソースとしてファイルを使用します。
FILE_NAME はソース ファイルへのパスです。
-c / --command クエリーで指定された SQL コマンドを実行します。
SQL_COMMAND は、実行される SQL コマンドです。
--delimiter tsv 形式で情報を出力する場合の区切り文字。省略した場合は \t。
-W 2 秒ごとにクエリーを自動的に再実行します。
-w / --watch 指定された間隔でクエリーを自動的に再実行します。
TIME は、再実行の間隔 (秒単位) です。
例 postgres ユーザーとして SQL コマンドを実行し、パスワードを要求します。
$ patronictl -c postgres0.yml query batman -U postgres --password -c "SELECT now()"
Password:
now
2023-09-12 18:10:53.228084+00:00 postgres ユーザーとして SQL コマンドを実行し、libpq 環境変数からパスワードを取得します。
$ PGPASSWORD = patroni patronictl -c postgres0.yml query batman -U postgres -c "SELECT now()"
now
2023-09-12 18:11:37.639500+00:00 SQL コマンドを実行し、2 秒ごとに pretty 形式で出力します。
$ patronictl -c postgres0.yml query batman -c "SELECT now()" --format pretty -W
+----------------------------------+
| now |
+----------------------------------+
| 2023-09-12 18:12:16.716235+00:00 |
+----------------------------------+
+----------------------------------+
| now |
+----------------------------------+
| 2023-09-12 18:12:18.732645+00:00 |
+----------------------------------+
+----------------------------------+
| now |
+----------------------------------+
| 2023-09-12 18:12:20.750573+00:00 |
+----------------------------------+ データベース test で SQL コマンドを実行し、出力を YAML 形式で出力します。
$ patronictl -c postgres0.yml query batman -d test -c "SELECT now() AS column_1, 'test' AS column_2" --format yaml
- column_1: 2023-09-12 18:14:22.052060+00:00
column_2: test メンバー postgresql2 に対して SQL コマンドを実行します。
$ patronictl -c postgres0.yml query batman -m postgresql2 -c "SHOW port"
port
5434 いずれかのスタンバイで SQL コマンドを実行します。
$ patronictl -c postgres0.yml query batman -r replica -c "SHOW port"
port
5433
patronictl reinit
あらすじ
reinit
CLUSTER_NAME
[ MEMBER_NAME [, ... ] ]
[ --group CITUS_GROUP ]
[ --wait ]
[ --force ]
[ --from-leader ]
説明 patronictl reinit は、Patroni クラスターのレプリカ メンバーによって管理される Postgres スタンバイ インスタンスを再構築します。
パラメータ CLUSTER_NAME Patroni クラスターの名前。
MEMBER_NAME Postgres インスタンスが再構築されるレプリカ メンバーの名前。
複数のレプリカ メンバーを指定できます。メンバーが指定されていない場合、コマンドは何も行いません。
--group 指定された Citus グループのレプリカ メンバーを再構築します。
CITUS_GROUP は、Citus グループの ID です。
--wait Postgres スタンバイ ノードの再初期化が完了するまで待ちます。
--force Postgres スタンバイ インスタンスを再構築するときに確認プロンプトをスキップするためのフラグ。
--from-leader リーダーからベースバックアップを直接取得するためのフラグ。
スクリプトに便利です。
例 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 postgresql2 の再構築をリクエストし、完了するまで待ちます。
$ patronictl -c postgres0.yml reinit batman postgresql2 --wait --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 postgresql2
Waiting for reinitialize to complete on: postgresql2
Reinitialize is completed on: postgresql2 postgresql2 の再構築をリクエストし、リーダーから直接ベースバックアップを取得します。
$ patronictl -c postgres0.yml reinit batman postgresql2 --from-leader
+ 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 postgresql2
patronictl reload
あらすじ
reload
CLUSTER_NAME
[ MEMBER_NAME [, ... ] ]
[ --group CITUS_GROUP ]
[ { -r | --role } { leader | primary | standby-leader | replica | standby | any } ]
[ --force ]
説明 patronictl reload は、1 つ以上の Patroni メンバーのローカル構成のリロードを要求します。
また、何も変更されていない場合でも、管理対象の Postgres インスタンスで pg_ctl reload がトリガーされます。
パラメータ CLUSTER_NAME Patroni クラスターの名前。
MEMBER_NAME 指定された Patroni メンバーのローカル構成のリロードを要求します。
複数のメンバーを指定できます。メンバーが指定されていない場合は、すべてのメンバーが考慮されます。
--group 指定された Citus グループのメンバーのリロードを要求します。
CITUS_GROUP は、Citus グループの ID です。
-r / --role 指定されたロールを持つメンバーを選択します。
役割は次のいずれかになります。
leader: 通常の Patroni クラスターまたはスタンバイ Patroni クラスターのリーダー。またはprimary: 通常の Patroni クラスターのリーダー。またはstandby-leader: スタンバイ Patroni クラスターのリーダー。またはreplica: Patroni クラスターのレプリカ。またはstandby: replica と同じ。またはany: 任意のロール。このパラメータを省略した場合と同じです。--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 からクラスターの情報を削除します。
インタラクティブなアクションです。
警告
この操作は、DCS から Patroni クラスターの情報を破棄します。
パラメータ CLUSTER_NAME Patroni クラスターの名前。
--group 指定された Citus グループに関連する Patroni クラスターに関する情報を削除します。
CITUS_GROUP は、Citus グループの ID です。
-f / --format 確認を求めるプロンプトが表示されるときに、出力内のメンバーのリストをフォーマットする方法。
形式は次のいずれかになります。
pretty: メンバーを美しいテーブルとして出力します。またはtsv: \t で区切られた列を含む表形式の情報としてメンバーを出力します。またはjson: メンバーを JSON 形式で出力します。またはyaml: メンバーを 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 は、Patroni クラスターのメンバーによって管理される Postgres インスタンスの再起動を要求します。
再起動はすぐに実行することも、後で実行するようにスケジュールすることもできます。
パラメータ CLUSTER_NAME Patroni クラスターの名前。
--group 指定された Citus グループに関連する Patroni クラスターを再起動します。
CITUS_GROUP は、Citus グループの ID です。
-r / --role 指定されたロールを持つメンバーを選択します。
役割は次のいずれかになります。
leader: 通常の Patroni クラスターまたはスタンバイ Patroni クラスターのリーダー。またはprimary: 通常の Patroni クラスターのリーダー。またはstandby-leader: スタンバイ Patroni クラスターのリーダー。またはreplica: Patroni クラスターのレプリカ。またはstandby: replica と同じ。またはany: 任意のロール。このパラメータを省略した場合と同じです。--any 指定されたフィルターに一致するノードの中からランダムな 1 つのノードを再起動します。
--pg-version 管理対象 Postgres インスタンスのバージョンが指定されたバージョンより古いメンバーのみを選択します。
PG_VERSION は、比較する Postgres バージョンです。
--pending Pending restart のフラグが付いているメンバーのみを選択します。
--timeout: 指定されたタイムアウトを超えて再起動がかかる場合は再起動を中止し、問題がプライマリーにある場合はレプリカにフェイルオーバーします。
TIMEOUT は、再起動を中止するまでに待機する秒数です。
--scheduled 指定されたタイムスタンプで再起動が行われるようにスケジュールします。
TIMESTAMP は、再起動が行われるときのタイムスタンプです。明確な形式で、できればタイムゾーンを使用して指定してください。リテラル now を使用して、再起動をすぐに実行することもできます。
--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 -c postgres0.yml restart batman --any --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 postgresql1 2023-09-13T18:00-03:00 で再起動が行われるようにスケジュールします。
$ patronictl -c postgres0.yml restart batman --scheduled 2023-09-13T18:00-03:00 --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 scheduled on member postgresql0
Success: restart scheduled on member postgresql1
Success: restart scheduled on member postgresql2
patronictl resume
あらすじ
resume
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
[ --wait ]
説明 patronictl resume は、Patroni クラスターのメンテナンス モードを解除し、自動フェイルオーバーを再度有効にします。
パラメータ CLUSTER_NAME Patroni クラスターの名前。
指定しない場合、patronictl
は、scope 構成が存在する場合は、そこからそれを取得しようとします。
--group 指定された Citus グループを再開します。
CITUS_GROUP は、Citus グループの ID です。
指定しない場合、patronictl
は、citus.group 構成が存在する場合は、そこからそれを取得しようとします。
--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 クラスターの名前。
指定しない場合、patronictl
は、scope 構成が存在する場合は、そこからそれを取得しようとします。
--group 指定された Citus グループの動的構成を表示します。
CITUS_GROUP は、Citus グループの ID です。
指定しない場合、patronictl
は、citus.group 構成が存在する場合は、そこからそれを取得しようとします。
例 クラスター 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 はクラスター内でスイッチオーバーを実行します。
これは、クラスターが正常な場合に使用されるように設計されています。例:
リーダーがいます。 同期クラスターでは使用可能な同期スタンバイがあります。 注記
クラスターが正常でない場合は、代わりに patronictl failover に興味があるかもしれません。
パラメータ CLUSTER_NAME Patroni クラスターの名前。
指定しない場合、patronictl
は、scope 構成が存在する場合は、そこからそれを取得しようとします。
--group 指定された Citus グループでスイッチオーバーを実行します。
CITUS_GROUP は、Citus グループの ID です。
--leader / --primary 切り替え時に降格されるリーダーを示します。
LEADER_NAME は、クラスター内の現在のリーダーの名前と一致する必要があります。
--candidate スイッチオーバー時に昇格され、プライマリーの役割を担うノード。
CANDIDATE_NAME は、昇格するノードの名前です。
--scheduled 指定されたタイムスタンプでスイッチオーバーが発生するようにスケジュールします。
TIMESTAMP は、スイッチオーバーが発生するときのタイムスタンプです。明確な形式で、できればタイムゾーンを使用して指定してください。リテラル now を使用してスイッチオーバーを即時に実行することもできます。
--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 | | | | |
+-------------+----------------+---------+---------+----+-------------+---------+------------+---------+ postgresql0 と postgresql2 の間のスイッチオーバーが 2023-09-13T18:00:00-03:00 で発生するようにスケジュールします。
$ patronictl -c postgres0.yml switchover batman --leader postgresql0 --candidate postgresql2 --scheduled 2023-09-13T18:00-03:00 --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 | 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 |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
2023-09-13 14:18:11.20661 Switchover scheduled
+ 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 |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
Switchover scheduled at: 2023-09-13T18:00:00-03:00
from: postgresql0
to: postgresql2
patronictl topology
あらすじ
topology
[ CLUSTER_NAME [, ... ] ]
[ --group CITUS_GROUP ]
[ { -W | { -w | --watch } TIME } ]
説明 patronictl topology は、Patroni クラスターとそのメンバーに関する情報をツリー ビュー アプローチで表示します。
出力には次の情報が含まれます。
Cluster Patroni クラスターの名前。
System identifier Postgres システム識別子。
Member Patroni メンバーの名前。
注記
この列の情報は、レプリケーション接続に関するメンバーのツリー ビューとして表示されます。
Host メンバーが配置されているホスト。
Role メンバーの現在の役割。
次のいずれかになります:
Leader: 通常の Patroni クラスターの現在のリーダー。またはStandby Leader: Patroni スタンバイ クラスターの現在のリーダー。またはSync Standby: 同期モードが有効になっている Patroni クラスターの同期スタンバイ。またはReplica: Patroni クラスターの通常のスタンバイ。State Patroni メンバーの Postgres の現在の状態。
考えられる状態の例をいくつか示します。
running: Postgres が現在稼働しているかどうか。streaming: レプリカと Postgres が現在プライマリー ノードから WAL をストリーミングしている場合。in archive recovery: レプリカと Postgres が現在アーカイブから WAL をフェッチしているかどうか。stopped: Postgres がシャットダウンされていた場合。crashed: Postgres がクラッシュした場合。TL Patroni メンバー内の現在の Postgres タイムライン。
Receive LSN メンバーのストリーミング レプリケーションによって受信され、ディスクに同期された最後の先行書き込みログの場所 (pg_catalog.pg_last_(xlog|wal)_receive_(location|lsn)())。
Receive Lag メンバーの Receive LSN 位置と MB 内のその上流との間のレプリケーション ラグ。
Replay LSN メンバーのリカバリ中に再生された最後の先行書き込みログの場所 (pg_catalog.pg_last_(xlog|wal)_replay_(location|lsn)())。
Replay Lag メンバーの Replay LSN 位置と MB 内のその上流との間のレプリケーション ラグ。
それに加えて、次の情報が出力に含まれる場合があります。
Group Citus グループ ID。
注記
テーブルヘッダーに表示されます。
Citus クラスターの場合にのみ表示されます。
Pending restart * は、一部の Postgres 構成を有効にするためにノードの再起動が必要であることを示します。空の値は、ノードを再起動する必要がないことを示します。
注記
メンバー属性として表示されます。
ノードの再起動が必要な場合に表示されます。
Scheduled restart Patroni メンバーによって管理される Postgres インスタンスの再起動がスケジュールされたタイムスタンプ。空の値は、メンバーにスケジュールされた再起動がないことを示します。
注記
メンバー属性として表示されます。
ノードにスケジュールされた再起動がある場合に表示されます。
Tags Patroni メンバーに設定されたタグが含まれます。空の値は、タグが設定されていないか、タグがデフォルト値で設定されていることを示します。
注記
メンバー属性として表示されます。
ノードにカスタム タグがある場合、またはデフォルト以外の値を持つデフォルト タグがある場合に表示されます。
Scheduled switchover Patroni クラスターのスイッチオーバーがスケジュールされている場合のタイムスタンプ。
注記
テーブルのフッターに表示されます。
スケジュールされたスイッチオーバーがある場合にのみ表示されます。
Maintenance mode
クラスター監視が現在一時停止されている場合。
> テーブルのフッターに表示されます。 > > クラスターが一時停止されている場合にのみ表示されます。
パラメータ CLUSTER_NAME Patroni クラスターの名前。
指定しない場合、patronictl
は、scope 構成が存在する場合は、そこからそれを取得しようとします。
--group 指定された Citus グループのメンバーに関する情報を表示します。
CITUS_GROUP は、Citus グループの ID です。
-W 2 秒ごとに情報を自動的に更新します。
-w / --watch 指定した間隔で情報を自動的に更新します。
TIME は、更新間の間隔 (秒単位) です。
例 クラスターのトポロジを表示します batman – postgresql1 と 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 指定された Citus グループを持つ Patroni クラスターを考えてみましょう。
CITUS_GROUP は、Citus グループの ID です。
例 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 patronictl
と、クラスター batman のメンバー postgresql1 および postgresql2 のバージョンを取得します。
$ patronictl -c postgres0.yml version batman postgresql1 postgresql2
patronictl version 4.0.0
postgresql1: Patroni 4.0.0 PostgreSQL 16.4
postgresql2: Patroni 4.0.0 PostgreSQL 16.4