DBAtlas · Veritabanı operasyon atlası

Standby tarafında WAL alım ve replay gecikmesini izle (pg_stat_wal_receiver)

PostgreSQLReplikasyon

Komut

-- Standby'da çalıştır:
SELECT pg_is_in_recovery() AS in_recovery,
       pg_last_wal_receive_lsn() AS receive_lsn,
       pg_last_wal_replay_lsn() AS replay_lsn,
       pg_size_pretty(pg_wal_lsn_diff(pg_last_wal_receive_lsn(), pg_last_wal_replay_lsn())) AS replay_backlog,
       now() - pg_last_xact_replay_timestamp() AS last_replay_age,
       pg_get_wal_replay_pause_state() AS pause_state;
SELECT pid, status, sender_host, sender_port, slot_name, received_tli, flushed_lsn, latest_end_lsn, now() - last_msg_receipt_time AS since_last_msg FROM pg_stat_wal_receiver;

Ne yapar?

Standby'ın ne kadar WAL aldığını ve ne kadarını uyguladığını (replay backlog), son uygulanan transaction'ın yaşını, replay'in duraklatılıp duraklatılmadığını ve walreceiver bağlantısının durumunu (hangi primary, slot, timeline, son mesaj zamanı) gösterir.

Ne zaman kullanılır?

Primary'ye erişim yokken veya cascading standby'larda gecikmeyi teşhis etmek; 'standby geride' alarmında sorunun ağda (alım) mı yoksa replay'de (I/O, conflict) mi olduğunu ayırmak için.

Dikkat

pg_stat_wal_receiver boş dönüyorsa standby streaming yapmıyordur (arşivden besleniyor veya bağlantı kopuk). last_replay_age primary'de yazma yokken de büyür; receive_lsn/replay_lsn farkıyla birlikte yorumla. Replay büyürken receive ilerliyorsa standby'da uzun sorgular (max_standby_streaming_delay) veya I/O darboğazı vardır.

DBAtlas'ta aç →

İlgili