Pular para conteúdo

Runbook — PostgreSQL (Down, ConnectionsExhausted, Deadlocks)

Severidade: P0/P1/P2 · Impacto: aplicações dependentes fora do ar ou com erros.

Verificação

  1. docker ps | grep -E 'postgres|pgbouncer' na VM de banco; docker logs --tail 100 postgres.
  2. Conexões: docker exec postgres psql -U postgres -c "select count(*), state from pg_stat_activity group by state;".
  3. 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

  1. Down: subir via compose; se não inicia, ler logs (recovery, disco, permissão de volume). Nunca remover o volume de dados.
  2. Conexões: identificar a origem (pg_stat_activity.application_name/client_addr); reiniciar a aplicação vazando; confirmar que apps usam o pgbouncer.
  3. Deadlocks recorrentes: abrir issue para o backend com os statements do log.
  4. Backup/restore: seguir o fluxo de docs/operation.md (skill operar-backup-restore-postgres).

Escalonamento

Down sem recuperação em 15 min: acionar responsável de dados e avaliar restore do último backup.