DBAtlas · Atlas für Datenbankbetrieb

Verbindungen während der Wartung mit PgBouncer halten (PAUSE/RESUME) und Konfiguration neu laden (RELOAD)

PostgreSQLPgBouncer

Befehl

psql -h 127.0.0.1 -p 6432 -U pgbouncer -d pgbouncer -X
RELOAD;            -- apply pgbouncer.ini and auth_file changes without dropping connections
PAUSE <db>;        -- closes server connections once running queries/transactions finish; new requests are queued
-- ... maintenance: switchover, PostgreSQL restart, etc. ...
RESUME <db>;
-- If the host in [databases] was changed (after RELOAD), gradually refresh server connections:
RECONNECT <db>;

Was es tut

PAUSE baut die Verbindungen auf PostgreSQL-Seite ab, ohne Client-Verbindungen zu trennen, und stellt neue Abfragen in eine Warteschlange; RESUME lässt die Warteschlange wieder abfließen. Ein kurzer Neustart der Primary oder ein Switchover erscheint der Anwendung so als kurze Verzögerung statt als Fehler.

Wann einsetzen

In kurzen Wartungsfenstern (Switchover, Neustart für Minor-Version, Neustart für Parameter) und beim Anwenden von Änderungen an pgbouncer.ini/userlist.

Vorsicht

PAUSE kehrt erst zurück, wenn alle aktiven Transaktionen beendet sind; eine lang laufende Abfrage hält PAUSE auf (diese Session bei Bedarf in PostgreSQL beenden). Wartende Clients erhalten einen Fehler, wenn query_wait_timeout (Standard 120 s) abläuft; schließe die Wartung innerhalb dieser Zeit ab. RESUME nach PAUSE zu vergessen ist ein vollständiger Ausfall. Einige Einstellungen (listen_addr, listen_port usw.) ändern sich nicht per RELOAD und erfordern einen Neustart.

In DBAtlas öffnen →

Verwandte Einträge