Verwendung: pgbouncer-Befehl
Zusammenfassung
pgbouncer [-d][-R][-v][-u user] <pgbouncer.ini>
pgbouncer -V|-h
Unter Windows stehen folgende Optionen zur Verfügung:
pgbouncer.exe [-v][-u user] <pgbouncer.ini>
pgbouncer.exe -V|-h
Zusätzliche Optionen zur Einrichtung eines Windows-Dienstes:
pgbouncer.exe --regservice <pgbouncer.ini>
pgbouncer.exe --unregservice <pgbouncer.ini>
Beschreibung
pgbouncer ist ein PostgreSQL-Verbindungspooler. Jede Zielanwendung kann sich mit pgbouncer verbinden, als wäre PgBouncer ein PostgreSQL-Server. pgbouncer stellt dann eine Verbindung zum tatsächlichen Server her oder verwendet eine bereits vorhandene Verbindung wieder.
Das Ziel von pgbouncer ist es, die Auswirkungen auf die Leistung beim Öffnen neuer Verbindungen zu PostgreSQL zu reduzieren.
Um die Transaktionssemantik beim Pooling von Verbindungen nicht zu beeinträchtigen, unterstützt pgbouncer beim Wechsel der Verbindungen mehrere Pooling-Varianten:
- Sitzungs-Pooling
Die am wenigsten restriktive Methode. Sobald ein Client eine Verbindung herstellt, wird ihm für die gesamte Verbindungsdauer eine Serververbindung zugewiesen. Trennt der Client die Verbindung, wird die Serververbindung wieder in den Pool zurückgegeben. Dies ist die Standardmethode.
- Transaktions-Pooling
Eine Serververbindung wird einem Client nur für die Dauer einer Transaktion zugewiesen. Sobald PgBouncer erkennt, dass die Transaktion beendet ist, wird die Serververbindung wieder in den Pool zurückgegeben.
- Statement-Pooling
Die restriktivste Methode. Die Serververbindung wird unmittelbar nach Abschluss einer Abfrage in den Pool zurückgegeben. Transaktionen mit mehreren Anweisungen sind in diesem Modus nicht zulässig, da sie sonst nicht funktionieren würden.
Die Administrationsoberfläche von pgbouncer umfasst einige zusätzliche SHOW-Befehle. Sie stehen bei einer Verbindung mit der speziellen „virtuellen“ Datenbank pgbouncer zur Verfügung.
Schnellstart
Die grundlegende Einrichtung und Verwendung erfolgen wie folgt:
Erstellen Sie eine Datei namens pgbouncer.ini. Weitere Informationen finden Sie in pgbouncer(5). Ein einfaches Beispiel:
[databases] template1 = host=localhost port=5432 dbname=template1 [pgbouncer] listen_port = 6432 listen_addr = localhost auth_type = md5 auth_file = userlist.txt logfile = pgbouncer.log pidfile = pgbouncer.pid admin_users = someuserErstellen Sie eine Datei mit dem Namen
userlist.txt, die die Benutzer enthält, die sich anmelden dürfen:"someuser" "same_password_as_in_server"Starten Sie pgbouncer:
$ pgbouncer -d pgbouncer.iniLassen Sie Ihre Anwendung (oder den psql-Client) eine Verbindung mit pgbouncer statt direkt mit dem PostgreSQL-Server herstellen:
$ psql -p 6432 -U someuser template1Verwalten Sie pgbouncer, indem Sie sich mit der speziellen Administrationsdatenbank pgbouncer verbinden und zunächst den Befehl
SHOW HELP;ausführen:$ psql -p 6432 -U someuser pgbouncer pgbouncer=# SHOW HELP; NOTICE: Console usage DETAIL: SHOW [HELP|CONFIG|DATABASES|FDS|POOLS|CLIENTS|SERVERS|SOCKETS|LISTS|VERSION|...] SET key = arg RELOAD PAUSE SUSPEND RESUME SHUTDOWN [...]Wenn Sie pgbouncer.ini geändert haben, können Sie die Datei mit folgendem Befehl neu laden:
pgbouncer=# RELOAD;
Befehlszeilenoptionen
-d,--daemon- Im Hintergrund ausführen. Ohne diese Option wird der Prozess im Vordergrund ausgeführt.
Im Daemon-Modus müssen sowohl
pidfileals auchlogfileodersyslogfestgelegt sein. Nach dem Wechsel in den Hintergrund werden keine Protokollmeldungen mehr auf stderr ausgegeben.Hinweis: Funktioniert nicht unter Windows; dort muss pgbouncer als Dienst ausgeführt werden.
-R,--reboot- VERALTET (DEPRECATED): Verwenden Sie statt dieser Option einen rollierenden Neustart mit mehreren pgbouncer-Prozessen, die mithilfe von so_reuseport am selben Port lauschen.
Führt einen Online-Neustart durch. Dazu verbindet sich der neue Prozess mit dem laufenden Prozess,
übernimmt dessen offene Sockets und verwendet sie anschließend. Ist kein Prozess aktiv,
startet er normal.
Hinweis: Funktioniert nur, wenn das Betriebssystem Unix-Sockets unterstützt und
unix_socket_dirin der Konfiguration nicht deaktiviert ist. Funktioniert nicht unter Windows. Funktioniert nicht mit TLS-Verbindungen; diese werden getrennt. -uUSERNAME,--user=USERNAME- Beim Start zum angegebenen Benutzer wechseln.
-v,--verbose- Ausführlichkeit erhöhen. Kann mehrfach angegeben werden.
-q,--quiet- Keine Protokollausgabe auf stderr. Dies beeinflusst nicht die Ausführlichkeit der Protokollierung, sondern nur die Verwendung von stderr. Für den Einsatz in init.d-Skripten vorgesehen.
-V,--version- Version anzeigen.
-h,--help- Kurzhilfe anzeigen.
--regservice- Win32: PgBouncer als Windows-Dienst registrieren. Der Wert des Konfigurationsparameters service_name wird als Registrierungsname verwendet.
--unregservice- Win32: Registrierung des Windows-Dienstes aufheben.
Admin-Konsole
Die Konsole ist über eine normale Verbindung zur Datenbank pgbouncer erreichbar:
$ psql -p 6432 pgbouncer
Nur Benutzer, die in den Konfigurationsparametern admin_users oder stats_users aufgeführt sind, dürfen sich an der Konsole anmelden. (Bei auth_type=any ist dagegen jeder Benutzer als stats_user zugelassen.)
Zusätzlich darf sich der Benutzer pgbouncer ohne Passwort anmelden, sofern die Anmeldung über einen Unix-Socket erfolgt und der Client dieselbe Unix-Benutzer-ID (UID) wie der laufende Prozess besitzt.
Die Admin-Konsole unterstützt derzeit nur das einfache Abfrageprotokoll. Einige Treiber verwenden für alle Befehle das erweiterte Abfrageprotokoll und können daher nicht mit der Admin-Konsole verwendet werden.
Anzeigebefehle
Die SHOW-Befehle geben Informationen aus. Jeder Befehl wird nachfolgend beschrieben.
SHOW STATS
Zeigt Statistiken an. Die Gesamtwerte in diesem und verwandten Befehlen beziehen sich auf den Zeitraum seit dem Prozessstart; die Durchschnittswerte werden nach jedem stats_period-Intervall aktualisiert.
- database
- Statistiken werden pro Datenbank angezeigt.
- total_xact_count
- Gesamtanzahl der von pgbouncer gepoolten SQL-Transaktionen.
- total_query_count
- Gesamtanzahl der von pgbouncer gepoolten SQL-Befehle.
- total_server_assignment_count
- Gesamtzahl der Zuweisungen eines Servers an einen Client.
- total_received
- Gesamtvolumen des von pgbouncer empfangenen Netzwerkverkehrs in Byte.
- total_sent
- Gesamtvolumen des von pgbouncer gesendeten Netzwerkverkehrs in Byte.
- total_xact_time
- Gesamtzahl der Mikrosekunden, die pgbouncer während einer Transaktion mit PostgreSQL verbunden war – entweder im Leerlauf innerhalb der Transaktion oder bei der Ausführung von Abfragen.
- total_query_time
- Gesamtzahl der Mikrosekunden, die pgbouncer aktiv mit PostgreSQL verbunden war und Abfragen ausführte.
- total_wait_time
- Gesamte Wartezeit der Clients auf einen Server in Mikrosekunden. Sie wird aktualisiert, wenn einer Clientverbindung eine Backendverbindung zugewiesen wird.
- total_client_parse_count
- Gesamtzahl der von Clients erstellten vorbereiteten Anweisungen. Nur bei der Nachverfolgung benannter vorbereiteter Anweisungen relevant, siehe
max_prepared_statements. - total_server_parse_count
- Gesamtzahl der von pgbouncer auf einem Server erstellten vorbereiteten Anweisungen. Nur bei der Nachverfolgung benannter vorbereiteter Anweisungen relevant, siehe
max_prepared_statements. - total_bind_count
- Gesamtzahl der vorbereiteten Anweisungen, die von Clients zur Ausführung bereitgestellt und von pgbouncer an PostgreSQL weitergeleitet wurden. Nur bei der Nachverfolgung benannter vorbereiteter Anweisungen relevant, siehe
max_prepared_statements. - avg_xact_count
- Durchschnittliche Anzahl von Transaktionen pro Sekunde im letzten Statistikzeitraum.
- avg_query_count
- Durchschnittliche Anzahl von Abfragen pro Sekunde im letzten Statistikzeitraum.
- avg_server_assignment_count
- Durchschnittliche Anzahl der Zuweisungen eines Servers an einen Client pro Sekunde im letzten Statistikzeitraum.
- avg_recv
- Durchschnittlich pro Sekunde empfangene Byte (von Clients).
- avg_sent
- Durchschnittlich pro Sekunde gesendete Byte (an Clients).
- avg_xact_time
- Durchschnittliche Transaktionsdauer in Mikrosekunden.
- avg_query_time
- Durchschnittliche Abfragezeit in Mikrosekunden.
- avg_wait_time
- Wartezeit der Clients auf einen Server in Mikrosekunden (Durchschnitt der Wartezeiten für Clients, die während des aktuellen
stats_periodeinem Backend zugewiesen wurden). - avg_client_parse_count
- Durchschnittliche Zahl der von Clients erstellten vorbereiteten Anweisungen. Nur bei der Nachverfolgung benannter vorbereiteter Anweisungen relevant, siehe
max_prepared_statements. - avg_server_parse_count
- Durchschnittliche Zahl der von pgbouncer auf einem Server erstellten vorbereiteten Anweisungen. Nur bei der Nachverfolgung benannter vorbereiteter Anweisungen relevant, siehe
max_prepared_statements. - avg_bind_count
- Durchschnittliche Zahl der vorbereiteten Anweisungen, die von Clients zur Ausführung bereitgestellt und von pgbouncer an PostgreSQL weitergeleitet wurden. Nur bei der Nachverfolgung benannter vorbereiteter Anweisungen relevant, siehe
max_prepared_statements.
SHOW STATS_TOTALS
Teilmenge von SHOW STATS mit den Gesamtwerten (total_).
SHOW STATS_AVERAGES
Teilmenge von SHOW STATS mit den Durchschnittswerten (avg_).
SHOW TOTALS
Wie SHOW STATS, jedoch über alle Datenbanken aggregiert.
SHOW SERVERS
- type
- S für Server.
- user
- Benutzername, mit dem pgbouncer die Verbindung zum Server herstellt.
- database
- Datenbankname.
- replication
- Gibt an, ob die Serververbindung Replikation nutzt. Kann none, logical oder physical sein.
- state
- Zustand der PgBouncer-Serververbindung, einer der folgenden: active, idle, used, tested, new, active_cancel, being_canceled.
- addr
- IP-Adresse des PostgreSQL-Servers.
- port
- Port des PostgreSQL-Servers.
- local_addr
- Verbindungsstartadresse auf dem lokalen Computer.
- local_port
- Verbindungsstartport auf dem lokalen Computer.
- connect_time
- Zeitpunkt des Verbindungsaufbaus.
- request_time
- Zeitpunkt der letzten Anfrage.
- wait
- Nicht für Serververbindungen verwendet.
- wait_us
- Nicht für Serververbindungen verwendet.
- close_needed
- 1, wenn die Verbindung so schnell wie möglich geschlossen werden soll, weil das Neuladen einer Konfigurationsdatei oder eine DNS-Aktualisierung die Verbindungsinformationen geändert hat oder RECONNECT ausgeführt wurde.
- ptr
- Adresse des internen Objekts für diese Verbindung.
- link
- Adresse der Clientverbindung, mit der der Server verknüpft ist.
- remote_pid
- PID des Backend-Serverprozesses. Wurde die Verbindung über einen Unix-Socket hergestellt und unterstützt das Betriebssystem das Abrufen von Prozess-ID-Informationen, ist dies die Betriebssystem-PID. Andernfalls wird der Wert aus dem vom Server gesendeten Abbruchpaket entnommen; bei einem PostgreSQL-Server sollte dies die PID sein, bei einer anderen PgBouncer-Instanz kann es eine Zufallszahl sein.
- tls
- Eine Zeichenkette mit TLS-Verbindungsinformationen oder leer, wenn TLS nicht verwendet wird.
- application_name
- Ein String, der den
application_nameauf der verknüpften Clientverbindung enthält, oder leer, wenn dieser nicht gesetzt ist oder keine verknüpfte Verbindung besteht. - prepared_statements
- Die Anzahl der auf dem Server vorbereiteten Anweisungen. Diese Zahl ist durch die Einstellung
max_prepared_statementsbegrenzt. - id
- Eindeutige ID für den Server.
SHOW CLIENTS
- type
- C für Client.
- user
- Benutzername der Clientverbindung.
- database
- Datenbankname.
- replication
- Gibt an, ob die Clientverbindung Replikation nutzt. Kann none, logical oder physical sein.
- state
- Zustand der Clientverbindung, einer der Werte active (Clientverbindungen, die mit Serververbindungen verknüpft sind), idle (Clientverbindungen ohne ausstehende Abfragen), waiting, active_cancel_req oder waiting_cancel_req.
- addr
- IP-Adresse des Clients.
- port
- Quellport des Clients.
- local_addr
- Lokale Endadresse der Verbindung.
- local_port
- Lokaler Endport der Verbindung.
- connect_time
- Zeitstempel des Verbindungsaufbaus.
- request_time
- Zeitstempel der letzten Clientanfrage.
- wait
- Aktuelle Wartezeit in Sekunden.
- wait_us
- Mikrosekundenanteil der aktuellen Wartezeit.
- close_needed
- Nicht für Clients verwendet.
- ptr
- Adresse des internen Objekts für diese Verbindung.
- link
- Adresse der Serververbindung, der der Client zugeordnet ist.
- remote_pid
- Prozess-ID, falls der Client über einen Unix-Socket verbunden ist und das Betriebssystem die ID abrufen kann.
- tls
- Ein String mit TLS-Verbindungsinformationen oder leer, falls TLS nicht verwendet wird.
- application_name
- Ein String, der den
application_nameenthält, der vom Client für diese Verbindung festgelegt wurde, oder leer, falls kein solcher Wert gesetzt wurde. - prepared_statements
- Anzahl der vom Client vorbereiteten Anweisungen.
- id
- Eindeutige ID für den Client.
SHOW POOLS
Für jede Kombination aus Datenbank und Benutzer wird ein neuer Pool-Eintrag erstellt.
- database
- Datenbankname.
- user
- Benutzername.
- cl_active
- Clientverbindungen, die entweder Serververbindungen zugeordnet sind oder sich im Leerlauf befinden, ohne dass Abfragen zur Verarbeitung anstehen.
- cl_waiting
- Clientverbindungen, die Abfragen gesendet, aber noch keine Serververbindung erhalten haben.
- cl_active_cancel_req
- Clientverbindungen, die Abfrageabbrüche an den Server weitergeleitet haben und auf dessen Antwort warten.
- cl_waiting_cancel_req
- Clientverbindungen, die noch keine Abbruchanfragen an den Server weitergeleitet haben.
- sv_active
- Serververbindungen, die mit einem Client verbunden sind.
- sv_active_cancel
- Serververbindungen, die derzeit eine Abbruchanforderung weiterleiten.
- sv_being_canceled
- Serververbindungen, die normalerweise in den Leerlauf wechseln könnten, damit jedoch warten, bis alle noch laufenden Anforderungen zum Abbruch einer Abfrage auf diesem Server abgeschlossen sind.
- sv_idle
- Serververbindungen, die ungenutzt sind und sofort für Clientanfragen verwendet werden können.
- sv_used
- Serververbindungen, die länger als
server_check_delayinaktiv waren, sodassserver_check_queryausgeführt werden muss, bevor sie erneut verwendet werden können. - sv_tested
- Serververbindungen, die derzeit entweder
server_reset_queryoderserver_check_queryausführen. - sv_login
- Serververbindungen, die gerade angemeldet werden.
- maxwait
- Bisherige Wartezeit des ersten (ältesten) Clients in der Warteschlange in Sekunden. Steigt dieser Wert, verarbeitet der aktuelle Serverpool die Anfragen nicht schnell genug. Ursache kann ein überlasteter Server oder eine zu kleine pool_size-Einstellung sein.
- maxwait_us
- Mikrosekundenanteil der maximalen Wartezeit.
- pool_mode
- Der verwendete Pool-Modus.
- load_balance_hosts
- Die verwendete load_balance_hosts-Einstellung, wenn der Host des Pools eine kommagetrennte Liste enthält.
SHOW PEER_POOLS
Für jeden konfigurierten Peer wird ein neuer peer_pool-Eintrag erstellt.
- database
- ID des konfigurierten Peer-Eintrags.
- cl_active_cancel_req
- Clientverbindungen, die Abfrageabbrüche an den Server weitergeleitet haben und auf dessen Antwort warten.
- cl_waiting_cancel_req
- Clientverbindungen, die Abbruchanfragen noch nicht an den Server weitergeleitet haben.
- sv_active_cancel
- Serververbindungen, die derzeit eine Abbruchanforderung weiterleiten.
- sv_login
- Serververbindungen, deren Anmeldung gerade läuft.
SHOW LISTS
Zeigt die folgenden internen Informationen in Spalten (nicht Zeilen) an:
- databases
- Anzahl der Datenbanken.
- users
- Anzahl der Benutzer.
- pools
- Anzahl der Pools.
- free_clients
- Anzahl freier Clients. Diese Clients sind getrennt, PgBouncer behält jedoch den für sie reservierten Speicher bei, um ihn für künftige Clients wiederzuverwenden und neue Speicherzuweisungen zu vermeiden.
- used_clients
- Anzahl genutzter Clients.
- login_clients
- Anzahl der Clients im login-Zustand.
- free_servers
- Anzahl freier Server. Diese Server sind getrennt, PgBouncer behält jedoch den für sie reservierten Speicher bei, um ihn für künftige Server wiederzuverwenden und neue Speicherzuweisungen zu vermeiden.
- used_servers
- Anzahl genutzter Server.
- dns_names
- Anzahl der DNS-Namen im Cache.
- dns_zones
- Anzahl der DNS-Zonen im Cache.
- dns_queries
- Anzahl der laufenden DNS-Abfragen.
- dns_pending
- Nicht verwendet.
SHOW USERS
- name
- Der Benutzername.
- pool_size
- Benutzerspezifische Überschreibung von pool_size oder NULL, falls nicht gesetzt.
- reserve_pool_size
- Benutzerspezifische Überschreibung von reserve_pool_size oder NULL, falls nicht gesetzt.
- pool_mode
- Benutzerspezifische Überschreibung von pool_mode oder NULL, falls nicht gesetzt.
- max_user_connections
- Benutzerspezifische Einstellung max_user_connections. Ist sie für diesen Benutzer nicht gesetzt, wird der Standardwert angezeigt.
- current_connections
- Aktuelle Anzahl der Serververbindungen, die dieser Benutzer zu allen Servern geöffnet hat.
- max_user_client_connections
- Benutzerspezifische Einstellung max_user_client_connections. Ist sie für diesen Benutzer nicht gesetzt, wird der Standardwert angezeigt.
- current_client_connections
- Aktuelle Anzahl der Clientverbindungen, die dieser Benutzer zu PgBouncer geöffnet hat.
SHOW DATABASES
- name
- Name des konfigurierten Datenbankeintrags.
- host
- Host, zu dem PgBouncer eine Verbindung herstellt.
- port
- Port, zu dem PgBouncer eine Verbindung herstellt.
- database
- Tatsächlicher Name der Datenbank, zu der PgBouncer eine Verbindung herstellt.
- force_user
- Ist ein Benutzer Teil der Verbindungszeichenfolge, wird für die Verbindung zwischen PgBouncer und PostgreSQL unabhängig vom Clientbenutzer dieser angegebene Benutzer erzwungen.
- pool_size
- Maximale Anzahl an Serververbindungen.
- min_pool_size
- Minimale Anzahl an Serververbindungen.
- reserve_pool_size
- Maximale Anzahl zusätzlicher Verbindungen für diese Datenbank.
- server_lifetime
- Maximale Lebensdauer einer Serververbindung für diese Datenbank.
- pool_mode
- Datenbankspezifische Überschreibung von pool_mode oder NULL, wenn stattdessen der Standardwert verwendet wird.
- load_balance_hosts
- Datenbankspezifische load_balance_hosts-Einstellung, falls der Host eine kommagetrennte Liste enthält.
- max_connections
- Maximale Anzahl zulässiger Serververbindungen für diese Datenbank, wie durch max_db_connections global oder pro Datenbank festgelegt.
- current_connections
- Aktuelle Anzahl der Serververbindungen für diese Datenbank.
- max_client_connections
- Maximale Anzahl zulässiger Clientverbindungen für diese PgBouncer-Instanz, wie durch max_db_client_connections pro Datenbank festgelegt.
- current_client_connections
- Aktuelle Anzahl der Clientverbindungen für diese Datenbank.
- paused
- 1, wenn diese Datenbank derzeit pausiert ist, sonst 0.
- disabled
- 1, wenn diese Datenbank derzeit deaktiviert ist, sonst 0.
SHOW PEERS
- peer_id
- ID des konfigurierten Peer-Eintrags.
- host
- Host, zu dem PgBouncer eine Verbindung herstellt.
- port
- Port, zu dem PgBouncer eine Verbindung herstellt.
- pool_size
- Maximale Anzahl der Serververbindungen, die zu diesem Peer hergestellt werden können.
SHOW FDS
Interner Befehl – zeigt die Liste der verwendeten Dateideskriptoren mit ihrem internen Zustand.
Wenn der verbundene Benutzer „pgbouncer“ heißt, sich über einen Unix-Socket verbindet und dieselbe UID wie der laufende Prozess besitzt, werden die tatsächlichen FDs über die Verbindung übertragen. Dieses Verfahren wird für einen Online-Neustart verwendet. Hinweis: Dies funktioniert nicht unter Windows.
Da dieser Befehl außerdem die interne Ereignisschleife blockiert, sollte er nicht verwendet werden, während PgBouncer in Betrieb ist.
- fd
- Numerischer Wert des Dateideskriptors.
- task
- Einer der Werte pooler, client oder server.
- user
- Benutzer der Verbindung, die diesen FD verwendet.
- database
- Datenbank der Verbindung, die diesen FD verwendet.
- addr
- IP-Adresse der Verbindung, die den FD verwendet; unix, falls ein Unix-Socket verwendet wird.
- port
- Port der Verbindung, die den FD verwendet.
- cancel
- Abbruchschlüssel für diese Verbindung.
- link
- FD des zugehörigen Servers/Clients. NULL im Leerlauf.
SHOW SOCKETS, SHOW ACTIVE_SOCKETS
Zeigt systemnahe Informationen über alle oder nur die aktiven Sockets an. Dazu gehören die unter SHOW CLIENTS und SHOW SERVERS angezeigten Informationen sowie weitere systemnahe Angaben.
SHOW CONFIG
Zeigt die aktuellen Konfigurationseinstellungen mit einer Einstellung pro Zeile und den folgenden Spalten:
- key
- Name der Konfigurationsvariable.
- value
- Konfigurationswert.
- default
- Standardwert der Konfiguration.
- changeable
- Gibt mit yes oder no an, ob die Variable zur Laufzeit geändert werden kann. Wenn no, kann die Variable nur beim Start geändert werden. Verwenden Sie SET, um eine Variable zur Laufzeit zu ändern.
SHOW MEM
Zeigt systemnahe Informationen über die aktuellen Größen verschiedener interner Speicherreservierungen an. Diese Angaben können sich ändern.
SHOW DNS_HOSTS
Zeigt Hostnamen im DNS-Cache an.
- hostname
- Hostname.
- ttl
- Sekunden bis zur nächsten Abfrage.
- addrs
- Kommagetrennte Liste von Adressen.
SHOW DNS_ZONES
Zeigt DNS-Zonen im Cache an.
- zonename
- Zonenname.
- serial
- Aktuelle Seriennummer.
- count
- Anzahl von Hostnamen, die dieser Zone zugeordnet sind.
SHOW VERSION
Zeigt die PgBouncer-Version als Zeichenkette an.
SHOW STATE
Zeigt die Zustandseinstellungen von PgBouncer an. Mögliche Zustände sind active, paused und suspended.
Befehle zur Prozesskontrolle
PAUSE [db]
PgBouncer versucht, alle Serververbindungen zu trennen. Jede Verbindung wird erst getrennt, nachdem sie entsprechend dem Pooling-Modus des Serverpools freigegeben wurde (beim Transaktions-Pooling muss die Transaktion abgeschlossen sein, beim Statement-Pooling die Anweisung und beim Sitzungs-Pooling muss der Client die Verbindung trennen). Der Befehl kehrt erst zurück, nachdem alle Serververbindungen getrennt wurden. Für Datenbankneustarts vorgesehen.
Wird ein Datenbankname angegeben, wird nur diese Datenbank pausiert.
Neue Clientverbindungen zu einer pausierten Datenbank warten, bis RESUME aufgerufen wird.
DISABLE db
Weist alle neuen Clientverbindungen zur angegebenen Datenbank ab.
ENABLE db
Ermöglicht nach einem vorherigen DISABLE-Befehl wieder neue Clientverbindungen.
RECONNECT [db]
Schließt jede offene Serververbindung für die angegebene Datenbank oder für alle Datenbanken, sobald sie entsprechend dem Pooling-Modus freigegeben wird, selbst wenn ihre Lebensdauer noch nicht abgelaufen ist. Neue Serververbindungen können sofort hergestellt werden und verbinden sich bei Bedarf gemäß den Einstellungen der Poolgröße.
Dieser Befehl ist nützlich, wenn sich die Einrichtung der Serververbindung geändert hat, etwa für einen schrittweisen Wechsel zu einem neuen Server. Er muss nicht ausgeführt werden, wenn die Verbindungszeichenfolge in pgbouncer.ini geändert und neu geladen wurde (siehe RELOAD) oder wenn sich die DNS-Auflösung geändert hat; in diesen Fällen wird ein gleichwertiger Befehl automatisch ausgeführt. Er ist nur erforderlich, wenn eine dem PgBouncer nachgelagerte Komponente die Verbindungen weiterleitet.
Nach Ausführung dieses Befehls kann es längere Zeit dauern, bis alle Serververbindungen zum neuen Ziel führen; einige können noch das alte Ziel verwenden. Dies ist voraussichtlich nur beim Umschalten von schreibgeschütztem Datenverkehr zwischen schreibgeschützten Replikaten oder zwischen Knoten einer Multimaster-Replikation sinnvoll. Müssen alle Verbindungen gleichzeitig umgeschaltet werden, wird stattdessen PAUSE empfohlen. Sollen Serververbindungen ohne Wartezeit geschlossen werden, etwa bei einem Notfall-Failover statt eines schrittweisen Switchovers, kommt auch KILL infrage.
KILL [db]
Trennt sofort alle Client- und Serververbindungen für die angegebene Datenbank oder für alle Datenbanken mit Ausnahme der Administrationsdatenbank.
Neue Clientverbindungen zu einer Datenbank, für die KILL ausgeführt wurde, warten, bis RESUME aufgerufen wird.
KILL_CLIENT id
Trennt sofort die angegebene Clientverbindung sowie alle Serververbindungen des betreffenden Clients. Der Client, dessen Verbindung getrennt werden soll, wird durch den id-Wert identifiziert, der mit dem Befehl SHOW CLIENTS ermittelt werden kann.
Ein Beispielbefehl sieht etwa so aus: KILL_CLIENT 1234.
SUSPEND
Alle Socket-Puffer werden geleert, und PgBouncer nimmt auf diesen Sockets keine Daten mehr entgegen. Der Befehl kehrt erst zurück, wenn alle Puffer leer sind. Er ist für einen Online-Neustart von PgBouncer vorgesehen.
Neue Clientverbindungen zu einer suspendierten Datenbank warten, bis RESUME aufgerufen wird.
RESUME [db]
Nimmt den Betrieb nach einem vorherigen KILL-, PAUSE- oder SUSPEND-Befehl wieder auf.
SHUTDOWN
Der PgBouncer-Prozess wird beendet.
SHUTDOWN WAIT_FOR_SERVERS
Nimmt keine neuen Verbindungen mehr an und fährt herunter, nachdem alle Serververbindungen freigegeben wurden. Dies entspricht im Wesentlichen der Ausführung von PAUSE und SHUTDOWN. Zusätzlich werden bereits während des Wartens auf PAUSE keine neuen Verbindungen mehr angenommen und Clients, die auf eine Serververbindung warten, sofort getrennt. Beachten Sie, dass Unix-Sockets während des Herunterfahrens geöffnet bleiben, aber nur Verbindungen zur PgBouncer-Administrationskonsole annehmen.
SHUTDOWN WAIT_FOR_CLIENTS
Nimmt keine neuen Verbindungen mehr an und beendet den Prozess, sobald alle vorhandenen Clients ihre Verbindung getrennt haben. Beachten Sie, dass Unix-Sockets während des Herunterfahrens geöffnet bleiben, aber nur Verbindungen zur PgBouncer-Administrationskonsole annehmen. Mit diesem Befehl lässt sich nach dem folgenden Verfahren ein rollierender Neustart zweier PgBouncer-Prozesse ohne Ausfallzeit durchführen:
- Lassen Sie zwei oder mehr PgBouncer-Prozesse mit
so_reuseportauf demselben Port laufen (Peering konfigurieren wird empfohlen, ist aber nicht erforderlich). Für einen Neustart ohne Ausfallzeit werden diese Prozesse nacheinander neu gestartet. So können die übrigen weiterhin Verbindungen annehmen, während jeweils ein Prozess neu startet. - Wählen Sie den zuerst neu zu startenden Prozess; nennen wir ihn A.
- Führen Sie für Prozess A
SHUTDOWN WAIT_FOR_CLIENTSaus (oder senden Sie ihmSIGTERM). - Veranlassen Sie alle Clients, ihre Verbindung neu herzustellen. Warten Sie dazu etwa, bis der clientseitige Pooler aufgrund seines
server_idle_timeout(oder einer ähnlichen Konfiguration) Neuverbindungen auslöst. Wird kein clientseitiger Pooler verwendet, können stattdessen die Clients neu gestartet werden. Sobald alle Clients wieder verbunden sind, beendet sich Prozess A automatisch, da keine Clients mehr mit ihm verbunden sind. - Starten Sie Prozess A erneut.
- Wiederholen Sie die Schritte 3, 4 und 5 nacheinander für jeden verbleibenden Prozess, bis alle Prozesse neu gestartet wurden.
RELOAD
Der PgBouncer-Prozess lädt seine Konfigurationsdateien neu und aktualisiert änderbare Einstellungen. Dazu gehören die Hauptkonfigurationsdatei sowie die Dateien, die durch die Einstellungen auth_file und auth_hba_file angegeben sind.
PgBouncer erkennt, wenn das Neuladen einer Konfigurationsdatei die Verbindungsparameter einer Datenbankdefinition ändert. Eine vorhandene Serververbindung zum alten Ziel wird bei ihrer nächsten Freigabe entsprechend dem Pooling-Modus geschlossen; neue Serververbindungen verwenden sofort die aktualisierten Verbindungsparameter.
WAIT_CLOSE [db]
Wartet, bis alle Serververbindungen der angegebenen Datenbank oder aller Datenbanken den Zustand “close_needed” verlassen haben (siehe SHOW SERVERS). Der Befehl kann nach RECONNECT oder RELOAD aufgerufen werden, um zu warten, bis die jeweilige Konfigurationsänderung vollständig aktiviert ist, beispielsweise in Switchover-Skripten.
Weitere Befehle
SET key = arg
Ändert eine Konfigurationseinstellung (siehe auch SHOW CONFIG). Zum Beispiel:
SET log_connections = 1;
SET server_check_query = 'select 2';
(Beachten Sie, dass dieser Befehl in der PgBouncer-Administrationskonsole ausgeführt wird und PgBouncer-Einstellungen setzt. Ein in einer anderen Datenbank ausgeführter SET-Befehl wird wie jeder andere SQL-Befehl an das PostgreSQL-Backend weitergeleitet.)
Signale
- SIGHUP
- Konfiguration neu laden. Entspricht dem Befehl RELOAD an der Konsole.
- SIGTERM
- Besonders sicheres Herunterfahren. Wartet, bis alle vorhandenen Clients ihre Verbindung getrennt haben, nimmt jedoch keine neuen Verbindungen an. Dies entspricht SHUTDOWN WAIT_FOR_CLIENTS an der Konsole. Wird dieses Signal empfangen, während bereits ein Herunterfahren läuft, wird statt des „besonders sicheren Herunterfahrens“ ein „sofortiges Herunterfahren“ ausgelöst. In PgBouncer-Versionen vor 1.23.0 löste dieses Signal ein „sofortiges Herunterfahren“ aus.
- SIGINT
- Sicheres Herunterfahren. Entspricht SHUTDOWN WAIT_FOR_SERVERS an der Konsole. Wird dieses Signal empfangen, während bereits ein Herunterfahren läuft, wird statt des „sicheren Herunterfahrens“ ein „sofortiges Herunterfahren“ ausgelöst.
- SIGQUIT
- Sofortiges Herunterfahren. Entspricht SHUTDOWN an der Konsole.
- SIGUSR1
- Entspricht PAUSE an der Konsole.
- SIGUSR2
- Entspricht RESUME an der Konsole.
Libevent-Einstellungen
Aus der Libevent-Dokumentation:
Es ist möglich, die Unterstützung für epoll, kqueue, devpoll, poll oder select zu deaktivieren, indem die Umgebungsvariable EVENT_NOEPOLL, EVENT_NOKQUEUE, EVENT_NODEVPOLL, EVENT_NOPOLL oder EVENT_NOSELECT jeweils gesetzt wird.
Durch Setzen der Umgebungsvariablen EVENT_SHOW_METHOD zeigt libevent die verwendete Kernel-Benachrichtigungsmethode an.
Siehe auch
pgbouncer(5) – Handbuchseite mit Beschreibungen der Konfigurationseinstellungen