SQL Server の Always On 可用性グループ(AG)運用中に、次のようなイベント(エラーログ)を見かけて不安になることがあります。😥
Always On Availability Groups transport has detected a missing log block...Log scan will be restarted to fix the issue. This is an informational message only. No user action is required.
結論から言うと、多くのケースでは「AGが自動で整合を取り直した」だけで、すぐに障害とは限りません。✅
ただし、頻発したり、同期遅延が増えるなら、原因の切り分けと恒久対策が重要です。🔍
✅ 参考:Always On(AG)やクラスタ障害を“自力で切り分けできる”ようになると、復旧が速くなり運用が一気にラクになります😊
✅ ここから先は、今回の「missing log block」系の調査・再発防止に役立つ資料と、検証環境づくりのおすすめをまとめました📚🛠️👉おすすめ本
このメッセージは、ざっくり言うと👇
✅ AGの送受信(transport)が、セカンダリ適用用のログブロックが“連続していない/欠けたように見える”状態を検知
✅ そのため、SQL Server がログスキャンを再開(restart)して整合を取り直した
✅ 多くのケースでは情報メッセージで終わる(自動回復)
Microsoft のKBでも、**「低トランザクション環境でこの情報メッセージが出ることがある」**と説明されています。📌
LSN of last applied... は セカンダリが最後に適用できた位置 を示します🧾Microsoft KB4541309 では、「10秒に1トランザクション未満」など、トランザクションが少ない環境で発生しうるとされています。
この場合、実害がなくてもログに出ることがあります。😅
類似の「missing log block / Error 19432」系について、修正KBが複数あります。
例:KB4338746(修正系の案内)
また、SQL Server 2019 CUの修正一覧にも KB4541309 が掲載されています。
この場合は、他のHADR系ログや **待機(wait)**にも兆候が出やすいです。👀
SSMSで👇
Always On 高可用性 → 可用性グループ →(対象AG)→ ダッシュボード
見るポイント🔍
以下は、セカンダリ(またはイベントが出たノード)での確認に便利です✨
(対象DB名 を置き換え)
SELECT
DB_NAME(drs.database_id) AS db_name,
drs.is_primary_replica,
drs.synchronization_state_desc,
drs.synchronization_health_desc,
drs.is_suspended,
drs.suspend_reason_desc,
drs.log_send_queue_size,
drs.redo_queue_size,
drs.redo_rate,
drs.log_send_rate,
drs.last_commit_time
FROM sys.dm_hadr_database_replica_states drs
WHERE drs.database_id = DB_ID(N'対象DB名');
この DMV は Microsoft Learn に公式説明があります。
is_suspended = 1 👉 要対応(データ移動が止まっています)🚨log_send_queue_size が増え続ける 👉 送信詰まり📤redo_queue_size が増え続ける 👉 適用(redo)詰まり📥synchronization_health_desc が NOT_HEALTHY 👉 要調査⚠️このイベント単体は軽いことが多いですが、同時刻に👇があると話が変わります😨
Microsoft KBが示す通り、情報メッセージとして自動回復するケースがあります。
この場合は、運用上は👇だけやっておくと安心です😊
このメッセージは、低トランザクション環境で発生する既知事象として修正KBが存在します。
そのため、頻発するなら👇の流れが堅いです✅
SELECT @@VERSION;
次のどれかに当てはまるなら、情報メッセージ扱いは卒業です⚠️
is_suspended = 1 が継続するredo_queue_size / log_send_queue_size が増え続けるこの場合は👇を優先します🧯
log_send_queue_size(送信詰まり)📤redo_queue_size(適用詰まり)📥synchronization_health_desc(健康状態)💚これらは sys.dm_hadr_database_replica_states で取得可能です。
is_suspended = 1 を即通知🚨A. 単発でAGが健全なら基本OKです👌
ただし、頻発や **同期遅延(queue増加)**があるなら、CU適用や基盤調査をおすすめします🛠️
A. 多くは 内部処理上の検知→再スキャンで整合を取り直したという意味です✅
ただし、I/Oエラーや接続断が絡むと別問題になるため、同時刻ログの確認が大事です🧾
A. 代表は👇です🚨
log_send_queue_size が増え続ける(送れない)📤redo_queue_size が増え続ける(適用できない)📥A. SSMSのAGダッシュボードで
A. 最新CUの適用検討が最優先です⬆️
このメッセージに関する修正KBが案内されています。
この判断軸を持っておくと、アラートが出ても慌てずに「今は問題ない」「今は動くべき」が切り分けでき、運用がかなりラクになります😊✨
イラスト1枚から、テクスチャ付…