PostgreSQL Replication Lag Response
Separately measures WAL generation, transfer, flush and replay to identify network, disk or query causes of lag.
Operational Safety & Risk Notice
This runbook contains operational intervention steps; several are write-impacting (KILL, terminate, DROP, RESIZE). Verify in a staging environment first, and apply sequentially in production with verification.
1. Symptom & Signals
- 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. Business & Technical Impact
Standby okuması bayatlar; asenkron failover veri kaybına, senkron yapılandırmada standby erişimsizliği commit beklemesine yol açabilir.
3. Diagnosis & Root-Cause Analysis
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. Remediation & Action Plan
SELECT pg_wal_replay_resume(); -- yalnızca standby; kullanıcı kontrollü pause'u sona erdirir5. Verification & Health Checks
- `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. Rollback & Contingency Plan
- `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.