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/patroni

  • Mac OS X POSIX ~/.patroni

  • Unix ~/.config/patroni

  • UnixPOSIX ~/.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

注釈

これは、概要の構文です。

  • 角かっこ間のオプションはオプショナル。

  • 中括弧間のオプションは、/"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_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

指定されたファイルから動的構成を適用します。

これは、複数の -s / --set オプションを CONFIG_FILE からの構成ごとに1つずつ指定するのと似ています。

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

パトロニカルフェイルオーバー

概要

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 |             |         |            |         |
+-------------+----------------+---------+---------+----+-------------+---------+------------+---------+

パトロニカルフラッシュ

概要

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

後援者の歴史

概要

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

イベント中に昇格したパトローニメンバー。

パラメーター

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'

後援者リスト

概要

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

パトローニメンバーの名前。

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 形式での拡張出力が有効になっている印刷。または

  • ノードにカスタムタグ、またはデフォルト以外の値を含むデフォルトタグがある場合。

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

patronicl 一時停止

概要

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

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_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

patronicl 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

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_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

patronicl remote

概要

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

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_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

保護者の履歴書

概要

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

パトロニクススイッチオーバー

概要

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

保護者トポロジ

概要

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

説明

patronictl topology は、Patroniクラスターとそのメンバーに関する情報をツリービューアプローチで表示します。

出力には次の情報が含まれます。

Cluster

Patroniクラスターの名前。

注釈

テーブルヘッダーに表示されます。

System identifier

Postgresシステム識別子。

注釈

テーブルヘッダーに表示されます。

Member

パトローニメンバーの名前。

注釈

この列の情報は、レプリケーション接続の観点からメンバーのツリービューとして表示されます。

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 |
+---------------+----------------+---------+-----------+----+-------------+-----+------------+-----+

保護者バージョン

概要

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