DBAtlas · Atlas für Datenbankbetrieb

WAL-Empfangs- und Replay-Verzögerung auf dem Standby überwachen (pg_stat_wal_receiver)

PostgreSQLReplikation

Befehl

-- Run on the standby:
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;

Was es tut

Zeigt, wie viel WAL der Standby empfangen und wie viel er angewendet hat (Replay-Rückstand), das Alter der zuletzt eingespielten Transaktion, ob das Replay pausiert ist, und den Verbindungszustand des walreceiver (welche Primary, Slot, Timeline, Zeit der letzten Nachricht).

Wann einsetzen

Um Verzögerungen zu diagnostizieren, wenn die Primary nicht erreichbar ist, oder auf kaskadierenden Standbys; bei einem Alarm 'Standby im Rückstand', um ein Netzwerkproblem (Empfang) von einem Replay-Problem (I/O, Konflikt) zu unterscheiden.

Vorsicht

Liefert pg_stat_wal_receiver keine Zeilen, streamt der Standby nicht (wird aus dem Archiv gespeist oder ist getrennt). last_replay_age wächst auch, wenn auf der Primary nicht geschrieben wird; zusammen mit der Differenz receive_lsn/replay_lsn interpretieren. Wächst der Replay-Rückstand, während der Empfang voranschreitet, hat der Standby lange Abfragen (max_standby_streaming_delay) oder einen I/O-Engpass.

In DBAtlas öffnen →

Verwandte Einträge