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」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

すべてのレベルが、プラチナ以上のプランで遊べます。

PostgreSQL の管理コマンド一覧(DBA)へ戻る