PostgreSQL 复制延迟的定位与修复
备库数据落后于主库,pg_stat_replication 的 replay_lag/write_lag 增大,只读查询看到旧数据。严重时备库无法追上,WAL 堆积。
SELECT application_name, client_addr, state,
sent_lsn, write_lsn, flush_lsn, replay_lsn,
write_lag, flush_lag, replay_lag
FROM pg_stat_replication;
SELECT pg_wal_lsn_diff(pg_current_wal_lsn(),
replay_lsn) AS lag_bytes
FROM pg_stat_replication;
备库:
SELECT pg_last_wal_receive_lsn(), pg_last_wal_replay_lsn(),
now() - pg_last_xact_replay_timestamp() AS replay_delay;
hot_standby_feedback)。wal_keep_size/归档配置不当。write_lag 与 replay_lag。max_wal_senders、wal_keep_size 和复制槽策略。psql — 复制状态查询pg_waldump — WAL 分析pg_basebackup — 重建备库合上页面,先回答,再展开对照。
pg_stat_replication 的 write_lag 与 replay_lag(及对应 LSN),比较写入与回放的差距。pg_last_wal_receive_lsn()、pg_last_wal_replay_lsn() 和 now() - pg_last_xact_replay_timestamp()。wal_keep_size/复制槽并监控 lag。