NOBTAの気ままにITブログ

Azure全般 / SQL Serverに関する情報を発信していきます。

【第5回 SQL Server 2022 新機能】分散型可用性グループ REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT オプション


スポンサーリンク

第4回では、SQL Server 2022 の新機能の一つである 包含可用性グループ についてまとめてみました。

 

今回は、SQL Server 2022 の新機能の一つである 分散型可用性グループ REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT オプション について、自分の整理も兼ねてまとめてみようと思います。

 

 

REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT オプションについて

REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT オプションは、SQL Server 2017 以降の Always On 可用性グループで利用可能となっているオプション設定です。

REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT オプションにより、以下のような動作が行われます。

SQL Server 2022 では、分散型可用性グループに対しても REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT オプションを利用することが可能になったようです。
※ 但し、本オプションは新規分散型可用性グループ作成時には指定できず、ALTER AVAILABILITY コマンドで後から変更する必要があるようです。

 

  • REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT : 0
    Always On 可用性グループの可用性モードが同期コミットの場合、プライマリ レプリカに対して発生したトランザクション (コミット) は、トランザクション情報がセカンダリ レプリカのトランザクションログに書き込まれるまで待ち状態となる。
    但し、設定した接続タイムアウト値 (既定 15秒) を超えてセカンダリ レプリカからの応答がない場合、セカンダリ レプリカを切り離して、プライマリ レプリカ側でコミット処理を継続するという動作が行われる。
    ※ SQL Server 2016 Always On 可用性グループと同じ動作。
     
  • REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT : 1 以上を設定
    Always On 可用性グループの可用性モードが同期コミットの場合、プライマリ レプリカに対して発生したトランザクション (コミット) は、トランザクション情報がセカンダリ レプリカのトランザクションログに書き込まれるまで待ち状態になる。
    但し、設定した接続タイムアウト値 (既定 15秒) を超えてセカンダリ レプリカからの応答がない場合、セカンダリ レプリカを切り離して、プライマリ レプリカ側でコミット処理を継続するという動作が行われるという動作までは同じですが、REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT の設定値により、プライマリ レプリカでコミットするためにトランザクション情報の書き込み必要なセカンダリ レプリカの最小数が設定されます。
    例えば、本オプション設定値が「1」の場合、プライマリ レプリカでコミットするためにトランザクション情報の書き込み必要なセカンダリ レプリカの最小数が「1」となるようです。

    なお、同期セカンダリ レプリカが障害などでダウンし復旧した場合、本オプション設定値に指定した数の同期セカンダリ レプリカとプライマリ レプリカ間のデータ同期が完了するまで、プライマリ レプリカへのトランザクション (コミット)が失敗するようなので注意が必要かと思います。

 

REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT オプションの詳細については、以下の URL を参照

 

分散型可用性グループでREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT オプションを利用するメリットについて

意図しない障害発生時以外で分散可用性グループ セカンダリ可用性グループへ手動フェールオーバーを実施する場合、確実にデータ損失を発生させずにフェールオーバーを実施させたいと考えるかと思います。

分散型可用性グループでREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT オプションを使用することで、確実にデータ損失を発生させず手動フェールオーバーを実施することが可能となるようです。

 

分散可用性グループのデータ損失を発生させない手動フェールオーバーの詳細については、以下の URL を参照。

 

まとめ

今回は、SQL Server 2022 の新機能の一つである 分散型可用性グループ REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT オプション についてまとめてみました。

分散型可用性グループで本オプションを利用することで、確実にデータ損失を発生させることなく手動フェールオーバーを実施することが可能になるようです。

しかしながら、本オプションを有効化した状態で分散可用性グループで障害発生し、障害が発生したレプリカノードが復旧した場合、レプリカ間のデータ同期が完了するまで 可用性データベースにアクセスができない状況が発生するようなので、特に要件がなければ、分散型可用性グループで手動フェールオーバーを実施する際に一時的に有効にするなどの用途で利用することを検討されると良いかもしれません。

 

※ 2023年3月時点