Patroni

Patroniには patronictl という名前のコマンドラインインターフェイスがあり、これは基本的にPatroniのRESTAPIおよびDCSと対話するために使用されます。これは、クラスター内での操作の実行を容易にすることを目的としており、人間またはスクリプトで簡単に使用できます。

構成

patronictl は、構成の3つのセクションを使用します。

  • ctl :PatroniRESTAPIに対して認証する方法、およびサーバーIDを検証する方法。詳細については、 ctl を参照してください。

  • restapi :PatroniRESTAPIに対して認証する方法、およびサーバーIDを検証する方法。 ctl 構成が十分でない場合にのみ使用されます。 patronictl は主に restapi.authentication セクション( ctl.authentication が欠落している場合)と restapi.cafile 設定( ctl.cacert が欠落している場合)に関係します。詳細については、 restapi を参照してください。

  • DCS(例: etcd ):Patroniが使用するDCSに接続して認証する方法。

これらの構成オプションは、環境変数または構成ファイルから取得できます。 Environment Configuration Settings または Environment Configuration Settings で上記のセクションを探し、環境変数または構成ファイルを通じてそれらのオプションを設定する方法を理解してください。

環境変数の使用を選択した場合、それは簡単なアプローチです。Patronictlは環境変数を読み取り、その値を使用します。

構成ファイルの使用を選択した場合、使用するファイルについて patronictl に通知するさまざまな方法があります。デフォルトでは、 patronictl は patronictl.yaml という名前の構成ファイルをロードしようとします。このファイルは、システムに応じて次のパスのいずれかにあると想定されます。

  • MacOSX: ~/Library/Application Support/patroni

  • MacOSX(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 上で実行されているetcdv3に接続します。引数の値に欠落している部分は、構成に存在する値またはそのデフォルトに置き換えられます。

-k / --insecure

RESTAPIサーバーのSSL証明書の検証をバイパスするフラグ。

これは、 patronictl からコマンドを実行する場合の概要です。

patronictl [ { -c | --config-file } CONFIG_FILE ]
  [ { -d | --dcs-url | --dcs } DCS_URL ]
  [ { -k | --insecure } ]
  SUBCOMMAND

注釈

概要の構文は次のとおりです。

  • 角括弧内のオプションはオプションです。

  • 中括弧内のオプションは、「設定の1つを選択する」操作を表します。

  • [, ... ] のオプションは複数回指定できます。

  • 大文字で書かれたものは値を与えるべきリテラルを表します。

以下のサブセクションで patronictl サブコマンドを説明するときに、これと同じ構文を使用します。また、以下のサブセクションでサブコマンドを説明する場合、コマンドの概要は、上記の概要の SUBCOMMAND を置き換えるものと見なす必要があります。

次のサブセクションでは、 patronictl によって実装される各コマンドの説明を見つけることができます。例として、PatroniのGitHubリポジトリに存在する構成ファイル(ファイル postgres0.yml 、 postgres1.yml 、および postgres2.yml )を使用します。

保護者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
  [ 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 の値です。 nulll の場合、 PG_CONFIG は動的構成から削除されます。

--apply

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

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

CONFIG_FILE は、適用される動的構成を含むファイルへのパス(YAML形式)です。 stdin から読み取りたい場合は、 - を使用します。

--replace

DCSの動的構成を、指定されたファイルで指定された動的構成に置き換えます。

CONFIG_FILE は、有効になる新しい動的構成を含むファイルへのパス(YAML形式)です。 stdin から読み取りたい場合は、 - を使用します。

--force

動的構成を変更するときに確認プロンプトをスキップするフラグ。

スクリプトに便利です。

例

max_connections PostgresGUCを変更します。

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

patroniclフェイルオーバー

あらすじ

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

説明

patronictl failover は、クラスター内で手動フェイルオーバーを実行します。

これは、クラスターが正常でない場合に使用するように設計されています。例:

  • リーダーはいない。または

  • 同期クラスターでは使用できる同期スタンバイはありません。

同期モードが有効な場合は、非同期ノードにフェイルオーバーすることもできます。

注釈

正常なクラスターで patronictl failover を実行することを妨げるものはありません。ただし、そのような場合には patronictl switchover を使用することをお勧めします。

警告

プライマリと比較してプロモートされたレプリカがどの程度最新であるかによっては、フェールオーバーをトリガーするとデータ損失が発生する可能性があります。

パラメーター

CLUSTER_NAME

Patroniクラスターの名前。

指定しない場合、 patronictl は scope 構成が存在する場合、そこから取得しようとします。

--group

指定されたCitusグループでフェイルオーバーを実行します。

CITUS_GROUP はCitusグループのIDです。

--leader / --primary

フェールオーバー時に予想されるリーダーが誰であるかを示します。

指定した場合、フェイルオーバーの代わりにスイッチオーバーが実行されます。

LEADER_NAME は、クラスター内の現在のリーダーの名前と一致する必要があります。

警告

この引数は非推奨であり、将来のリリースでは削除される予定です。

--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 | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  3 |           |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  3 |         0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  3 |         0 |
+-------------+----------------+---------+-----------+----+-----------+
2023-09-12 11:52:27.50978 Successfully failed over to "postgresql2"
+ Cluster: batman (7277694203142172922) -+---------+----+-----------+
| Member      | Host           | Role    | State   | TL | Lag in MB |
+-------------+----------------+---------+---------+----+-----------+
| postgresql0 | 127.0.0.1:5432 | Replica | stopped |    |   unknown |
| postgresql1 | 127.0.0.1:5433 | Replica | running |  3 |         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 | Lag in MB | Scheduled restart         |
+-------------+----------------+---------+-----------+----+-----------+---------------------------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  5 |           | 2023-09-12T17:17:00+00:00 |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  5 |         0 | 2023-09-12T17:17:00+00:00 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  5 |         0 | 2023-09-12T17:17:00+00: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 | Lag in MB | Scheduled restart         |
+-------------+----------------+---------+-----------+----+-----------+---------------------------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  5 |           | 2023-09-12T17:17:00+00:00 |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  5 |         0 | 2023-09-12T17:17:00+00:00 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  5 |         0 | 2023-09-12T17:17:00+00:00 |
+-------------+----------------+---------+-----------+----+-----------+---------------------------+
Success: flush scheduled restart for member postgresql0
Success: flush scheduled restart for member postgresql1

Patroniの歴史

あらすじ

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

説明

patronictl history は、クラスターからのフェイルオーバーおよびスイッチオーバーイベントの履歴を表示します(存在する場合)。

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

TL

イベントが発生したPostgresタイムライン。

LSN

イベントが発生したPostgresLSN。

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'

Patroniリスト

あらすじ

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タイムライン。

Lag in MB

Patroniメンバーとそのアップストリームの間のレプリケーションラグの量(メガバイト単位)。

それに加えて、次の情報が出力に含まれる場合があります。

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 | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  5 |           |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  5 |         0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  5 |         0 |
+-------------+----------------+---------+-----------+----+-----------+

拡張列を使用して、クラスターに関する情報をわかりやすい形式で表示します。

$ patronictl -c postgres0.yml list batman -e
+ Cluster: batman (7277694203142172922) -+-----------+----+-----------+-----------------+-------------------+------+
| Member      | Host           | Role    | State     | TL | Lag in MB | Pending restart | Scheduled restart | Tags |
+-------------+----------------+---------+-----------+----+-----------+-----------------+-------------------+------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  5 |           |                 |                   |      |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  5 |         0 |                 |                   |      |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  5 |         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
  Lag in MB: 0
  Member: postgresql1
  Role: Replica
  State: streaming
  TL: 5
- Cluster: batman
  Host: 127.0.0.1:5434
  Lag in MB: 0
  Member: postgresql2
  Role: Replica
  State: streaming
  TL: 5

一時停止

あらすじ

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

Patroniクエリ

あらすじ

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=zalando 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

Patroniの再起動

あらすじ

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

説明

patronictl reinit は、Patroniクラスターのレプリカメンバーによって管理されるPostgresスタンバイインスタンスを再構築します。

パラメーター

CLUSTER_NAME

Patroniクラスターの名前。

MEMBER_NAME

Postgresインスタンスが再構築されるレプリカメンバーの名前。

複数のレプリカメンバーを指定できます。メンバーが指定されていない場合、コマンドは何も行いません。

--group

指定されたCitusグループのレプリカメンバーを再構築します。

CITUS_GROUP はCitusグループのIDです。

--wait

Postgresスタンバイノードの再初期化が完了するまで待ちます。

--force

Postgresスタンバイインスタンスを再構築するときに確認プロンプトをスキップするためのフラグ。

スクリプトに便利です。

例

Patroniクラスターのすべてのレプリカメンバーの再構築を要求し、すぐに呼び出し元に制御を返します。

$ patronictl -c postgres0.yml reinit batman postgresql1 postgresql2 --force
+ Cluster: batman (7277694203142172922) -+-----------+----+-----------+
| Member      | Host           | Role    | State     | TL | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  5 |           |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  5 |         0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  5 |         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 | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  5 |           |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  5 |         0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  5 |         0 |
+-------------+----------------+---------+-----------+----+-----------+
Success: reinitialize for member postgresql2
Waiting for reinitialize to complete on: postgresql2
Reinitialize is completed on: postgresql2

パトロニトルリロード

あらすじ

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 | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  5 |           |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  5 |         0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  5 |         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

Patroniを削除します

あらすじ

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 | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  5 |           |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  5 |         0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  5 |         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

Patroni再起動

あらすじ

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 | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  6 |           |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  6 |         0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  6 |         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 | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  6 |           |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  6 |         0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  6 |         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 | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  6 |           |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  6 |         0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  6 |         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

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

Patroni切り替え

あらすじ

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 | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  6 |           |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  6 |         0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  6 |         0 |
+-------------+----------------+---------+-----------+----+-----------+
2023-09-13 14:15:23.07497 Successfully switched over to "postgresql2"
+ Cluster: batman (7277694203142172922) -+---------+----+-----------+
| Member      | Host           | Role    | State   | TL | Lag in MB |
+-------------+----------------+---------+---------+----+-----------+
| postgresql0 | 127.0.0.1:5432 | Replica | stopped |    |   unknown |
| postgresql1 | 127.0.0.1:5433 | Replica | running |  6 |         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 | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  8 |           |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  8 |         0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  8 |         0 |
+-------------+----------------+---------+-----------+----+-----------+
2023-09-13 14:18:11.20661 Switchover scheduled
+ Cluster: batman (7277694203142172922) -+-----------+----+-----------+
| Member      | Host           | Role    | State     | TL | Lag in MB |
+-------------+----------------+---------+-----------+----+-----------+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  8 |           |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  8 |         0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  8 |         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タイムライン。

Lag in MB

Patroniメンバーとそのアップストリームの間のレプリケーションラグの量(メガバイト単位)。

それに加えて、次の情報が出力に含まれる場合があります。

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 | Lag in MB |
+---------------+----------------+---------+-----------+----+-----------+
| postgresql0   | 127.0.0.1:5432 | Leader  | running   |  8 |           |
| + postgresql1 | 127.0.0.1:5433 | Replica | streaming |  8 |         0 |
| + postgresql2 | 127.0.0.1:5434 | Replica | streaming |  8 |         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 3.1.0

patronictl とクラスター batman のすべてのメンバーのバージョンを取得します。

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

postgresql0: Patroni 3.1.0 PostgreSQL 15.2
postgresql1: Patroni 3.1.0 PostgreSQL 15.2
postgresql2: Patroni 3.1.0 PostgreSQL 15.2

patronictl と、クラスター batman のメンバー postgresql1 および postgresql2 のバージョンを取得します。

$ patronictl -c postgres0.yml version batman postgresql1 postgresql2
patronictl version 3.1.0

postgresql1: Patroni 3.1.0 PostgreSQL 15.2
postgresql2: Patroni 3.1.0 PostgreSQL 15.2