PostgreSQL

Transaction ID wraparound causes forced downtime for emergency vacuuming

critical
availabilityUpdated Jan 21, 2026
Technologies:
How to detect:

Transaction IDs are 32-bit and wrap around at ~2 billion. When database age approaches autovacuum_freeze_max_age (default 200M), autovacuum performs emergency freeze operations. If these fail to keep up, database shuts down to prevent data loss.

Recommended action:

Monitor database age via database_wraparound_age_datfrozenxid and database_wraparound_age_datminmxid metrics. Ensure autovacuum is enabled and tuned. For large tables, lower autovacuum_vacuum_scale_factor to trigger more frequent vacuums. Check autovacuum logs for blocked or slow vacuum operations.