web-dev-qa-db-ja.com

AlwaysOn可用性グループの強制フェールオーバー

ご意見をお聞かせください。

SQL 2012をデータベースの常時オンの可用性グループを使用して同期し、セカンダリ読み取り可能モードでセットアップします。同期モードでフェイルオーバーテストを完了しましたが、期待どおりに機能しています。

非同期モードで強制フェイルオーバーテストを行った後、古いプライマリデータベースを再構築する必要がありますか?新しいプライマリの変更は反映されないためです。データベースのステータスが同期されていません...同期するのではなく...

私がこの概念について頭に浮かんだので、あなたの意見を感謝します。

ありがとうございました

4
TDPSQL_Newbie

非同期モードで強制フェイルオーバーテストを行った後、古いプライマリデータベースを再構築する必要がありますか?

データベースを「再構築」することの正確な意味はわかりませんが、データベースがまだ稼働状態にある場合は、そのようなアクションを実行する必要はありません。

強制フェイルオーバーを実行することによって表示されるのは、仕様によるものです。強制フェイルオーバーを実行すると、完全に追いついていない、またはプライマリレプリカと同じ時点のレプリカにフェイルオーバーした可能性があります。そのため、現在プライマリレプリカからセカンダリレプリカへのデータ移動は一時停止されているため、「背後」にあるデータベースにいる場合は、手動で介入する方法があります。あなたが見ているその行動は良いことです。

このBOLリファレンス はすべてを説明しています:

強制フェイルオーバーの後、すべてのセカンダリデータベースが一時停止されます。これには、以前のプライマリレプリカがオンラインに戻り、それが現在セカンダリレプリカであることを検出した後の、以前のプライマリデータベースが含まれます。 各セカンダリレプリカで、一時停止した各データベースを個別に手動で再開する必要があります。

セカンダリデータベースが再開されると、対応するプライマリデータベースとのデータ同期が開始されます。 セカンダリデータベースは、新しいプライマリデータベースでコミットされなかったログレコードをロールバックします。したがって、フェールオーバー後のプライマリデータベースでデータが失われる可能性がある場合は、同期コミットセカンダリデータベースの1つにある一時停止中のデータベースにデータベーススナップショットを作成してみてください。

AGデータベースを再開する方法に関するこのBOLリファレンス を参照してください。

このためのT-SQLは次のようになります。

alter database YourDatabaseName
set hadr resume;

注/警告/免責事項:データの移動を再開することでデータの損失を引き起こさないようにするために、実際にはいくつかの作業を行う必要があります。上記を参照してください、それは大きな問題になる可能性があります。データ移動を一時停止するのは、まさにこの理由によるものです。可能な限り多くのデータを手動で回復できるようにするためです。データの移動を再開すると、元に戻すことはできません。強制フェイルオーバー後にデータの移動を再開するときは、常に「潜在的なデータ損失」という言葉を頭に浮かばせる必要があります。

5
Thomas Stringer