patronicl
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が見つからない場合に関係します。詳細については、 restapi を参照してください。DCS etcd など パトロニが使用するDCSに接続して認証する方法。
これらの構成オプションは、環境変数または構成ファイルから取得できます。 Environment Configuration Settings または Environment Configuration Settings で上記のセクションを探して、環境変数または構成ファイルを介してそれらのオプションを設定する方法を理解します。
環境変数の使用を選択した場合、それは簡単なアプローチです。 Patronictlは環境変数を読み取り、その値を使用します。
構成ファイルを使用する場合、使用するファイルについて patronictl に通知するさまざまな方法があります。デフォルトでは、 patronictl は、 patronictl.yaml という名前の構成ファイルをロードしようとします。これは、システムに応じて、これらのパスのいずれかの下にあると予想されます。
Mac OS X
~/Library/Application Support/patroniMac OS X POSIX
~/.patroniUnix
~/.config/patroniUnixPOSIX
~/.patroniWindowsローミング
C:/Users/<user>/AppData/Roaming/patroniWindows非ローミング
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/--dcsPatroniが使用するDCSに接続文字列を提供します。
この引数は、
patronictl構成からDCSおよびnamespace設定をオーバーライドするために使用でき、または構成に欠落している場合は定義できます。値は
DCS://HOST:PORT/NAMESPACEのフォーマットである必要があります。例etcd3://localhost:2379/serviceは、service名前空間の下に保存されているPatroniクラスターを使用してlocalhostで実行されているetcd v3に接続します。引数の値に欠落している部分は、構成に存在する値またはそのデフォルトに置き換えられます。-k/--insecureREST APIサーバーSSL証明書の検証をバイパスするフラグ。
これは、 patronictl からコマンドを実行する場合の概要です。
patronictl [ { -c | --config-file } CONFIG_FILE ]
[ { -d | --dcs-url | --dcs } DCS_URL ]
[ { -k | --insecure } ]
SUBCOMMAND
注釈
これは、概要の構文です。
角かっこ間のオプションはオプショナル。
中括弧間のオプションは、/"choose one of set/"操作を表します。
[, ... ]を使用したオプションは複数回指定できます。大文字で書かれたものは、値を与える必要があるリテラルを表します。
以下のサブセクションで patronictl サブコマンドを説明するときに、これと同じ構文を使用します。また、以下のサブセクションでサブコマンドを説明するときは、コマンドの概要は、上記の概要の SUBCOMMAND の置き換えと見なす必要があります。
以下のサブセクションでは、 patronictl によって実装される各コマンドの説明を見つけます。例のために、PatroniのGitHubリポジトリに存在する構成ファイルファイル postgres0.yml 、 postgres1.yml および postgres2.yml を使用します。
patronicl 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_NAMEPatroniクラスターの名前。
指定されない場合、
patronictlは、scope構成が存在する場合は、そこからそれを取得しようとします。-r/--role指定されたロールを持つメンバーを選択します。
ロールは次のいずれかです。
leader通常のPatroniクラスターまたはスタンバイPatroniクラスターのリーダー。またはprimary通常のPatroniクラスターのリーダー。またはstandby-leaderスタンバイPatroniクラスターのリーダー。またはreplicaPatroniクラスターのレプリカ。またはstandbyreplicaと同じ。または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_NAMEPatroniクラスターの名前。
指定されない場合、
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指定されたファイルから動的構成を適用します。
これは、複数の
-s/--setオプションをCONFIG_FILEからの構成ごとに1つずつ指定するのと似ています。CONFIG_FILEは、適用される動的構成をYAML形式で含むファイルへのパスです。stdinから読み取る場合は、-を使用します。--replaceDCSの動的構成を、指定されたファイルで指定された動的構成に置き換えます。
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
パトロニカルフェイルオーバー
概要
failover
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
--candidate CANDIDATE_NAME
[ --force ]
説明
patronictl failover は、クラスターで手動フェイルオーバーを実行します。
クラスターが正常でない場合に使用するように設計されています。例
リーダーはいません。または
同期クラスターで使用可能な同期スタンバイはありません。
同期モードが有効になっている場合、非同期ノードにフェイルオーバーすることもできます。
注釈
正常なクラスターで patronictl failover を実行することを妨げるものはありません。ただし、これらの場合は、 patronictl switchover を使用することをお勧めします。
警告
プライマリと比較して昇格したレプリカがどの程度最新であるかによっては、フェールオーバーをトリガーするとデータ損失が発生する可能性があります。
パラメーター
CLUSTER_NAMEPatroniクラスターの名前。
指定されない場合、
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 | | | | |
+-------------+----------------+---------+---------+----+-------------+---------+------------+---------+
パトロニカルフラッシュ
概要
flush
CLUSTER_NAME
[ MEMBER_NAME [, ... ] ]
{ restart | switchover }
[ --group CITUS_GROUP ]
[ { -r | --role } { leader | primary | standby-leader | replica | standby | any } ]
[ --force ]
説明
patronictl flush は、スケジュールされたイベントがある場合は破棄します。
パラメーター
CLUSTER_NAMEPatroniクラスターの名前。
MEMBER_NAME指定されたPatroniメンバーのスケジュールされたイベントを破棄します。
複数のメンバーを指定できます。メンバーが指定されない場合、すべてが検討されます。
注釈
スケジュールされた再起動イベントを破棄する場合にのみ使用されます。
restartスケジュールされた再起動イベントを破棄します。
switchoverスケジュールされたスイッチオーバーイベントを破棄します。
--group指定されたCitusグループからスケジュールされたイベントを破棄します。
CITUS_GROUPは、CitusグループのIDです。-r/--role指定されたロールを持つメンバーのスケジュールされたイベントを破棄します。
ロールは次のいずれかです。
leader通常のPatroniクラスターまたはスタンバイPatroniクラスターのリーダー。またはprimary通常のPatroniクラスターのリーダー。またはstandby-leaderスタンバイPatroniクラスターのリーダー。またはreplicaPatroniクラスターのレプリカ。またはstandbyreplicaと同じ。または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
後援者の歴史
概要
history
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
[ { -f | --format } { pretty | tsv | json | yaml } ]
説明
patronictl history は、クラスターからのフェイルオーバーとスイッチオーバーイベントの履歴を表示します。
出力には次の情報が含まれます。
TLイベントが発生したPostgresタイムライン。
LSNイベントが発生したPostgres LSN。
ReasonPostgres
.historyファイルから取得した理由。Timestampイベントが発生した時刻。
New Leaderイベント中に昇格したパトローニメンバー。
パラメーター
CLUSTER_NAMEPatroniクラスターの名前。
指定されない場合、
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'
後援者リスト
概要
list
[ CLUSTER_NAME [, ... ] ]
[ --group CITUS_GROUP ]
[ { -e | --extended } ]
[ { -t | --timestamp } ]
[ { -f | --format } { pretty | tsv | json | yaml } ]
[ { -W | { -w | --watch } TIME } ]
説明
patronictl list は、Patroniクラスターとそのメンバーに関する情報を表示します。
出力には次の情報が含まれます。
ClusterPatroniクラスターの名前。
Memberパトローニメンバーの名前。
Hostメンバーがいるホスト。
Roleメンバーの現在のロール。
次のいずれかです。
Leader通常のPatroniクラスターの現在のリーダー。またはStandby LeaderPatroniスタンバイクラスターの現在のリーダー。またはSync Standby同期モードが有効になっているPatroniクラスターの同期スタンバイ。またはReplicaPatroniクラスターの通常のスタンバイ。
StatePatroniメンバーのPostgresの現在の状態。
考えられる状態のいくつかの例
runningPostgresが現在アップして実行されている場合。streamingレプリカとPostgresが現在プライマリノードからWALをストリーミングしている場合。in archive recoveryレプリカとPostgresが現在アーカイブからWALを取得している場合。stoppedPostgresがシャットダウンされていた場合。crashedPostgresがクラッシュした場合。
TLPatroniメンバーの現在の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 identifierPostgresシステム識別子。
注釈
テーブルヘッダーに表示されます。
出力形式が
prettyの場合にのみ表示されます。GroupCitusグループID。
注釈
テーブルヘッダーに表示されます。
Citusクラスターの場合にのみ表示されます。
Pending restart*は、一部のPostgres構成を有効にするにはノードの再起動が必要であることを示します。空の値は、ノードに再起動が必要ないことを示します。注釈
メンバー属性として表示されます。
次の場合に表示されます
prettyまたはtsv形式での拡張出力が有効になっている印刷。またはノードの再起動が必要な場合。
Scheduled restartPatroniメンバーによって管理されるPostgresインスタンスの再起動がスケジュールされたタイムスタンプ。空の値は、メンバーにスケジュールされた再起動が存在しないことを示します。
注釈
メンバー属性として表示されます。
次の場合に表示されます
prettyまたはtsv形式での拡張出力が有効になっている印刷。またはノードにスケジュールされた再起動がある場合。
TagsPatroniメンバーに設定されたタグが含まれています。空の値は、タグが設定されていないか、デフォルト値で構成されていることを示します。
注釈
メンバー属性として表示されます。
次の場合に表示されます
prettyまたはtsv形式での拡張出力が有効になっている印刷。またはノードにカスタムタグ、またはデフォルト以外の値を含むデフォルトタグがある場合。
Scheduled switchoverPatroniクラスターでスイッチオーバーがスケジュールされている場合のタイムスタンプ。
注釈
テーブルフッターに表示されます。
スケジュールされたスイッチオーバーがあり、出力形式が
prettyの場合にのみ表示されます。
Maintenance mode
クラスターモニタリングが現在一時停止されている場合。
注釈
テーブルフッターに表示されます。
クラスターが一時停止され、出力形式が
prettyの場合にのみ表示されます。
パラメーター
CLUSTER_NAMEPatroniクラスターの名前。
指定されない場合、
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です。-W2秒ごとに情報を自動的に更新します。
-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
patronicl 一時停止
概要
pause
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
[ --wait ]
説明
patronictl pause は、Patroniクラスターを一時的にメンテナンスモードに設定し、自動フェイルオーバーを無効にします。
パラメーター
CLUSTER_NAMEPatroniクラスターの名前。
指定されない場合、
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
patronicl クエリー
概要
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_NAMEPatroniクラスターの名前。
指定されない場合、
patronictlは、scope構成が存在する場合は、そこからそれを取得しようとします。--group指定されたCitusグループを照会します。
CITUS_GROUPは、CitusグループのIDです。-r/--role指定されたロールを持つメンバーを選択します。
ロールは次のいずれかです。
leader通常のPatroniクラスターまたはスタンバイPatroniクラスターのリーダー。またはprimary通常のPatroniクラスターのリーダー。またはstandby-leaderスタンバイPatroniクラスターのリーダー。またはreplicaPatroniクラスターのレプリカ。またはstandbyreplicaと同じ。または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コマンドです。--delimitertsv形式で情報を印刷する場合の区切り文字、または省略した場合は/t。-W2秒ごとにクエリーを自動的に再実行します。
-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
patronicl reinit
概要
reinit
CLUSTER_NAME
[ MEMBER_NAME [, ... ] ]
[ --group CITUS_GROUP ]
[ --wait ]
[ --force ]
[ --from-leader ]
説明
patronictl reinit は、Patroniクラスターのレプリカメンバーによって管理されるPostgresスタンバイインスタンスをリビルドします。
パラメーター
CLUSTER_NAMEPatroniクラスターの名前。
MEMBER_NAMEPostgresインスタンスがリビルドされるレプリカメンバーの名前。
複数のレプリカメンバーを指定できます。メンバーが指定されない場合、コマンドは何も行いません。
--group指定されたCitusグループのレプリカメンバーを再構築します。
CITUS_GROUPは、CitusグループのIDです。--waitPostgresスタンバイノードの再初期化が完了するまで待ちます。
--forcePostgresスタンバイインスタンスを再構築するときに確認プロンプトをスキップするためのフラグ。
--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
patronicl 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_NAMEPatroniクラスターの名前。
MEMBER_NAME指定されたPatroniメンバーのローカル構成のリロードを要求します。
複数のメンバーを指定できます。メンバーが指定されない場合、すべてが検討されます。
--group指定されたCitusグループのメンバーのリロードを要求します。
CITUS_GROUPは、CitusグループのIDです。-r/--role指定されたロールを持つメンバーを選択します。
ロールは次のいずれかです。
leader通常のPatroniクラスターまたはスタンバイPatroniクラスターのリーダー。またはprimary通常のPatroniクラスターのリーダー。またはstandby-leaderスタンバイPatroniクラスターのリーダー。またはreplicaPatroniクラスターのレプリカ。またはstandbyreplicaと同じ。または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
patronicl remote
概要
remove
CLUSTER_NAME
[ --group CITUS_GROUP ]
[ { -f | --format } { pretty | tsv | json | yaml } ]
説明
patronictl remove は、DCSからクラスターの情報を削除します。
インタラクティブなアクションです。
警告
この操作は、DCSからPatroniクラスターの情報を破壊します。
パラメーター
CLUSTER_NAMEPatroniクラスターの名前。
--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
patronicl 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_NAMEPatroniクラスターの名前。
--group特定のCitusグループに関連するPatroniクラスターを再起動します。
CITUS_GROUPは、CitusグループのIDです。-r/--role指定されたロールを持つメンバーを選択します。
ロールは次のいずれかです。
leader通常のPatroniクラスターまたはスタンバイPatroniクラスターのリーダー。またはprimary通常のPatroniクラスターのリーダー。またはstandby-leaderスタンバイPatroniクラスターのリーダー。またはreplicaPatroniクラスターのレプリカ。またはstandbyreplicaと同じ。またはany任意のロール。このパラメーターを省略した場合と同じです。
--any指定されたフィルタに一致するノードの中から1つのランダムなノードを再起動します。
--pg-version管理対象Postgresインスタンスのバージョンが指定されたバージョンよりも古いメンバーのみを選択します。
PG_VERSIONは、比較するPostgresバージョンです。--pendingPending 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
保護者の履歴書
概要
resume
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
[ --wait ]
説明
patronictl resume は、Patroniクラスターのメンテナンスモードを解除し、自動フェイルオーバーを再度有効にします。
パラメーター
CLUSTER_NAMEPatroniクラスターの名前。
指定されない場合、
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_NAMEPatroniクラスターの名前。
指定されない場合、
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
パトロニクススイッチオーバー
概要
switchover
[ CLUSTER_NAME ]
[ --group CITUS_GROUP ]
[ { --leader | --primary } LEADER_NAME ]
--candidate CANDIDATE_NAME
[ --force ]
説明
patronictl switchover は、クラスターでスイッチオーバーを実行します。
クラスターが正常なときに使用するように設計されています。例
リーダーがいます。
同期クラスターでは使用可能な同期スタンバイがあります。
注釈
クラスターが正常でない場合は、代わりに patronictl failover に興味があるかもしれません。
パラメーター
CLUSTER_NAMEPatroniクラスターの名前。
指定されない場合、
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
保護者トポロジ
概要
topology
[ CLUSTER_NAME [, ... ] ]
[ --group CITUS_GROUP ]
[ { -W | { -w | --watch } TIME } ]
説明
patronictl topology は、Patroniクラスターとそのメンバーに関する情報をツリービューアプローチで表示します。
出力には次の情報が含まれます。
ClusterPatroniクラスターの名前。
注釈
テーブルヘッダーに表示されます。
System identifierPostgresシステム識別子。
注釈
テーブルヘッダーに表示されます。
Memberパトローニメンバーの名前。
注釈
この列の情報は、レプリケーション接続の観点からメンバーのツリービューとして表示されます。
Hostメンバーがいるホスト。
Roleメンバーの現在のロール。
次のいずれかです。
Leader通常のPatroniクラスターの現在のリーダー。またはStandby LeaderPatroniスタンバイクラスターの現在のリーダー。またはSync Standby同期モードが有効になっているPatroniクラスターの同期スタンバイ。またはReplicaPatroniクラスターの通常のスタンバイ。
StatePatroniメンバーのPostgresの現在の状態。
考えられる状態のいくつかの例
runningPostgresが現在アップして実行されている場合。streamingレプリカとPostgresが現在プライマリノードからWALをストリーミングしている場合。in archive recoveryレプリカとPostgresが現在アーカイブからWALを取得している場合。stoppedPostgresがシャットダウンされていた場合。crashedPostgresがクラッシュした場合。
TLPatroniメンバーの現在の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単位のレプリケーションラグ。
それに加えて、次の情報が出力に含まれる場合があります。
GroupCitusグループID。
注釈
テーブルヘッダーに表示されます。
Citusクラスターの場合にのみ表示されます。
Pending restart*は、一部のPostgres構成を有効にするにはノードの再起動が必要であることを示します。空の値は、ノードに再起動が必要ないことを示します。注釈
メンバー属性として表示されます。
ノードが再起動が必要な場合に表示されます。
Scheduled restartPatroniメンバーによって管理されるPostgresインスタンスの再起動がスケジュールされたタイムスタンプ。空の値は、メンバーにスケジュールされた再起動が存在しないことを示します。
注釈
メンバー属性として表示されます。
ノードにスケジュールされた再起動がある場合に表示されます。
TagsPatroniメンバーに設定されたタグが含まれています。空の値は、タグが設定されていないか、デフォルト値で構成されていることを示します。
注釈
メンバー属性として表示されます。
ノードにカスタムタグ、またはデフォルト以外の値を含むデフォルトタグがある場合に表示されます。
Scheduled switchoverPatroniクラスターでスイッチオーバーがスケジュールされている場合のタイムスタンプ。
注釈
テーブルフッターに表示されます。
スケジュールされたスイッチオーバーがある場合にのみ表示されます。
Maintenance mode
クラスターモニタリングが現在一時停止されている場合。
注釈
テーブルフッターに表示されます。
クラスターが一時停止されている場合にのみ表示されます。
パラメーター
CLUSTER_NAMEPatroniクラスターの名前。
指定されない場合、
patronictlは、scope構成が存在する場合は、そこからそれを取得しようとします。--group指定されたCitusグループのメンバーに関する情報を表示します。
CITUS_GROUPは、CitusグループのIDです。-W2秒ごとに情報を自動的に更新します。
-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 |
+---------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
保護者バージョン
概要
version
[ CLUSTER_NAME [, ... ] ]
[ MEMBER_NAME [, ... ] ]
[ --group CITUS_GROUP ]
説明
patronictl version は、 patronictl アプリケーションのバージョンを取得します。それに加えて、Patroniクラスターとそのメンバーに関するバージョン情報が含まれる場合があります。
パラメーター
CLUSTER_NAMEPatroniクラスターの名前。
MEMBER_NAMEPatroniクラスターのメンバーの名前。
--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