pg_stat_replication の使い方
スタンバイの様子と遅れを見る
書き方
SELECT application_name, state, sent_lsn, replay_lsn, replay_lag, sync_state FROM pg_stat_replication; SELECT pg_wal_lsn_diff(sent_lsn, replay_lsn) FROM pg_stat_replication; \! psql -p 5433 -c "SELECT status FROM pg_stat_wal_receiver"
プライマリの pg_stat_replication は、つながっているスタンバイごとに 1 行です。sent_lsn は送った位置、replay_lsn はスタンバイが流し終えた位置で、その差(pg_wal_lsn_diff)が遅れです。スタンバイの側では pg_stat_wal_receiver で受け取りの様子を、pg_wal_replay_pause()・pg_wal_replay_resume() で流すのを止めたり再開したりできます。
例
SELECT application_name, pg_wal_lsn_diff(sent_lsn, replay_lsn) AS lag_bytes FROM pg_stat_replication;
実際に打って練習する
PostgreSQL DBA コースの Lv56「遅れを見る pg_stat_replication」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
すべてのレベルが、プラチナ以上のプランで遊べます。