同期レプリケーションでの障害対応について、具体例を使って説明する。
なお、分量が多いのでここでは一部のみ公開。全体はこちら
(2012.10.30追記)最新情報は書籍にまとめたので、参照のこと。
マスタ:スレーブ = 1:1の場合
マスタ障害:スレーブが1台の場合
マスタ1台、スレーブ1台構成で、マスタに障害が発生した場合の対処を説明する。
ver9.0ではスレーブのマスタ昇格にはtriggerファイルの設定が必要だったが、 ver9.1ではpg_ctlコマンドで実行できるようになった。
sampledb=# SELECT application_name,state,sync_priority,sync_state FROM pg_stat_replication; application_name | state | sync_priority | sync_state ------------------+-----------+---------------+------------ slave1 | streaming | 1 | sync (1 row)
今、マスタをimmediateでshutdownし、slave1サーバ上でpg_ctl promoteコマンドを実行する。
slave1> pg_ctl -D /usr/local/pgsql/data/ promote
これで、slave1は検索だけでなく更新も実行できるようになった。
スレーブ障害:スレーブが1台の場合
スレーブ障害、および複数スレーブ構成での障害対応については上記の書籍を参照。