すべてのサーバまたはサーバ上のインスタンスが停止して、業務が継続できなくなった場合について、説明します。
参照
データベース多重化運用への復旧
データベース多重化運用へ復旧するには、“5.1.1.2 スタンバイサーバの組込み”および“5.1.1.3 プライマリサーバの切り戻し”を参照してください。
これらの復旧操作の流れを以下の図に示します。
図5.3 復旧操作の流れ
以下の手順で実施してください。
アプリケーションの停止
アプリケーションの実行を停止します。
プライマリサーバの特定
以下のいずれかの方法で、停止する前に起動していたプライマリサーバを特定してください。
各サーバ上のシステムログを参照して、以下のメッセージが出力されているサーバを特定します。
メッセージ
MirroringControllerOpen[30017]: LOG: プライマリサーバへの昇格処理が完了しました (MCA00062)
各サーバ上でmc_ctlコマンドをstatusモードで実行して、none(inactivated primary)と表示されるサーバを検索します。
プライマリサーバのMirroring Controllerの停止
プライマリサーバに対して、mc_ctlコマンドをstopモードで実行します。
例)
$ mc_ctl stop -M /mcdir/inst1
注意
Mirroring Controllerの強制停止
Mirroring Controllerが停止しない場合は、mc_ctlコマンドのstopモードに-eオプションを指定して実行します。
例)
$ mc_ctl stop -M /mcdir/inst1 -e
プライマリサーバのリカバリ
まず、“運用ガイド”の“異常時の対処”を参照して、異常原因の特定とリカバリを実施してください。
次に、バックアップデータをもとにしたpgx_rcvallコマンドによるリカバリの方法でプライマリサーバを復旧します。
“3.10.2 データベースのバックアップ運用”のpgx_dmpallコマンドによるバックアップ運用を行っている場合は、以下の手順でリカバリを実施してください。
プライマリサーバおよびスタンバイサーバの両方で以下の操作を行って、最新の日付を示すバックアップデータ、およびアーカイブログが存在するサーバを調べます。
pgx_rcvallコマンドに-lオプションを付けて実行して、最新の日付を示すバックアップデータを特定します。
以下のように最新の日付を示すアーカイブログを特定します。
例)
$ ls -ltr <バックアップデータ格納先ディレクトリ>/*_xlog
最新のバックアップデータがスタンバイサーバに存在する場合は、バックアップ格納先ディレクトリごとプライマリサーバのバックアップ格納先ディレクトリに複写(注意1)して上書きします(注意2)。
最新のアーカイブログがスタンバイサーバに存在する場合は、プライマリサーバのバックアップ格納先ディレクトリに複写(注意1)して上書きします(注意2)。
プライマリサーバ上で、pgx_rcvallコマンドを手順3のバックアップ格納先ディレクトリを指定して実行します。
注意
バックアップデータにシンボリックリンクが含まれることがあるため、シンボリックリンクが通常ファイルに変換されることがないようにtarコマンドなどを使用して複写してください。
バックアップ格納先ディレクトリのコピーを退避できる場合は、上書きしてしまわないように退避してください。
参照
pgx_rcvallコマンドの詳細については、“運用ガイド”の“異常時の対処”を参照してください。
Mirroring Controller管理ディレクトリのリカバリ
バックアップデータからMirroring Controller管理ディレクトリ配下のファイルをコピーして、リカバリを実施します。
プライマリサーバのインスタンスとMirroring Controllerの起動
インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで-fオプションを指定して実行します。これにより、自動切り替え/切り離しの有効化を行います。
なお、-fオプションを指定せずに起動した場合、自動切り替え/切り離しは有効になりません。有効にするには、Mirroring Controllerを起動したあとにmc_ctlコマンドをenable-failoverモードで実行するか、-fオプションを指定してMirroring Controllerを再起動してください。
例)
$ mc_ctl start -M /mcdir/inst1 -w -f
インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで実行します。
例)
$ mc_ctl start -M /mcdir/inst1 -w
アプリケーションの再開
アプリケーションの実行を再開します。
スタンバイサーバのMirroring Controllerの停止
スタンバイサーバに対して、mc_ctlコマンドをstopモードで実行します。
例)
$ mc_ctl stop -M /mcdir/inst1
スタンバイサーバのリカバリ
“3.4.2 スタンバイサーバのインスタンスの作成・設定・登録”を参照して、プライマリサーバからスタンバイサーバを復旧(セットアップ)します。
スタンバイサーバの組込み
スタンバイサーバ上で、インスタンスおよびMirroring Controllerを起動します。
インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで-fオプションを指定して実行します。これにより、自動切り替え/切り離しの有効化を行います。
なお、-fオプションを指定せずに起動した場合、自動切り替え/切り離しは有効になりません。有効にするには、Mirroring Controllerを起動したあとにmc_ctlコマンドをenable-failoverモードで実行するか、-fオプションを指定してMirroring Controllerを再起動してください。
例)
$ mc_ctl start -M /mcdir/inst1 -w -f
インスタンス管理者ユーザーで、mc_ctlコマンドをstartモードで実行します。
例)
$ mc_ctl start -M /mcdir/inst1 -w