アクティブ・データベースとスタンバイ・データベースの二重の障害からのリカバリ
アクティブ・データベースとスタンバイ・データベースの両方に障害が発生した場合は、両方のデータベースをリカバリする方法を選択できます。
次の例を考えてみます。
-
スタンバイ・データベースで障害が発生しました。次に、スタンバイが再起動する前、またはスタンバイがアクティブ・データベースと同期される前に、アクティブ・データベースで障害が発生しました。
-
アクティブ・データベースで障害が発生しました。スタンバイ・データベースが
ACTIVE
になり、リカバリ・プロセスの残りが開始されます。(「アクティブ・データベースの障害からのリカバリ」を参照してください。)新しいスタンバイ・データベースが新しいアクティブ・データベースと完全に同期される前に、そのアクティブ・データベースで障害が発生しました。
両方の例で、スタンバイ・データベースの場合より多くの変更がサブスクライバに適用されている可能性があります。
アクティブ・データベースで障害が発生し、アクティブ・データベースから最後に送信された変更の一部のみがスタンバイ・データベースで適用された場合、リカバリの方法として次の2つの方法があります。
-
ローカル・トランザクション・ログからアクティブ・データベースをリカバリする方法。
-
ローカル・トランザクション・ログからスタンバイ・データベースをリカバリする方法。
いずれのデータベースが使用可能かまたはいずれのデータベースがより新しいかに応じて、使用する方法を選択します。
アクティブ・データベースのリカバリ
アクティブ・データベースをリカバリするには、いくつかのタスクを実行します。
- 障害が発生したアクティブ・データベースに接続します。これによって、ローカル・トランザクション・ログからのリカバリがトリガーされます。
- 障害が発生したアクティブ・データベースのレプリケーション・エージェントが再起動されたことを確認します。再起動されていない場合は起動します。「レプリケーション・エージェントの起動および停止」を参照してください。
- 新しくリカバリされたデータベースで、
ttRepStateSet
('ACTIVE')
をコールします。 - 「キャッシュ・グループがないアクティブ・スタンバイ・ペアの設定」のステップ6を実行します。
スタンバイ・データベースのリカバリ
スタンバイ・データベースをリカバリするには、いくつかのタスクを実行します。
- 障害が発生したスタンバイ・データベースに接続します。これによって、ローカル・トランザクション・ログからのリカバリがトリガーされます。
- スタンバイ・データベースのレプリケーション・エージェントが自動的に再起動された場合は、そのレプリケーション・エージェントを停止する必要があります。「レプリケーション・エージェントの起動および停止」を参照してください。
DROP ACTIVE STANDBY PAIR
文を使用して、レプリケーション構成を削除します。CREATE ACTIVE STANDBY PAIR
文を使用して、レプリケーション構成を再作成します。- マスター・データベースで、
ttRepStateSet
('ACTIVE')
をコールして、そのデータベースにACTIVE
の役割を割り当てます。 - レプリケーション・エージェント・ポリシーを設定し、新しいスタンバイ・データベースでレプリケーション・エージェントを起動します。「レプリケーション・エージェントの起動および停止」を参照してください。
- 「キャッシュ・グループがないアクティブ・スタンバイ・ペアの設定」のステップ6から実行します。