こんにちは。SQL Server サポート チームです。
今回は、分散型可用性グループにおける同期が突然失敗する事象についてご紹介します。
事象
SQL Server 2022 で分散型可用性グループを構成し FILESTREAM を使用している環境において、正常に稼働していた分散型可用性グループが突如同期に失敗し、同期の状態が NOT_HEALTHY になります。
<事象発生構成>
・SQL Server 2022
・分散型可用性グループ
・FILESTREAM
原因
前提として、FILESTREAM の機能はログの順序性が重要になっています。
SQL Server 2022 より、パフォーマンス向上を目的に分散型可用性グループ間で、下記の弊社公開情報に記載している通り複数の TCP 接続を使用できるようになりました。
SQL Server 2022 の新機能により複数の TCP セッションからログを転送することで、FILESTREAM の内部的なログの順序がずれてしまうことで、同期に異常が発生することが原因です。
SQL Server 2022 (16.x) の新機能
– 可用性
https://learn.microsoft.com/ja-jp/sql/sql-server/what-s-new-in-sql-server-2022#availability
*****
分散型可用性グループ – tcp 待機時間が長いリモート リンク間のネットワーク帯域幅使用率を向上させるために、複数の TCP 接続を使用するようになりました。
*****
対処策
本事象の対処策は、トレースフラグ 5597 を設定することです。
トレースフラグ 5597 は、SQL Server 2022の新機能(分散型可用性グループにおける複数TCP使用) を無効するのみで、以前のバージョンと同等な動作となり、他への影響はありません。
変更手順
トレースフラグ 5597 の設定方法は、以下の通りです。
トレースフラグ設定方法
——————————–
1) SQL Server Configuration Manager (構成マネージャー)を起動します。
2) SQL Serverのサービス-> SQL Server (MSSQLSERVER もしくは インスタンス名) を右クリックし、プロパティを開きます。
3) [起動時のパラメーター] タブの[起動時のパラメーターの指定] ボックスに下記の値を入力し、[追加] をクリックします。
-T5597