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"