プライマリデータベースディスクとスタンバイデータベースディスクの不整合が原因で発生するAlwaysOnバックアップの問題への対処
【要約】
エンタープライズ環境では、SQLServerデータベースの使用には多くの高可用性アーキテクチャが含まれ、AlwaysOnは現在非常に人気があります。AlwaysOnアーキテクチャでは、公式では各コピーの環境構成情報に一貫性を持たせることを推奨しています。これにより、マスターとバックアップが切り替わったときにメインの役割を引き継ぐ方が便利ですが、会社の予算の制限により、次のようなリソース割り当てが優先されます。 SSDストレージはマスターコピーを優先し、他のコピーは従来のメカニカルディスクを使用します。これにより、マスターライブラリに最高のパフォーマンスを提供し、コストを可能な限り節約できます。
このようなシナリオでは、レプリカ間のログ同期の効率にギャップがあるため、他の問題が発生する可能性がありますが、今回の問題は、プライマリレプリカとセカンダリレプリカのディスクタイプが一致しないシナリオで発生します。バックアップの失敗に問題がありました。
【テキスト】
この質問に関係する環境情報は次のとおりです。
コンピューター名
オペレーティングシステムのバージョン
データベースのバージョン
ディスクタイプ
DB01
WindowsServer2012R2
SQLServer2014withSP3
SSDフラッシュドライブ
DB02
ウィンドウズ
サーバー2012R2
SQL
Server2014withSP3
メカニカルディスク
日常の運用ではAlwaysOnに問題はなく、データは正常で、同期は正常です。
データベースのバックアップ計画は補助コピーに設定されており、長期実行は正常です。
一定期間から、補助コピーのバックアップ計画が失敗し、明確な理由情報がありません。イベント情報は次のとおりです。
問題の現象と直接的なエラー情報の観点から参照する場所がないので、まず問題の時点を確認して明確にし、次にこれらの時間の近くでシステムエラーログとデータベースエラーログを完全にチェックし、次の疑わしい情報を見つけます。
上記の情報から、データベースのログ転送に問題がある可能性があり、シャドウコピーのレベルに関しては、オペレーティングシステムにも問題がある可能性があります。
データベースのERRORLOG情報を見ると、いくつかの異常な情報も見つかりました。
この情報は、ログIOの不整合があることを示し、データベースのログファイルに特定の問題があることを示していますが、この情報は補助コピーでのみ利用可能であり、メインコピーの状態は正常です。
これらのエラーメッセージについて問い合わせるために、Microsoftの公式フォーラムは、2つのコピーが使用するディスクセクターのサイズが異なるため、このような問題が発生するという推測を発表しています。2つのサーバーのディスクセクターのバイト数を確認してください。それは確かに矛盾しています:
補助コピーの物理セクターバイト数は4096です。
マスターコピーの物理セクターバイト数は512です。
公式ドキュメントと関連ブログのガイドラインによると、ログの不整合のエラー情報はこの理由が原因である可能性が最も高いです。
https://social.msdn.microsoft.com/Forums/en-US/9e4c38ee-8dd4-45f4-9e48-3a9b13af339f/error-there-have-been-xxx-misaligned-log-ios-which-required-falling- back-to-synchronous-io-when?forum = sqldatabaseengine
https://blogs.msdn.microsoft.com/saponsqlserver/2014/10/01/message-misaligned-log-ios-which-required-falling-back-to-synchronous-io-in-sql-server-error-ログ/
https://www.mssqltips.com/sqlservertip/5942/sql-server-misaligned-log-ios-which-required-falling-back-to-synchronous-io/
しかし、補助コピーのバックアップは失敗しますか?これは関連していますか?答えは関連しています。
理論的な観点から見ると、AlwaysOnのデータ同期はログブロックの転送と受信のやり直しです。これは、2つのコピーのディスクセクターの物理バイトに一貫性がなく、ログの不整合が発生するため、不整合になる可能性が高くなります。ログファイルのうち、バックアップが失敗します。
バックアップ失敗の公式説明は次のとおりです。
そのため、シャドウコピーを作成するときに、データベースのログファイルの読み取り中にエラーが発生したと考えられます。コピーのログファイルは常にエラー状態であるため、理論的には、シャドウコピーを作成するための条件がないため、バックアップが表示されます。失敗する
参照リンク:
https://support.microsoft.com/en-us/help/2615182/windows-server-backup-may-fail-because-of-the-sql-vss-writer
問題を特定して理由を確認するために、ソースから問題を修正することにしました。ログディスクの2つのコピーの物理セクターバイトを整合するように調整し、つまり512にして、1週間観察して実行します。
一週間中、上記のエラーメッセージは再発せず、補助コピーのバックアップも正常に行われ、問題は解決しました。