すべてのサーバまたはサーバ上のインスタンスが停止して、業務が継続できなくなった場合について、説明します。
参照
データベース多重化運用への復旧
データベース多重化運用へ復旧するには、“8.1.1.2 スタンバイサーバの組込み”および“8.1.1.3 プライマリサーバの切り戻し”を参照してください。
復旧操作の概要
データベース多重化システムを構成する特定のサーバにおいて、異常が発生する直前の状態にデータベースを復旧したあと、データベース多重化システムを再構築します。
つまり、データベースを復旧するサーバを特定して新プライマリサーバとして復旧したあと、それ以外のサーバを新スタンバイサーバとして再構築します。
これらの復旧操作の流れを以下の図に示します。
図8.3 復旧操作の流れ
以下の手順で実施してください。
アプリケーションの停止
アプリケーションの実行を停止します。
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コマンドに-lオプションを付けて実行して、最新の日付を示すバックアップデータを特定する例を以下に示します。
$ pgx_rcvall -l -D /database/inst1 Date Status Dir 2013-07-01 13:30:40 COMPLETE /backup/inst1/2013-07-01_13-30-40
新プライマリサーバのデータベースの復旧
バックアップデータをもとにしたpgx_rcvallコマンドによるリカバリ方法でデータベースを復旧します。
データベース多重化ステムを構築しているすべてのサーバで以下の操作を行って、最新の日付を示すアーカイブログおよび二重化されたトランザクションログが存在するサーバを調べます。
例)
最新の日付を示すアーカイブログおよび二重化されたトランザクションログを特定する例を以下に示します。
$ ls -ltr <バックアップデータ格納先ディレクトリ>/*_xlog
最新のアーカイブログおよび二重化されたトランザクションログが存在するサーバが、手順3で特定した新プライマリサーバと異なる場合は、新プライマリサーバのバックアップ格納先ディレクトリに、以下に示すディレクトリ配下のすべてのファイルおよびディレクトリを複写して上書きします。
アーカイブログおよび二重化されたトランザクションログの配置先ディレクトリ
<バックアップデータ格納先ディレクトリ>/*_xlog
新プライマリサーバ上で、pgx_rcvallコマンドを手順4のバックアップ格納先ディレクトリを指定して実行します。
例)
pgx_rcvallコマンドに-Bオプションを付けて実行する例を以下に示します。
$ pgx_rcvall -B /backup/inst1 -D /database/inst1
参照
pgx_rcvallコマンドの詳細については、“運用ガイド”の“異常時の対処”を参照してください。
Mirroring Controller管理ディレクトリのリカバリ
新プライマリサーバでバックアップデータから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
アプリケーションの再開
アプリケーションの実行を再開します。
新スタンバイサーバの構築
“6.4 スタンバイサーバのセットアップ”を参照して、プライマリサーバからスタンバイサーバを構築(セットアップ)します。