Runbook — PostgreSQL (Down, ConnectionsExhausted, Deadlocks)¶
Severidade: P0/P1/P2 · Impacto: aplicações dependentes fora do ar ou com erros.
Verificação¶
docker ps | grep -E 'postgres|pgbouncer'na VM de banco;docker logs --tail 100 postgres.- Conexões:
docker exec postgres psql -U postgres -c "select count(*), state from pg_stat_activity group by state;". - Deadlocks: logs do Postgres registram os statements envolvidos.
Causas prováveis¶
- Down: container parado; disco cheio (ver disco); OOM.
- Conexões: vazamento de conexões na aplicação; pgbouncer fora do caminho; pico de carga.
- Deadlocks: transações concorrentes com ordem de lock inconsistente.
Ação¶
- Down: subir via compose; se não inicia, ler logs (recovery, disco, permissão de volume). Nunca remover o volume de dados.
- Conexões: identificar a origem (
pg_stat_activity.application_name/client_addr); reiniciar a aplicação vazando; confirmar que apps usam o pgbouncer. - Deadlocks recorrentes: abrir issue para o backend com os statements do log.
- Backup/restore: seguir o fluxo de
docs/operation.md(skilloperar-backup-restore-postgres).
Escalonamento¶
Down sem recuperação em 15 min: acionar responsável de dados e avaliar restore do último backup.