Vaka Çalışmaları (Post-Mortem)
Gerçek üretim (production) krizleri, kök nedenler, uygulanan çözümler ve çıkarılan dersler.
Yoğun işlem gören 12 TB'lık e-ticaret veritabanı aniden tüm yazma ve okuma işlemlerini durdurarak "database is not accepting commands to avoid wraparound data loss" hatası verdi.
Autovacuum süreçleri uzun süren analitik sorgular ve yetersiz worker ayarları (`autovacuum_max_workers=3`) yüzünden eski satırları donduramadı (vacuum freeze gecikti) ve işlem sayacı 2 milyar sınırına ulaştı.
Veritabanı Single-User moda (`postgres --single -D /var/lib/postgresql/data`) alındı. `VACUUM FREEZE ANALYZE VERBOSE` komutu doğrudan en yaşlı tablolar üzerinde çalıştırılarak TXID sayaçları sıfırlandı.
`autovacuum_freeze_max_age` eşiği ve `datfrozenxid` yaşı Prometheus ile sürekli izlenmeli; %70 dolulukta kritik alarm üretilmeli.
SELECT datname, age(datfrozenxid), 2147483648 - age(datfrozenxid) AS remaining_txids FROM pg_database ORDER BY 2 DESC;