Pular para conteúdo

PG-WRAPAROUND-001 · Risco de wraparound de XID

Severidade Confiança Permissão Aplica-se a
Crítica Indício (idade ≥ 1,5 × autovacuum_freeze_max_age) · Confirmado (idade ≥ 1 bilhão) public Todas as versões e serviços PostgreSQL

O que verifica

age(datfrozenxid) de cada banco que aceita conexões.

Por que importa

Perto de 2³¹ (≈ 2,1 bilhões) de IDs de transação, o PostgreSQL deixa de aceitar escritas para proteger os dados. A recuperação exige um VACUUM longo. Uma idade bem acima de autovacuum_freeze_max_age indica que o autovacuum está ficando para trás.

Próxima ação

-- No banco afetado: as tabelas mais antigas
SELECT c.oid::regclass, age(c.relfrozenxid) FROM pg_class c
WHERE c.relkind IN ('r', 'm', 't') ORDER BY 2 DESC LIMIT 20;

Rode VACUUM (FREEZE, VERBOSE) nelas e procure o que trava o autovacuum: transações longas, slots de replicação abandonados, prepared transactions antigas.

Limitações

Um retrato mostra a idade atual, não a velocidade de consumo. Quantos dias faltam exige histórico.