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 Abschnittrestapi.authentication(wennctl.authenticationfehlt) und die Einstellungrestapi.cafile(wennctl.cacertfehlt). 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_FILEauf den Pfad einer eigenen Konfigurationsdatei setzen; - Dem Befehlszeilenargument
-c/--config-filevon patronictl den Pfad einer eigenen Konfigurationsdatei übergeben.
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 :
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
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 dsn
Aufrufschema
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; oderprimary: der Leader eines regulären Patroni-Clusters; oderstandby-leader: der Leader eines Patroni-Standby-Clusters; oderreplica: ein Replikat eines Patroni-Clusters; oderstandby: entsprichtreplica; oderany: 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:
DSN des Knotens namens postgresql1 abrufen:
patronictl edit-config
Aufrufschema
Beschreibung
patronictl edit-config ändert die dynamische Konfiguration des Clusters und aktualisiert damit den DCS.
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:
Die Einstellungen loop_wait und ttl ändern:
Die Einstellung maximum_lag_on_failover aus der dynamischen Konfiguration entfernen:
patronictl failover
Aufrufschema
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.
patronictl failover kann auch in einem funktionsfähigen Cluster ausgeführt werden. Für diese Fälle wird jedoch patronictl switchover empfohlen.
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 flush
Aufrufschema
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.
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; oderprimary: der Leader eines regulären Patroni-Clusters; oderstandby-leader: der Leader eines Patroni-Standby-Clusters; oderreplica: ein Replikat eines Patroni-Clusters; oderstandby: entsprichtreplica; oderany: beliebige Rolle. Entspricht dem Weglassen dieses Parameters.
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:
Den geplanten Neustart aller Standby-Knoten verwerfen:
Den geplanten Neustart der Knoten postgresql0 und postgresql1 verwerfen:
patronictl history
Aufrufschema
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; odertsv: gibt die Historie tabellarisch aus, mit durch\tgetrennten Spalten; oderjson: gibt die Historie im JSON-Format aus; oderyaml: gibt die Historie im YAML-Format aus.
Der Standardwert ist pretty.
Beispiele
Die Ereignishistorie anzeigen:
Die Ereignishistorie im YAML-Format anzeigen:
patronictl list
Aufrufschema
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; oderStandby Leader: der aktuelle Leader eines Patroni-Standby-Clusters; oderSync Standby: ein synchroner Standby eines Patroni-Clusters mit aktiviertem synchronem Modus; oderReplica: 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.
Wird im Tabellenkopf angezeigt.
Wird nur beim Ausgabeformat pretty angezeigt.
Group
ID der Citus-Gruppe.
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.
Wird als Attribut des Mitglieds angezeigt.
Wird angezeigt, wenn:
- die Ausgabe im Format
prettyodertsverfolgt 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.
Wird als Attribut des Mitglieds angezeigt.
Wird angezeigt, wenn:
- die Ausgabe im Format
prettyodertsverfolgt 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.
Wird als Attribut des Mitglieds angezeigt.
Wird angezeigt, wenn:
- die Ausgabe im Format
prettyodertsverfolgt 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.
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.
HinweisWird am Tabellenende angezeigt.
Wird nur angezeigt, wenn der Cluster pausiert ist und das Ausgabeformat
prettyverwendet 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.
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; odertsv: gibt die Clustermitglieder tabellarisch aus, mit durch\tgetrennten Spalten; oderjson: gibt die Clustermitglieder im JSON-Format aus; oderyaml: 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:
Informationen zum Cluster als formatierte Tabelle mit erweiterten Spalten anzeigen:
Informationen zum Cluster im YAML-Format mit Ausführungszeitstempel anzeigen:
patronictl pause
Aufrufschema
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 promote-cluster
Aufrufschema
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 query
Aufrufschema
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; oderprimary: der Leader eines regulären Patroni-Clusters; oderstandby-leader: der Leader eines Patroni-Standby-Clusters; oderreplica: ein Replikat eines Patroni-Clusters; oderstandby: entsprichtreplica; oderany: 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; odertsv: gibt das Abfrageergebnis tabellarisch aus, mit durch\tgetrennten Spalten; oderjson: gibt das Abfrageergebnis im JSON-Format aus; oderyaml: 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:
Einen SQL-Befehl als Benutzer postgres ausführen und das Passwort aus der Umgebungsvariable von libpq beziehen:
Einen SQL-Befehl alle 2 Sekunden ausführen und das Ergebnis im Format pretty ausgeben:
Einen SQL-Befehl auf der Datenbank test ausführen und das Ergebnis im YAML-Format ausgeben:
Einen SQL-Befehl auf dem Mitglied postgresql2 ausführen:
Einen SQL-Befehl auf einem beliebigen Standby ausführen:
patronictl reinit
Aufrufschema
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:
Das Neuerstellen von postgresql2 anfordern und auf den Abschluss warten:
Das Neuerstellen von postgresql2 anfordern und das Basis-Backup direkt vom Leader beziehen:
patronictl reload
Aufrufschema
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; oderprimary: der Leader eines regulären Patroni-Clusters; oderstandby-leader: der Leader eines Patroni-Standby-Clusters; oderreplica: ein Replikat eines Patroni-Clusters; oderstandby: entsprichtreplica; oderany: 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 remove
Aufrufschema
Beschreibung
patronictl remove entfernt die Informationen zum Cluster aus dem DCS.
Dies ist ein interaktiver Vorgang.
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; odertsv: gibt die Mitglieder tabellarisch aus, mit durch\tgetrennten Spalten; oderjson: gibt die Mitglieder im JSON-Format aus; oderyaml: gibt die Mitglieder im YAML-Format aus.
Der Standardwert ist pretty.
Beispiele
Informationen zum Patroni-Cluster batman aus dem DCS entfernen:
patronictl restart
Aufrufschema
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; oderprimary: der Leader eines regulären Patroni-Clusters; oderstandby-leader: der Leader eines Patroni-Standby-Clusters; oderreplica: ein Replikat eines Patroni-Clusters; oderstandby: entsprichtreplica; oderany: 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:
Ein zufällig ausgewähltes Mitglied des Clusters sofort neu starten:
Einen Neustart für 2023-09-13T18:00-03:00 planen:
patronictl resume
Aufrufschema
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 show-config
Aufrufschema
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 switchover
Aufrufschema
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.
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:
Einen Switchover zwischen postgresql0 und postgresql2 für 2023-09-13T18:00:00-03:00 planen:
patronictl topology
Aufrufschema
Beschreibung
patronictl topology zeigt Informationen zum Patroni-Cluster und seinen Mitgliedern als Baumansicht.
Die Ausgabe enthält folgende Informationen:
Cluster
Name des Patroni-Clusters.
Wird im Tabellenkopf angezeigt.
System identifier
Postgres-Systemkennung.
Wird im Tabellenkopf angezeigt.
Member
Name des Patroni-Mitglieds.
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; oderStandby Leader: der aktuelle Leader eines Patroni-Standby-Clusters; oderSync Standby: ein synchroner Standby eines Patroni-Clusters mit aktiviertem synchronem Modus; oderReplica: 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.
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.
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.
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.
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.
Wird am Tabellenende angezeigt.
Wird nur angezeigt, wenn ein Switchover geplant ist.
Maintenance mode
Ob die Cluster-Überwachung derzeit pausiert ist.
HinweisWird 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 version
Aufrufschema
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:
Die Version von patronictl
und aller Mitglieder des Clusters batman abrufen:
Die Version von patronictl
und der Mitglieder postgresql1 und postgresql2 des Clusters batman abrufen: