Retenir les connexions pendant une maintenance avec PgBouncer (PAUSE/RESUME) et recharger la configuration (RELOAD)
PostgreSQLPgBouncerCommande
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>;Ce que fait la commande
PAUSE vide les connexions côté PostgreSQL sans couper les connexions clientes et met les nouvelles requêtes en file d'attente ; RESUME relance la file. Un court redémarrage de la primaire ou un switchover apparaît ainsi à l'application comme un bref délai plutôt que comme des erreurs.
Quand l'utiliser
Pendant de courtes fenêtres de maintenance (switchover, redémarrage de version mineure, redémarrage pour paramètre) et lors de l'application de modifications de pgbouncer.ini/userlist.
Attention
PAUSE ne rend la main qu'après la fin de toutes les transactions actives ; une requête longue retient PAUSE (terminez cette session dans PostgreSQL si nécessaire). Les clients en attente reçoivent une erreur à l'expiration de query_wait_timeout (120 s par défaut) ; terminez la maintenance dans ce délai. Oublier RESUME après PAUSE équivaut à une interruption totale. Certains réglages (listen_addr, listen_port, etc.) ne changent pas avec RELOAD et exigent un redémarrage.