Zum Inhalt springen

patronictl

Befehlsreferenz zu Konfiguration, Syntax und Unterbefehlen von patronictl.

Patroni bietet eine Befehlszeilenschnittstelle namens patronictl , die hauptsächlich mit der REST API von Patroni und dem DCS interagiert. Sie erleichtert die Durchführung von Vorgängen im Cluster und lässt sich sowohl manuell als auch in Skripten einfach verwenden.


Konfiguration

patronictl verwendet 3 Abschnitte der Konfiguration:

  • ctl: Authentifizierung gegenüber der REST API von Patroni und Prüfung der Serveridentität. Weitere Einzelheiten finden sich unter ctl-Einstellungen ;
  • restapi: Authentifizierung gegenüber der REST API von Patroni und Prüfung der Serveridentität. Wird nur verwendet, wenn die ctl-Konfiguration nicht ausreicht. patronictl verwendet hauptsächlich den Abschnitt restapi.authentication (wenn ctl.authentication fehlt) und die Einstellung restapi.cafile (wenn ctl.cacert fehlt). Weitere Einzelheiten finden sich unter REST-API-Einstellungen ;
  • DCS (z. B. etcd): Verbindung und Authentifizierung gegenüber dem von Patroni verwendeten DCS.

Diese Konfigurationsoptionen können entweder aus Umgebungsvariablen oder aus einer Konfigurationsdatei stammen. Die obigen Abschnitte unter Konfiguration über Umgebungsvariablen bzw. YAML-Konfiguration erläutern, wie die Optionen über Umgebungsvariablen oder eine Konfigurationsdatei gesetzt werden können.

Die Verwendung von Umgebungsvariablen ist unkompliziert. Patronictl liest die Umgebungsvariablen und verwendet ihre Werte.

Bei Verwendung einer Konfigurationsdatei gibt es verschiedene Möglichkeiten, patronictl die gewünschte Datei mitzuteilen. Standardmäßig versucht patronictl , eine Konfigurationsdatei namens patronictl.yaml zu laden. Je nach System wird sie unter einem der folgenden Pfade erwartet:

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

Dieses Verhalten lässt sich auf folgende Weise überschreiben:

  • Die Umgebungsvariable PATRONICTL_CONFIG_FILE auf den Pfad einer eigenen Konfigurationsdatei setzen;
  • Dem Befehlszeilenargument -c / --config-file von patronictl den Pfad einer eigenen Konfigurationsdatei übergeben.
Hinweis

Wenn patronictl auf demselben Host wie der Daemon patroni ausgeführt wird, kann dieselbe Konfigurationsdatei verwendet werden, sofern sie alle von patronictl benötigten Konfigurationsabschnitte enthält.


Verwendung

patronictl bietet mehrere praktische Operationen. Dieser Abschnitt beschreibt sie im Einzelnen.

Vor der Beschreibung der einzelnen Unterbefehle von patronictl folgt eine Übersicht der Befehlszeilenargumente von patronictl selbst:

-c / --config-file
Wie bereits erläutert, wird damit der Pfad zu einer Konfigurationsdatei für patronictl angegeben.

-d / --dcs-url / --dcs
Eine Verbindungszeichenfolge für den von Patroni verwendeten DCS angeben.

Dieses Argument kann die DCS- und namespace-Einstellungen aus der Konfiguration von patronictl überschreiben oder sie festlegen, falls sie dort fehlen.

Der Wert sollte das Format DCS://HOST:PORT/NAMESPACE haben, z. B. etcd3://localhost:2379/service, um eine Verbindung zu etcd v3 auf localhost herzustellen, wobei der Patroni-Cluster im Namensraum service gespeichert ist. Jeder im Argument fehlende Teil wird durch den Wert aus der Konfiguration oder den Standardwert ersetzt.

-k / --insecure
Flag zum Überspringen der Prüfung des SSL-Zertifikats des REST-API-Servers.

Dies ist das Aufrufschema für einen Befehl von patronictl :

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

Für das Aufrufschema gilt folgende Syntax:

  • Optionen in eckigen Klammern sind optional;
  • Optionen in geschweiften Klammern bedeuten, dass eine Option aus der Menge gewählt wird;
  • Optionen mit [, ... ] können mehrfach angegeben werden;
  • Angaben in Großbuchstaben stehen für Literale, denen ein Wert zugewiesen werden sollte.

Dieselbe Syntax wird in den folgenden Unterabschnitten bei der Beschreibung der Unterbefehle von patronictl verwendet. Die dortigen Aufrufschemata der Unterbefehle ersetzen jeweils SUBCOMMAND im obigen Aufrufschema.

Die folgenden Unterabschnitte beschreiben alle von patronictl implementierten Befehle. Für die Beispiele werden die Konfigurationsdateien aus dem GitHub-Repository von Patroni verwendet (postgres0.yml, postgres1.yml und postgres2.yml).

patronictl demote-cluster

Aufrufschema

demote-cluster
  [ CLUSTER_NAME ]
  [ --host HOST ]
  [ --port PORT ]
  [ --restore-command RESTORE_COMMAND ]
  [ --primary-slot-name PRIMARY_SLOT_NAME ]
  [ --force ]

Beschreibung

patronictl demote-cluster wandelt einen regulären Patroni-Cluster in einen Standby-Cluster um.

Der Befehl ergänzt die dynamische Konfiguration um einen Abschnitt standby_cluster, der aus den angegebenen Verbindungsoptionen für den entfernten Primärserver erstellt wird. Anschließend wartet er, bis der Leader als Standby-Leader läuft. Vor der Konfigurationsänderung gibt er die aktuelle Cluster-Topologie aus. Eine Bestätigung fordert er an, sofern --force nicht verwendet wird.

Mindestens eine der Optionen --host, --port oder --restore-command muss angegeben werden.

Parameter

CLUSTER_NAME: Name des Patroni-Clusters.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration scope zu lesen, sofern sie vorhanden ist.

--host: Adresse des entfernten Knotens.

--port: Port des entfernten Knotens.

--restore-command: Befehl zur Wiederherstellung von WAL-Einträgen vom entfernten Primärserver.

--primary-slot-name: Name des Replikationsslots auf dem entfernten Knoten, der für die Replikation verwendet werden soll.

--force: Flag zum Überspringen der Bestätigungsabfragen beim Herabstufen des Clusters.

Nützlich für Skripte.

Beispiele

Den Cluster zu einem Standby-Cluster herabstufen, der einem entfernten Primärserver-Endpunkt folgt:

$ patronictl -c postgres0.yml demote-cluster batman --host 192.0.2.10 --port 5432 --primary-slot-name batman --force

patronictl dsn

Aufrufschema

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

Beschreibung

patronictl dsn ermittelt die Verbindungszeichenfolge für ein Mitglied des Patroni-Clusters.

Wenn mehrere Mitglieder den Parametern dieses Befehls entsprechen, wird eines davon ausgewählt, wobei der Primärserver Vorrang hat.

Parameter

CLUSTER_NAME: Name des Patroni-Clusters.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration scope zu lesen, sofern sie vorhanden ist.

-r / --role
Ein Mitglied mit der angegebenen Rolle auswählen.

Die Rolle kann einen der folgenden Werte haben:

  • leader: der Leader eines regulären Patroni-Clusters oder eines Patroni-Standby-Clusters; oder
  • primary: der Leader eines regulären Patroni-Clusters; oder
  • standby-leader: der Leader eines Patroni-Standby-Clusters; oder
  • replica: ein Replikat eines Patroni-Clusters; oder
  • standby: entspricht replica; oder
  • any: beliebige Rolle. Entspricht dem Weglassen dieses Parameters; oder

-m / --member
Ein Mitglied des Clusters mit dem angegebenen Namen auswählen.

MEMBER_NAME ist der Name des Mitglieds.

--group
Ein Mitglied auswählen, das zur angegebenen Citus-Gruppe gehört.

CITUS_GROUP ist die ID der Citus-Gruppe.

Beispiele

DSN des Primärservers abrufen:

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

DSN des Knotens namens postgresql1 abrufen:

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

patronictl edit-config

Aufrufschema

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

Beschreibung

patronictl edit-config ändert die dynamische Konfiguration des Clusters und aktualisiert damit den DCS.

Hinweis

Beim Aufruf über ein TTY versucht der Befehl, einen Diff der dynamischen Konfiguration mit einem Pager anzuzeigen. Standardmäßig versucht er, less oder more zu verwenden. Für einen anderen Pager die Umgebungsvariable PAGER auf das gewünschte Programm setzen.

Parameter

CLUSTER_NAME: Name des Patroni-Clusters.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration scope zu lesen, sofern sie vorhanden ist.

--group
Die dynamische Konfiguration der angegebenen Citus-Gruppe ändern.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration citus.group zu lesen, sofern sie vorhanden ist.

CITUS_GROUP ist die ID der Citus-Gruppe.

-q / --quiet
Flag zum Überspringen der Anzeige des Konfigurations-Diffs.

-s / --set
Eine bestimmte dynamische Konfigurationsoption auf den angegebenen Wert setzen.

CONFIG ist der Pfad der dynamischen Konfiguration im YAML-Baum, dessen Ebenen durch . verbunden sind.

VALUE ist der Wert für CONFIG. Bei null wird CONFIG aus der dynamischen Konfiguration entfernt.

-p / --pg
Eine bestimmte dynamische Postgres-Konfigurationsoption auf den angegebenen Wert setzen.

Dies ist im Wesentlichen eine Kurzform für -s / --set, bei der CONFIG das Präfix postgresql.parameters. erhält.

PG_CONFIG ist der Name der zu setzenden Postgres-Konfigurationsoption.

PG_VALUE ist der Wert für PG_CONFIG. Bei null wird PG_CONFIG aus der dynamischen Konfiguration entfernt.

--apply
Die dynamische Konfiguration aus der angegebenen Datei anwenden.

Dies entspricht der Angabe mehrerer Optionen -s / --set, einer für jede Konfigurationsoption aus CONFIG_FILE.

CONFIG_FILE ist der Pfad zu einer Datei mit der anzuwendenden dynamischen Konfiguration im YAML-Format. Zum Lesen aus stdin den Wert - verwenden.

--replace
Die dynamische Konfiguration im DCS durch die dynamische Konfiguration aus der angegebenen Datei ersetzen.

CONFIG_FILE ist der Pfad zu einer Datei mit der neuen dynamischen Konfiguration im YAML-Format, die wirksam werden soll. Zum Lesen aus stdin den Wert - verwenden.

--force
Flag zum Überspringen der Bestätigungsabfragen beim Ändern der dynamischen Konfiguration.

Nützlich für Skripte.

Beispiele

Den Postgres-GUC max_connections ändern:

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

Die Einstellungen loop_wait und ttl ändern:

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

Die Einstellung maximum_lag_on_failover aus der dynamischen Konfiguration entfernen:

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

Configuration changed

patronictl failover

Aufrufschema

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

Beschreibung

patronictl failover führt ein manuelles Failover im Cluster durch.

Der Befehl ist für nicht funktionsfähige Cluster vorgesehen, z. B. wenn:

  • kein Leader vorhanden ist; oder
  • in einem synchronen Cluster kein synchroner Standby verfügbar ist.

Er ermöglicht bei aktiviertem synchronem Modus auch ein Failover zu einem asynchronen Knoten.

Hinweis

patronictl failover kann auch in einem funktionsfähigen Cluster ausgeführt werden. Für diese Fälle wird jedoch patronictl switchover empfohlen.

Warnung

Das Auslösen eines Failovers kann zu Datenverlust führen, je nachdem, wie aktuell das hochgestufte Replikat im Vergleich zum Primärserver ist.

Parameter

CLUSTER_NAME: Name des Patroni-Clusters.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration scope zu lesen, sofern sie vorhanden ist.

--group
Ein Failover in der angegebenen Citus-Gruppe durchführen.

CITUS_GROUP ist die ID der Citus-Gruppe.

--candidate
Der Knoten, der beim Failover hochgestuft werden soll.

CANDIDATE_NAME ist der Name des hochzustufenden Knotens.

--force
Flag zum Überspringen der Bestätigungsabfragen bei der Durchführung des Failovers.

Nützlich für Skripte.

Beispiele

Ein Failover zum Knoten postgresql2 durchführen:

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

patronictl flush

Aufrufschema

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

Beschreibung

patronictl flush verwirft geplante Ereignisse, sofern vorhanden.

Parameter

CLUSTER_NAME
Name des Patroni-Clusters.

MEMBER_NAME
Geplante Ereignisse für die angegebenen Patroni-Mitglieder verwerfen.

Es können mehrere Mitglieder angegeben werden. Ohne Angabe von Mitgliedern werden alle berücksichtigt.

Hinweis

Wird nur beim Verwerfen geplanter Neustarts verwendet.

restart
Geplante Neustarts verwerfen.

switchover
Geplanten Switchover verwerfen.

--group
Geplante Ereignisse der angegebenen Citus-Gruppe verwerfen.

CITUS_GROUP ist die ID der Citus-Gruppe.

-r / --role
Geplante Ereignisse für Mitglieder mit der angegebenen Rolle verwerfen.

Die Rolle kann einen der folgenden Werte haben:

  • leader: der Leader eines regulären Patroni-Clusters oder eines Patroni-Standby-Clusters; oder
  • primary: der Leader eines regulären Patroni-Clusters; oder
  • standby-leader: der Leader eines Patroni-Standby-Clusters; oder
  • replica: ein Replikat eines Patroni-Clusters; oder
  • standby: entspricht replica; oder
  • any: beliebige Rolle. Entspricht dem Weglassen dieses Parameters.
Hinweis

Wird nur beim Verwerfen geplanter Neustarts verwendet.

--force
Flag zum Überspringen der Bestätigungsabfragen beim Verwerfen geplanter Ereignisse.

Nützlich für Skripte.

Beispiele

Einen geplanten Switchover verwerfen:

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

Den geplanten Neustart aller Standby-Knoten verwerfen:

$ 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

Den geplanten Neustart der Knoten postgresql0 und postgresql1 verwerfen:

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

patronictl history

Aufrufschema

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

Beschreibung

patronictl history zeigt die Historie der Failover- und Switchover-Ereignisse des Clusters, sofern vorhanden.

Die Ausgabe enthält folgende Informationen:

TL
Postgres-Timeline, auf der das Ereignis auftrat.

LSN
Postgres-LSN, an der das Ereignis auftrat.

Reason
Grund aus der Postgres-Datei .history.

Timestamp
Zeitpunkt des Ereignisses.

New Leader
Patroni-Mitglied, das bei diesem Ereignis hochgestuft wurde.

Parameter

CLUSTER_NAME
Name des Patroni-Clusters.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration scope zu lesen, sofern sie vorhanden ist.

--group
Die Ereignishistorie der angegebenen Citus-Gruppe anzeigen.

CITUS_GROUP ist die ID der Citus-Gruppe.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration citus.group zu lesen, sofern sie vorhanden ist.

-f / --format
Formatierung der Ereignisliste in der Ausgabe.

Das Format kann einen der folgenden Werte haben:

  • pretty: gibt die Historie als formatierte Tabelle aus; oder
  • tsv: gibt die Historie tabellarisch aus, mit durch \t getrennten Spalten; oder
  • json: gibt die Historie im JSON-Format aus; oder
  • yaml: gibt die Historie im YAML-Format aus.

Der Standardwert ist pretty.

Beispiele

Die Ereignishistorie anzeigen:

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

Die Ereignishistorie im YAML-Format anzeigen:

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

patronictl list

Aufrufschema

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

Beschreibung

patronictl list zeigt Informationen zum Patroni-Cluster und seinen Mitgliedern.

Die Ausgabe enthält folgende Informationen:

Cluster
Name des Patroni-Clusters.

Member
Name des Patroni-Mitglieds.

Host
Host, auf dem sich das Mitglied befindet.

Role
Aktuelle Rolle des Mitglieds.

Mögliche Werte sind:

  • Leader: der aktuelle Leader eines regulären Patroni-Clusters; oder
  • Standby Leader: der aktuelle Leader eines Patroni-Standby-Clusters; oder
  • Sync Standby: ein synchroner Standby eines Patroni-Clusters mit aktiviertem synchronem Modus; oder
  • Replica: ein regulärer Standby eines Patroni-Clusters.

State
Aktueller Zustand von Postgres im Patroni-Mitglied.

Einige Beispiele für mögliche Zustände:

  • running: wenn Postgres derzeit läuft;
  • streaming: bei einem Replikat, wenn Postgres derzeit WAL per Streaming vom Primärserver empfängt;
  • in archive recovery: bei einem Replikat, wenn Postgres derzeit WAL aus dem Archiv abruft;
  • stopped: wenn Postgres heruntergefahren wurde;
  • crashed: wenn Postgres abgestürzt ist.

TL
Aktuelle Postgres-Timeline im Patroni-Mitglied.

Receive LSN
Die letzte Write-Ahead-Log-Position, die das Mitglied per Streaming-Replikation empfangen und auf den Datenträger synchronisiert hat (pg_catalog.pg_last_(xlog|wal)_receive_(location|lsn)()).

Receive Lag
Replikationsrückstand zwischen der Position Receive LSN des Mitglieds und seiner Replikationsquelle in MB.

Replay LSN
Die letzte Write-Ahead-Log-Position, die bei der Recovery des Mitglieds wiedergegeben wurde (pg_catalog.pg_last_(xlog|wal)_replay_(location|lsn)()).

Replay Lag
Replikationsrückstand zwischen der Position Replay LSN des Mitglieds und seiner Replikationsquelle in MB.

Darüber hinaus kann die Ausgabe folgende Informationen enthalten:

System identifier
Postgres-Systemkennung.

Hinweis

Wird im Tabellenkopf angezeigt.

Wird nur beim Ausgabeformat pretty angezeigt.

Group
ID der Citus-Gruppe.

Hinweis

Wird im Tabellenkopf angezeigt.

Wird nur bei einem Citus-Cluster angezeigt.

Pending restart
* zeigt an, dass der Knoten einen Neustart benötigt, damit bestimmte Postgres-Konfigurationseinstellungen wirksam werden. Ein leerer Wert zeigt an, dass der Knoten keinen Neustart benötigt.

Hinweis

Wird als Attribut des Mitglieds angezeigt.

Wird angezeigt, wenn:

  • die Ausgabe im Format pretty oder tsv erfolgt und die erweiterte Ausgabe aktiviert ist; oder
  • der Knoten einen Neustart benötigt.

Scheduled restart
Zeitstempel des geplanten Neustarts der vom Patroni-Mitglied verwalteten Postgres-Instanz. Ein leerer Wert zeigt an, dass für das Mitglied kein Neustart geplant ist.

Hinweis

Wird als Attribut des Mitglieds angezeigt.

Wird angezeigt, wenn:

  • die Ausgabe im Format pretty oder tsv erfolgt und die erweiterte Ausgabe aktiviert ist; oder
  • für den Knoten ein Neustart geplant ist.

Tags
Enthält die für das Patroni-Mitglied gesetzten Tags. Ein leerer Wert zeigt an, dass entweder keine Tags konfiguriert wurden oder diese auf die Standardwerte gesetzt sind.

Hinweis

Wird als Attribut des Mitglieds angezeigt.

Wird angezeigt, wenn:

  • die Ausgabe im Format pretty oder tsv erfolgt und die erweiterte Ausgabe aktiviert ist; oder
  • der Knoten benutzerdefinierte Tags oder Standard-Tags mit abweichenden Werten hat.

Scheduled switchover
Zeitstempel des geplanten Switchovers für den Patroni-Cluster, sofern vorhanden.

Hinweis

Wird am Tabellenende angezeigt.

Wird nur angezeigt, wenn ein Switchover geplant ist und das Ausgabeformat pretty verwendet wird.

Maintenance mode

Ob die Cluster-Überwachung derzeit pausiert ist.

Hinweis

Wird am Tabellenende angezeigt.

Wird nur angezeigt, wenn der Cluster pausiert ist und das Ausgabeformat pretty verwendet wird.

Parameter

CLUSTER_NAME
Name des Patroni-Clusters.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration scope zu lesen, sofern sie vorhanden ist.

--group
Informationen zu Mitgliedern der angegebenen Citus-Gruppe anzeigen.

CITUS_GROUP ist die ID der Citus-Gruppe.

-e / --extended
Erweiterte Informationen anzeigen.

Die Attribute Pending restart, Scheduled restart und Tags auch dann anzeigen, wenn ihr Wert leer ist.

Hinweis

Gilt nur für die Ausgabeformate pretty und tsv.

-t / --timestamp
Vor den Informationen zum Cluster und seinen Mitgliedern einen Zeitstempel ausgeben.

-f / --format
Formatierung der Liste der Clustermitglieder in der Ausgabe.

Das Format kann einen der folgenden Werte haben:

  • pretty: gibt die Clustermitglieder als formatierte Tabelle aus; oder
  • tsv: gibt die Clustermitglieder tabellarisch aus, mit durch \t getrennten Spalten; oder
  • json: gibt die Clustermitglieder im JSON-Format aus; oder
  • yaml: gibt die Clustermitglieder im YAML-Format aus.

Der Standardwert ist pretty.

-W
Informationen automatisch alle 2 Sekunden aktualisieren.

-w / --watch
Informationen automatisch im angegebenen Intervall aktualisieren.

TIME ist das Aktualisierungsintervall in Sekunden.

Beispiele

Informationen zum Cluster als formatierte Tabelle anzeigen:

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

Informationen zum Cluster als formatierte Tabelle mit erweiterten Spalten anzeigen:

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

Informationen zum Cluster im YAML-Format mit Ausführungszeitstempel anzeigen:

$ patronictl -c postgres0.yml list batman -f yaml -t
2023-09-12 13:30:48
- Cluster: batman
  Host: 127.0.0.1:5432
  Member: postgresql0
  Role: Leader
  State: running
  TL: 5
- Cluster: batman
  Host: 127.0.0.1:5433
  Receive LSN: 0/40004E8
  Receive Lag: 0
  Replay LSN: 0/40004E8
  Replay Lag: 0
  Member: postgresql1
  Role: Replica
  State: streaming
  TL: 5
- Cluster: batman
  Host: 127.0.0.1:5434
  Receive LSN: 0/40004E8
  Receive Lag: 0
  Replay LSN: 0/40004E8
  Replay Lag: 0
  Member: postgresql2
  Role: Replica
  State: streaming
  TL: 5

patronictl pause

Aufrufschema

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

Beschreibung

patronictl pause versetzt den Patroni-Cluster vorübergehend in den Wartungsmodus und deaktiviert automatisches Failover.

Parameter

CLUSTER_NAME
Name des Patroni-Clusters.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration scope zu lesen, sofern sie vorhanden ist.

--group
Die angegebene Citus-Gruppe pausieren.

CITUS_GROUP ist die ID der Citus-Gruppe.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration citus.group zu lesen, sofern sie vorhanden ist.

--wait
Warten, bis alle Patroni-Mitglieder pausiert sind, bevor die Kontrolle an den Aufrufer zurückgegeben wird.

Beispiele

Den Cluster in den Wartungsmodus versetzen und warten, bis alle Knoten pausiert sind:

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

patronictl promote-cluster

Aufrufschema

promote-cluster
  [ CLUSTER_NAME ]
  [ --force ]

Beschreibung

patronictl promote-cluster wandelt einen Standby-Cluster in einen regulären Patroni-Cluster um.

Der Befehl entfernt den Abschnitt standby_cluster aus der dynamischen Konfiguration und wartet, bis der Leader als Primärserver läuft. Vor der Konfigurationsänderung gibt er die aktuelle Cluster-Topologie aus. Eine Bestätigung fordert er an, sofern --force nicht verwendet wird.

Parameter

CLUSTER_NAME: Name des Patroni-Clusters.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration scope zu lesen, sofern sie vorhanden ist.

--force: Flag zum Überspringen der Bestätigungsabfragen beim Hochstufen des Clusters.

Nützlich für Skripte.

Beispiele

Den Standby-Cluster hochstufen, sodass er als regulärer Patroni-Cluster läuft:

$ patronictl -c postgres0.yml promote-cluster batman --force

patronictl query

Aufrufschema

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 } ]

Beschreibung

patronictl query führt einen SQL-Befehl oder ein Skript auf einem Mitglied des Patroni-Clusters aus.

Parameter

CLUSTER_NAME
Name des Patroni-Clusters.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration scope zu lesen, sofern sie vorhanden ist.

--group
Die angegebene Citus-Gruppe abfragen.

CITUS_GROUP ist die ID der Citus-Gruppe.

-r / --role
Ein Mitglied mit der angegebenen Rolle auswählen.

Die Rolle kann einen der folgenden Werte haben:

  • leader: der Leader eines regulären Patroni-Clusters oder eines Patroni-Standby-Clusters; oder
  • primary: der Leader eines regulären Patroni-Clusters; oder
  • standby-leader: der Leader eines Patroni-Standby-Clusters; oder
  • replica: ein Replikat eines Patroni-Clusters; oder
  • standby: entspricht replica; oder
  • any: beliebige Rolle. Entspricht dem Weglassen dieses Parameters.

-m / --member
Ein Mitglied mit dem angegebenen Namen auswählen.

MEMBER_NAME ist der Name des auszuwählenden Mitglieds.

-d / --dbname
Datenbank, zu der eine Verbindung hergestellt und auf der die Abfrage ausgeführt wird.

DBNAME ist der Name der Datenbank. Ohne Angabe wird USERNAME verwendet.

-U / --username
Benutzer für die Verbindung zur Datenbank.

USERNAME ist der Name des Benutzers. Ohne Angabe wird der Betriebssystembenutzer verwendet, der patronictl query ausführt.

--password
Das Passwort des Benutzers abfragen, der die Verbindung herstellt.

Da Patroni libpq verwendet, kann alternativ eine Datei ~/.pgpass erstellt oder die Umgebungsvariable PGPASSWORD gesetzt werden.

--format
Formatierung der Abfrageausgabe.

Das Format kann einen der folgenden Werte haben:

  • pretty: gibt das Abfrageergebnis als formatierte Tabelle aus; oder
  • tsv: gibt das Abfrageergebnis tabellarisch aus, mit durch \t getrennten Spalten; oder
  • json: gibt das Abfrageergebnis im JSON-Format aus; oder
  • yaml: gibt das Abfrageergebnis im YAML-Format aus.

Der Standardwert ist tsv.

-f / --file
Eine Datei als Quelle der auszuführenden Abfragebefehle verwenden.

FILE_NAME ist der Pfad zur Quelldatei.

-c / --command
Den angegebenen SQL-Befehl als Abfrage ausführen.

SQL_COMMAND ist der auszuführende SQL-Befehl.

--delimiter
Das Trennzeichen für die Ausgabe im Format tsv; ohne Angabe wird \t verwendet.

-W
Die Abfrage automatisch alle 2 Sekunden erneut ausführen.

-w / --watch
Die Abfrage automatisch im angegebenen Intervall erneut ausführen.

TIME ist das Intervall zwischen den Ausführungen in Sekunden.

Beispiele

Einen SQL-Befehl als Benutzer postgres ausführen und dessen Passwort abfragen:

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

Einen SQL-Befehl als Benutzer postgres ausführen und das Passwort aus der Umgebungsvariable von libpq beziehen:

$ PGPASSWORD=patroni patronictl -c postgres0.yml query batman -U postgres -c "SELECT now()"
now
2023-09-12 18:11:37.639500+00:00

Einen SQL-Befehl alle 2 Sekunden ausführen und das Ergebnis im Format pretty ausgeben:

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

Einen SQL-Befehl auf der Datenbank test ausführen und das Ergebnis im YAML-Format ausgeben:

$ 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

Einen SQL-Befehl auf dem Mitglied postgresql2 ausführen:

$ patronictl -c postgres0.yml query batman -m postgresql2 -c "SHOW port"
port
5434

Einen SQL-Befehl auf einem beliebigen Standby ausführen:

$ patronictl -c postgres0.yml query batman -r replica -c "SHOW port"
port
5433

patronictl reinit

Aufrufschema

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

Beschreibung

patronictl reinit erstellt eine Postgres-Standby-Instanz neu, die von einem Replikatmitglied des Patroni-Clusters verwaltet wird.

Parameter

CLUSTER_NAME
Name des Patroni-Clusters.

MEMBER_NAME
Name des Replikatmitglieds, dessen Postgres-Instanz neu erstellt werden soll.

Es können mehrere Replikatmitglieder angegeben werden. Ohne Angabe von Mitgliedern führt der Befehl keine Aktion aus.

--group
Ein Replikatmitglied der angegebenen Citus-Gruppe neu erstellen.

CITUS_GROUP ist die ID der Citus-Gruppe.

--wait
Warten, bis die Neuinitialisierung der Postgres-Standby-Knoten abgeschlossen ist.

--force
Flag zum Überspringen der Bestätigungsabfragen beim Neuerstellen von Postgres-Standby-Instanzen.

Nützlich für Skripte.

--from-leader
Flag zum direkten Beziehen des Basis-Backups vom Leader.

Beispiele

Das Neuerstellen aller Replikatmitglieder des Patroni-Clusters anfordern und die Kontrolle sofort an den Aufrufer zurückgeben:

$ 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

Das Neuerstellen von postgresql2 anfordern und auf den Abschluss warten:

$ 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

Das Neuerstellen von postgresql2 anfordern und das Basis-Backup direkt vom Leader beziehen:

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

patronictl reload

Aufrufschema

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

Beschreibung

patronictl reload fordert ein Neuladen der lokalen Konfiguration für ein oder mehrere Patroni-Mitglieder an.

Dabei wird auf der verwalteten Postgres-Instanz auch pg_ctl reload ausgelöst, selbst wenn sich nichts geändert hat.

Parameter

CLUSTER_NAME
Name des Patroni-Clusters.

MEMBER_NAME
Das Neuladen der lokalen Konfiguration für die angegebenen Patroni-Mitglieder anfordern.

Es können mehrere Mitglieder angegeben werden. Ohne Angabe von Mitgliedern werden alle berücksichtigt.

--group
Ein Neuladen der Mitglieder der angegebenen Citus-Gruppe anfordern.

CITUS_GROUP ist die ID der Citus-Gruppe.

-r / --role
Mitglieder mit der angegebenen Rolle auswählen.

Die Rolle kann einen der folgenden Werte haben:

  • leader: der Leader eines regulären Patroni-Clusters oder eines Patroni-Standby-Clusters; oder
  • primary: der Leader eines regulären Patroni-Clusters; oder
  • standby-leader: der Leader eines Patroni-Standby-Clusters; oder
  • replica: ein Replikat eines Patroni-Clusters; oder
  • standby: entspricht replica; oder
  • any: beliebige Rolle. Entspricht dem Weglassen dieses Parameters.

--force
Flag zum Überspringen der Bestätigungsabfragen beim Anfordern eines Neuladens der lokalen Konfiguration.

Nützlich für Skripte.

Beispiele

Das Neuladen der lokalen Konfiguration aller Mitglieder des Patroni-Clusters anfordern:

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

patronictl remove

Aufrufschema

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

Beschreibung

patronictl remove entfernt die Informationen zum Cluster aus dem DCS.

Dies ist ein interaktiver Vorgang.

Warnung

Dieser Vorgang zerstört die Informationen zum Patroni-Cluster im DCS.

Parameter

CLUSTER_NAME
Name des Patroni-Clusters.

--group
Die Informationen zum Patroni-Cluster entfernen, die zur angegebenen Citus-Gruppe gehören.

CITUS_GROUP ist die ID der Citus-Gruppe.

-f / --format
Formatierung der Mitgliederliste in der Ausgabe bei der Bestätigungsabfrage.

Das Format kann einen der folgenden Werte haben:

  • pretty: gibt die Mitglieder als formatierte Tabelle aus; oder
  • tsv: gibt die Mitglieder tabellarisch aus, mit durch \t getrennten Spalten; oder
  • json: gibt die Mitglieder im JSON-Format aus; oder
  • yaml: gibt die Mitglieder im YAML-Format aus.

Der Standardwert ist pretty.

Beispiele

Informationen zum Patroni-Cluster batman aus dem DCS entfernen:

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

patronictl restart

Aufrufschema

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 ]

Beschreibung

patronictl restart fordert einen Neustart der Postgres-Instanz an, die von einem Mitglied des Patroni-Clusters verwaltet wird.

Der Neustart kann sofort ausgeführt oder für später geplant werden.

Parameter

CLUSTER_NAME
Name des Patroni-Clusters.

--group
Den zur angegebenen Citus-Gruppe gehörenden Patroni-Cluster neu starten.

CITUS_GROUP ist die ID der Citus-Gruppe.

-r / --role
Mitglieder mit der angegebenen Rolle auswählen.

Die Rolle kann einen der folgenden Werte haben:

  • leader: der Leader eines regulären Patroni-Clusters oder eines Patroni-Standby-Clusters; oder
  • primary: der Leader eines regulären Patroni-Clusters; oder
  • standby-leader: der Leader eines Patroni-Standby-Clusters; oder
  • replica: ein Replikat eines Patroni-Clusters; oder
  • standby: entspricht replica; oder
  • any: beliebige Rolle. Entspricht dem Weglassen dieses Parameters.

--any
Einen einzelnen, zufällig ausgewählten Knoten aus denjenigen neu starten, die den angegebenen Filtern entsprechen.

--pg-version
Nur Mitglieder auswählen, deren verwaltete Postgres-Instanz eine ältere als die angegebene Version hat.

PG_VERSION ist die zum Vergleich herangezogene Postgres-Version.

--pending
Nur Mitglieder auswählen, die als Pending restart markiert sind.

--timeout: Den Neustart abbrechen, wenn er länger als die angegebene Wartezeit dauert, und ein Failover zu einem Replikat durchführen, wenn das Problem auf dem Primärserver auftritt.

TIMEOUT ist die Wartezeit in Sekunden, bevor der Neustart abgebrochen wird.

--scheduled
Einen Neustart zum angegebenen Zeitpunkt planen.

TIMESTAMP ist der Zeitstempel, zu dem der Neustart erfolgen soll. Er ist in einem eindeutigen Format anzugeben, vorzugsweise mit Zeitzone. Mit dem Literal now kann der Neustart auch sofort ausgeführt werden.

--force
Flag zum Überspringen der Bestätigungsabfragen beim Anfordern von Neustarts.

Nützlich für Skripte.

Beispiele

Alle Mitglieder des Clusters sofort neu starten:

$ 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

Ein zufällig ausgewähltes Mitglied des Clusters sofort neu starten:

$ 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

Einen Neustart für 2023-09-13T18:00-03:00 planen:

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

patronictl resume

Aufrufschema

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

Beschreibung

patronictl resume beendet den Wartungsmodus des Patroni-Clusters und aktiviert automatisches Failover wieder.

Parameter

CLUSTER_NAME
Name des Patroni-Clusters.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration scope zu lesen, sofern sie vorhanden ist.

--group
Den Betrieb der angegebenen Citus-Gruppe fortsetzen.

CITUS_GROUP ist die ID der Citus-Gruppe.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration citus.group zu lesen, sofern sie vorhanden ist.

--wait
Warten, bis die Pause für alle Patroni-Mitglieder aufgehoben ist, bevor die Kontrolle an den Aufrufer zurückgegeben wird.

Beispiele

Den Wartungsmodus des Clusters beenden:

$ 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

Aufrufschema

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

Beschreibung

patronictl show-config zeigt die im DCS gespeicherte dynamische Konfiguration des Clusters.

Parameter

CLUSTER_NAME
Name des Patroni-Clusters.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration scope zu lesen, sofern sie vorhanden ist.

--group
Die dynamische Konfiguration der angegebenen Citus-Gruppe anzeigen.

CITUS_GROUP ist die ID der Citus-Gruppe.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration citus.group zu lesen, sofern sie vorhanden ist.

Beispiele

Die dynamische Konfiguration des Clusters batman anzeigen:

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

patronictl switchover

Aufrufschema

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

Beschreibung

patronictl switchover führt einen Switchover im Cluster durch.

Der Befehl ist für funktionsfähige Cluster vorgesehen, z. B. wenn:

  • ein Leader vorhanden ist;
  • in einem synchronen Cluster synchrone Standbys verfügbar sind.
Hinweis

Bei einem nicht funktionsfähigen Cluster kommt stattdessen möglicherweise patronictl failover infrage.

Parameter

CLUSTER_NAME
Name des Patroni-Clusters.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration scope zu lesen, sofern sie vorhanden ist.

--group
Einen Switchover in der angegebenen Citus-Gruppe durchführen.

CITUS_GROUP ist die ID der Citus-Gruppe.

--leader / --primary
Den Leader angeben, der beim Switchover herabgestuft werden soll.

LEADER_NAME sollte mit dem Namen des aktuellen Leaders im Cluster übereinstimmen.

--candidate
Der Knoten, der beim Switchover hochgestuft werden und die Rolle des Primärservers übernehmen soll.

CANDIDATE_NAME ist der Name des hochzustufenden Knotens.

--scheduled
Einen Switchover zum angegebenen Zeitpunkt planen.

TIMESTAMP ist der Zeitstempel, zu dem der Switchover erfolgen soll. Er ist in einem eindeutigen Format anzugeben, vorzugsweise mit Zeitzone. Mit dem Literal now kann der Switchover auch sofort ausgeführt werden.

--force
Flag zum Überspringen der Bestätigungsabfragen bei der Durchführung des Switchovers.

Nützlich für Skripte.

Beispiele

Einen Switchover zum Knoten postgresql2 durchführen:

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

Einen Switchover zwischen postgresql0 und postgresql2 für 2023-09-13T18:00:00-03:00 planen:

$ patronictl -c postgres0.yml switchover batman --leader postgresql0 --candidate postgresql2 --scheduled 2023-09-13T18:00-03:00 --force
Current cluster topology
+ Cluster: batman (7277694203142172922) -+-----------+----+-------------+-----+------------+-----+
| Member      | Host           | Role    | State     | TL | Receive LSN | Lag | Replay LSN | Lag |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  8 |             |     |            |     |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  8 |   0/40004E8 |   0 |  0/40004E8 |   0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  8 |   0/40004E8 |   0 |  0/40004E8 |   0 |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
2023-09-13 14:18:11.20661 Switchover scheduled
+ Cluster: batman (7277694203142172922) -+-----------+----+-------------+-----+------------+-----+
| Member      | Host           | Role    | State     | TL | Receive LSN | Lag | Replay LSN | Lag |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
| postgresql0 | 127.0.0.1:5432 | Leader  | running   |  8 |             |     |            |     |
| postgresql1 | 127.0.0.1:5433 | Replica | streaming |  8 |   0/40004E8 |   0 |  0/40004E8 |   0 |
| postgresql2 | 127.0.0.1:5434 | Replica | streaming |  8 |   0/40004E8 |   0 |  0/40004E8 |   0 |
+-------------+----------------+---------+-----------+----+-------------+-----+------------+-----+
Switchover scheduled at: 2023-09-13T18:00:00-03:00
                    from: postgresql0
                    to: postgresql2

patronictl topology

Aufrufschema

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

Beschreibung

patronictl topology zeigt Informationen zum Patroni-Cluster und seinen Mitgliedern als Baumansicht.

Die Ausgabe enthält folgende Informationen:

Cluster
Name des Patroni-Clusters.

Hinweis

Wird im Tabellenkopf angezeigt.

System identifier
Postgres-Systemkennung.

Hinweis

Wird im Tabellenkopf angezeigt.

Member
Name des Patroni-Mitglieds.

Hinweis

Diese Spalte zeigt die Mitglieder als Baumansicht ihrer Replikationsverbindungen.

Host
Host, auf dem sich das Mitglied befindet.

Role
Aktuelle Rolle des Mitglieds.

Mögliche Werte sind:

  • Leader: der aktuelle Leader eines regulären Patroni-Clusters; oder
  • Standby Leader: der aktuelle Leader eines Patroni-Standby-Clusters; oder
  • Sync Standby: ein synchroner Standby eines Patroni-Clusters mit aktiviertem synchronem Modus; oder
  • Replica: ein regulärer Standby eines Patroni-Clusters.

State
Aktueller Zustand von Postgres im Patroni-Mitglied.

Einige Beispiele für mögliche Zustände:

  • running: wenn Postgres derzeit läuft;
  • streaming: bei einem Replikat, wenn Postgres derzeit WAL per Streaming vom Primärserver empfängt;
  • in archive recovery: bei einem Replikat, wenn Postgres derzeit WAL aus dem Archiv abruft;
  • stopped: wenn Postgres heruntergefahren wurde;
  • crashed: wenn Postgres abgestürzt ist.

TL
Aktuelle Postgres-Timeline im Patroni-Mitglied.

Receive LSN
Die letzte Write-Ahead-Log-Position, die das Mitglied per Streaming-Replikation empfangen und auf den Datenträger synchronisiert hat (pg_catalog.pg_last_(xlog|wal)_receive_(location|lsn)()).

Receive Lag
Replikationsrückstand zwischen der Position Receive LSN des Mitglieds und seiner Replikationsquelle in MB.

Replay LSN
Die letzte Write-Ahead-Log-Position, die bei der Recovery des Mitglieds wiedergegeben wurde (pg_catalog.pg_last_(xlog|wal)_replay_(location|lsn)()).

Replay Lag
Replikationsrückstand zwischen der Position Replay LSN des Mitglieds und seiner Replikationsquelle in MB.

Darüber hinaus kann die Ausgabe folgende Informationen enthalten:

Group
ID der Citus-Gruppe.

Hinweis

Wird im Tabellenkopf angezeigt.

Wird nur bei einem Citus-Cluster angezeigt.

Pending restart
* zeigt an, dass der Knoten einen Neustart benötigt, damit bestimmte Postgres-Konfigurationseinstellungen wirksam werden. Ein leerer Wert zeigt an, dass der Knoten keinen Neustart benötigt.

Hinweis

Wird als Attribut des Mitglieds angezeigt.

Wird angezeigt, wenn der Knoten einen Neustart benötigt.

Scheduled restart
Zeitstempel des geplanten Neustarts der vom Patroni-Mitglied verwalteten Postgres-Instanz. Ein leerer Wert zeigt an, dass für das Mitglied kein Neustart geplant ist.

Hinweis

Wird als Attribut des Mitglieds angezeigt.

Wird angezeigt, wenn für den Knoten ein Neustart geplant ist.

Tags
Enthält die für das Patroni-Mitglied gesetzten Tags. Ein leerer Wert zeigt an, dass entweder keine Tags konfiguriert wurden oder diese auf die Standardwerte gesetzt sind.

Hinweis

Wird als Attribut des Mitglieds angezeigt.

Wird angezeigt, wenn der Knoten benutzerdefinierte Tags oder Standard-Tags mit abweichenden Werten hat.

Scheduled switchover
Zeitstempel des geplanten Switchovers für den Patroni-Cluster, sofern vorhanden.

Hinweis

Wird am Tabellenende angezeigt.

Wird nur angezeigt, wenn ein Switchover geplant ist.

Maintenance mode

Ob die Cluster-Überwachung derzeit pausiert ist.

Hinweis

Wird am Tabellenende angezeigt.

Wird nur angezeigt, wenn der Cluster pausiert ist.

Parameter

CLUSTER_NAME
Name des Patroni-Clusters.

Falls nicht angegeben, versucht patronictl , den Wert aus der Konfiguration scope zu lesen, sofern sie vorhanden ist.

--group
Informationen zu Mitgliedern der angegebenen Citus-Gruppe anzeigen.

CITUS_GROUP ist die ID der Citus-Gruppe.

-W
Informationen automatisch alle 2 Sekunden aktualisieren.

-w / --watch
Informationen automatisch im angegebenen Intervall aktualisieren.

TIME ist das Aktualisierungsintervall in Sekunden.

Beispiele

Die Topologie des Clusters batman anzeigen – postgresql1 und postgresql2 replizieren von postgresql0:

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

patronictl version

Aufrufschema

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

Beschreibung

patronictl version ermittelt die Version der Anwendung patronictl . Zusätzlich kann die Ausgabe Versionsinformationen zu Patroni-Clustern und ihren Mitgliedern enthalten.

Parameter

CLUSTER_NAME
Name des Patroni-Clusters.

MEMBER_NAME
Name des Mitglieds des Patroni-Clusters.

--group
Einen Patroni-Cluster mit der angegebenen Citus-Gruppe berücksichtigen.

CITUS_GROUP ist die ID der Citus-Gruppe.

Beispiele

Nur die Version von patronictl abrufen:

$ patronictl -c postgres0.yml version
patronictl version 4.0.0

Die Version von patronictl und aller Mitglieder des Clusters batman abrufen:

$ 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

Die Version von patronictl und der Mitglieder postgresql1 und postgresql2 des Clusters batman abrufen:

$ 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