none
異なるリージョン間の自動フェールオーバー グループにおけるデータ損失について RRS feed

  • 質問

  • azureのSQL Databaseの異なるリージョン間の自動フェールオーバー グループに関して、
    下記内容をご教示いただけないでしょうか。


    ◆質問内容

    (1)「自動フェールオーバーグループ」の目標復旧時点 (RPO)「5秒」とは、
       何の期間を示すのか。
       プライマリDBからセカンダリDBへレプリケートされる間隔が5秒間で、
       その期間データ損失する可能性があるという認識で合っているか。

    (2)プライマリDBに対するセカンダリDBの状態に遅延があり(例えば1分間)、かつ、非同期で
       プライマリDBからセカンダリDBへ送られたデータがセカンダリDBに到達しない場合、
       フェイルオーバーによるデータ損失は5秒間を超える可能性があるという認識で合っているか。

    (3)セカンダリDBを配置するリージョンの違いによる影響は何か。
       例えば、「プライマリ:東日本リージョン・セカンダリ:西日本リージョン」と、
      「プライマリ:東日本リージョン・セカンダリ:米国西部リージョン」の場合で、
       目標復旧時点 (RPO)は変わるか?

    2020年1月27日 3:35

すべての返信

  • (1) については、ご認識の通りだと思います。以下は参考情報となります。

    Azure SQL Database によるビジネス継続性の概要
    https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-business-continuity
    + 予期しない破壊的なイベントからの復旧中にアプリケーションが損失を許容できる最大データ更新 (期間) 量についても理解しなければなりません。 潜在的なデータ損失は、目標復旧時点 (RPO) と呼ばれます。

    (2) についても、データ同期のアーキテクチャに AlwaysOn 可用性グループ 機能が使用されているため、何らかの要因により、同期が遅延するような状況になっている場合、データ損失されるデータ量も増えることが想定されますね。

    (3) については、データ同期に伴う物理的なネットワーク遅延の影響が異なるかと。東日本から西日本へ同期するよりも、東日本から米国西部へ同期するほうが、ネットワークの遅延が大きい分、データ同期完了までの時間も多くなることが想定されます。
    目標復旧時点 (RPO)は、あくまで目標値であるという認識でいますが、AlwaysOn 可用性グループの非同期処理が5分間隔で実施されているわけではないので、セカンダリDBの配置先により、マイクロソフト側で目標復旧時点 (RPO)を設定されていないのではないかと推測しています。
    なお、どうしてもデータを損失したくないのであれば、プライマリ側DBのパフォーマンスが低下しますが、sp_wait_for_database_copy_sync を実行するという方法があります。

    アクティブ geo レプリケーションの作成と使用
    https://docs.microsoft.com/ja-jp/azure/sql-database/sql-database-active-geo-replication#preventing-the-loss-of-critical-data
    2020年1月28日 8:47