Marlock Homes Diary

備忘録。忘れないように書きます。

PostgreSQLのマスタ判断

PostgreSQLのストリーミングレプリケーションで、どちらのサーバがマスタとして動作しているのか、判断する方法です。
リカバリ中かを判定する関数を実行し、確認します。スレーブでは、マスタのWALを受け取り、リカバリを行うため、常にリカバリ中となります。


1.マスタとして動作していた場合 ※

$ psql -h localhost  -c  "SELECT pg_is_in_recovery();"
 pg_is_in_recovery
-------------------
 f
(1 行)


2.スレーブとして動作していた場合

$ psql -h localhost  -c  "SELECT pg_is_in_recovery();"
 pg_is_in_recovery
-------------------
 t
(1 行)


※ ただし、スタンドアローンで動作している場合も、fとなるので注意が必要。
  マスタとして動作しているのか、スタンドアローンで動作しているかは、
  以下のコマンドで確認する。
  スタンドアローンの場合、データが表示されない。

$ psql -h localhost  -c  "SELECT * FROM pg_stat_replication"