PostgreSQL Replikasyon Gecikmesi Müdahalesi
WAL üretimi, aktarımı, yazılması ve replay aşamalarını ayrı ayrı ölçerek gecikmenin ağ, disk veya sorgu kaynaklı nedenini bulur.
Operasyonel Güvenlik ve Risk Uyarısı
Bu runbook müdahale adımları içerir; birçok adım yazma etkilidir (KILL, terminate, DROP, RESIZE). Önce test ortamında deneyin, üretimde adımları sırayla ve doğrulayarak uygulayın.
1. Belirti / Symptom
- M3 (replay gecikmesi) yükselir; standby eski veri döner veya RPO hedefi aşıldı uyarısı gelir.
- `pg_stat_replication` satırı kaybolur ya da `state` streaming değildir.
2. Etki / Impact
Standby okuması bayatlar; asenkron failover veri kaybına, senkron yapılandırmada standby erişimsizliği commit beklemesine yol açabilir.
3. Teşhis / Diagnosis
SELECT application_name, client_addr, state, sync_state,
pg_wal_lsn_diff(pg_current_wal_lsn(), sent_lsn) AS unsent_bytes,
pg_wal_lsn_diff(sent_lsn, write_lsn) AS transport_bytes,
pg_wal_lsn_diff(write_lsn, flush_lsn) AS flush_bytes,
pg_wal_lsn_diff(flush_lsn, replay_lsn) AS replay_bytes,
write_lag, flush_lag, replay_lag
FROM pg_stat_replication;SELECT pg_is_in_recovery() AS is_standby,
pg_last_wal_receive_lsn() AS received_lsn,
pg_last_wal_replay_lsn() AS replayed_lsn,
pg_is_wal_replay_paused() AS replay_paused,
now() - pg_last_xact_replay_timestamp() AS time_since_last_commit;4. Müdahale / Response
SELECT pg_wal_replay_resume(); -- yalnızca standby; kullanıcı kontrollü pause'u sona erdirir5. Doğrulama / Verification
- `pg_stat_replication.state = 'streaming'`; byte backlog azalıyor, standby receive/replay LSN'leri primary'yi yakalıyor.
- M3 ve uygulama okuma gecikmesi RPO hedefi altında 15 dakika sabit.
6. Geri Alma / Rollback
- `pg_wal_replay_resume()` geri alma için yeniden `pg_wal_replay_pause()` çağrılabilir, ancak pause RPO riskini yeniden artırır.
- Yük kısma ayarlarını önceki değerlere çevirin; standby yeniden kurulumuna başlamadan önce geçerli yedeği ve geri dönüş planını doğrulayın.