DBAtlas · Атлас эксплуатации баз данных

Удерживать подключения во время обслуживания через PgBouncer (PAUSE/RESUME) и перечитать конфигурацию (RELOAD)

PostgreSQLPgBouncer

Команда

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>;

Что делает

PAUSE освобождает подключения на стороне PostgreSQL, не разрывая клиентские подключения, и ставит новые запросы в очередь; RESUME снова пропускает очередь. Так кратковременный перезапуск primary или switchover выглядит для приложения как небольшая задержка, а не ошибки.

Когда использовать

Во время коротких окон обслуживания (switchover, перезапуск для минорной версии, перезапуск из-за параметров) и при применении изменений pgbouncer.ini/userlist.

Внимание

PAUSE возвращает управление только после завершения всех активных транзакций; долгий запрос задерживает PAUSE (при необходимости завершите эту сессию в PostgreSQL). Ожидающие клиенты получают ошибку по истечении query_wait_timeout (по умолчанию 120 s); завершите обслуживание за это время. Забытый RESUME после PAUSE — это полный простой. Некоторые настройки (listen_addr, listen_port и т. д.) не меняются через RELOAD и требуют перезапуска.

Открыть в DBAtlas →

Связанные материалы