切り離し発生後の縮退運転における運用操作について、説明します。
注意
スタンバイサーバの異常によって切り離しが発生してからスタンバイサーバの組込みを行うまで、データベースは多重化構成ではありません。できるだけ早急に異常原因を取り除き、スタンバイサーバの組込みを行ってください。
切り離しが発生して縮退運転が行われている場合は、以下の運用操作を行ってスタンバイサーバを復旧してもとの状態に戻します。
スタンバイサーバのリカバリ
スタンバイサーバの組込み
これらの運用操作の流れを以下の図に示します。
図8.2 運用操作の流れ
以下の手順でリカバリを実施してください。
異常が発生したスタンバイサーバに対して、mc_ctlコマンドをstopモードで実行します。
例)
$ mc_ctl stop -M /mcdir/inst1
これにより、リカバリを実施する必要があるインスタンスも停止します。
注意
停止しない場合は、“運用ガイド”の“インスタンス停止失敗時の対処”を参照して、インスタンスを停止します。
そのあと、上記のコマンドにeオプションを指定してMirroring Controllerを強制停止してください。
プライマリサーバとスタンバイサーバのシステムログを参照して異常の原因を特定したあと、復旧します。
pg_basebackupコマンドを実行して、プライマリサーバのデータをもとにしたスタンバイサーバのリカバリを以下の手順で実施します。
recovery.confファイルの退避
インスタンスの格納先ディレクトリに格納されているrecovery.confファイルを退避します。このファイルが壊れているか存在していない場合は、“6.4 スタンバイサーバのインスタンスの作成・設定・登録”の手順3に示した方法で再作成してください。
インスタンスの格納先ディレクトリ内の削除
OSのコマンドを使用して、スタンバイサーバのインスタンスの格納先ディレクトリ配下の資源を削除します。ディレクトリは、削除しないでください。
テーブル空間の格納先ディレクトリの削除
テーブル空間の格納先がインスタンスのデータ格納先ディレクトリ配下以外に配置されている場合は、OSのコマンドを使用して、スタンバイサーバのテーブル空間の格納先ディレクトリ配下の資源を削除します。ディレクトリは削除しないでください。
pg_basebackupコマンドによるインスタンスの同期
pg_basebackupコマンドの出力先のディレクトリにスタンバイサーバのインスタンスの格納先ディレクトリを指定して実行します。これにより、インスタンスを同期します。
例)
$ pg_basebackup -D /database/inst1 --xlog --progress --verbose -h プライマリサーバのIPアドレス -p プライマリサーバのポート番号
注意
プライマリサーバのインスタンスのデータ格納先ディレクトリ配下において、pg_xlogディレクトリなどを負荷分散のためにシンボリックリンクを作成して運用している場合、pg_basebackupコマンドの実行ではシンボリックリンクを複製しません。
pg_basebackupコマンドの実行が正常終了したあと、スタンバイサーバにおいてシンボリックリンクを作成しなおしてください。
recovery.confファイルの格納
手順1で退避したrecovery.confファイルをインスタンスの格納先ディレクトリ内にコピーします。
postgresql.confファイルの編集
インスタンスの複製により、synchronous_standby_namesパラメータの内容がプライマリサーバでの指定内容になるため、スタンバイサーバでの指定内容へ修正します。コメントアウトされている場合は、アンコメントしてください。
参照
このリカバリ手順は、recovery.confファイルの作成方法以外は、スタンバイサーバをセットアップする手順と同じです。
“6.4 スタンバイサーバのインスタンスの作成・設定・登録”を参照して、リカバリを実施してください。
バックアップデータからMirroring Controller管理ディレクトリ配下のファイルをコピーして、リカバリを実施します。
スタンバイサーバを起動して、プライマリサーバとスタンバイサーバを組込みます。
復旧したサーバをスタンバイサーバとして起動します。
以下の手順で行います。
スタンバイサーバに対して、Mirroring Controllerとインスタンスを起動します。
インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードでfオプションを指定して実行します。これにより、自動切り替え/切り離しの有効化を行います。
なお、fオプションを指定せずに起動した場合、自動切り替え/切り離しは有効になりません。有効にするには、Mirroring Controllerを起動したあとにmc_ctlコマンドをenable-failoverモードで実行するか、fオプションを指定してMirroring Controllerを再起動してください。
例)
$ mc_ctl start -M /mcdir/inst1 -f
インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで実行します。
例)
$ mc_ctl start -M /mcdir/inst1
postgresql.confファイルのsynchronous_standby_namesパラメータがコメントアウトされている場合は、アンコメントしてください。
プライマリサーバにおいて、pg_ctlコマンドをreloadモードで実行して、postgresql.confファイルの編集内容の有効化を行います。
例)
$ pg_ctl reload -D /database/inst1