ユーザーの誤操作によってデータ破壊が発生した場合に、インスタンスをリカバリする方法について、説明します。
たとえば、アプリケーションおよびコマンドによって、誤ったデータを意図しないデータに変更してしまった場合や削除してしまった場合などのように、誤操作によってデータを破壊してしまった場合は、プライマリサーバ上のデータをもとに戻して、スタンバイサーバと再同期する必要があります。
以下の手順で復旧します。
プライマリサーバの特定
各サーバ上でmc_ctlコマンドをstatusモードで実行して、“primary”または“none(inactivated primary)”と表示されるサーバを検索します。
誤操作の原因となったアプリケーションおよびコマンドの停止
プライマリサーバで動作したアプリケーションおよびコマンドを停止します。これにより、誤ったデータによる影響を抑えます。
また、スタンバイサーバで参照用のアプリケーションを実行している場合は、動作中のアプリケーションを停止します。
インスタンスおよびMirroring Controllerの停止
プライマリサーバおよびスタンバイサーバのインスタンスとMirroring Controllerを停止します。
例)
$ mc_ctl stop -a -M /mcdir/inst1
プライマリサーバのデータベースの復旧
誤操作を行った時間よりも過去のリストアポイントの時点まで、バックアップデータをもとにしたpgx_rcvallコマンドによるリカバリ方法でデータベースを復旧します。
参照
pgx_rcvallコマンドによるリストアポイントの時点までの復旧手順の詳細は、“運用ガイド”の“ユーザーの誤操作からのリカバリ”を参照して、インスタンス停止状態でのデータベースのリカバリ手順のみを行ってください。
インスタンスおよび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
新スタンバイサーバの構築
“3.4 スタンバイサーバのセットアップ”を参照して、プライマリサーバからスタンバイサーバを構築(セットアップ)します。