復旧手順


(1) クラスタサーバの障害監視とリカバリ

クラスタサーバに障害が発生した場合,レプリケーションサーバは内部で保持しているテーブルのステータスに異常をセットします.このとき,ログファイルにもホスト名とステータスを書き出します.ログファイルはpgreplicate起動時に指定した設定ファイルのパスの下に"pgreplicate.log"というファイルで作成されます.このログファイルに"error"のステータスが書かれたクラスタサーバは,レプリケーションテーブルから切り離されていますので,サーバを修復してください.
修復が完了したクラスタサーバは,データ復旧のオプション(-R)を指定することで,起動時にデータ復旧を行ってレプリケーションテーブルに登録されます.

"-R"オプションによる,クラスタDBの復旧はrsyncコマンドを使用しています.事前に「rsyncの設定」行ってください.

クラスタサーバのデータ復旧指定の起動
-------------------------------------------
# su -l postgres
$ cd /usr/local/pgsql
$ bin/pg_ctl start -o "-R"

復旧後のステータスもログに書かれますので,確認することができます.

(2) クラスターサーバーの追加

クラスタサーバの新規追加は前述のリカバリと同じ手順で行うことができます.
なお,クラスタサーバの追加によるデータの同期は,マスタDB(最初に登録したクラスタDB)から行います.
そのため,クラスタサーバの追加中はマスタDBをリードオンリーにロックします.
クラスタサーバの追加中に更新系のクエリーを受け付けたい場合は,クラスタDBを3台以上用意してください.
マスタDBをリードオンリーにロックしている間に受けたクエリーはレプリケーションサーバ内にキューイングされ,rsync終了後に処理されます.

(3) レプリケーションサーバとロードバランサの追加

レプリケーションサーバとロードバランサの情報は,クラスタサーバやレプリケーションサーバの設定ファイルで宣言していますが,これらを後から動的に(クラスタサーバやレプリケーションサーバを止めずに)追加することはできません.設定ファイルにレプリケーションサーバやロードバランサの情報を追加し,クラスタサーバとレプリケーションサーバを再起動(停止+起動)を行ってください.