3つのレプリカを持つSQL Server AOAG 2014があります。 2自動フェイルオーバー付きの同期コミット、および手動フェイルオーバー付きの1(BCP)非同期。
これはDEV環境であり、15分ごとにログのバックアップをスケジュールしました。
BCPレプリカAOAGデータベースが「NOT SNCHRONIZING\SUSPECT」モードになりました。
ログを確認したところ、LOG DRIVEが100 GBであり、この特定のデータベースログで完全に占有されています。
SYS.DATABASES-> Log_reuse_wait_descを確認したところ、「AVAILABILITY REPLICA」が表示されました。
この特定のデータベースのログをバックアップしようとしましたが、この特定のデータベースを圧縮できません。
最後に、データベースをAOAGから削除してから再度追加して、データベースを再初期化する必要があります。次に、この特定のDBのログをバックアップして圧縮します。これで問題が解決しました。
この特定の状況で他に何ができますか?.
この状況は、セカンダリレプリカの1つでトランザクションログが適切に強化されていないことが原因です。これは、そのうちの1つが一定期間オフラインであったか、正しく接続できなかった場合に発生する可能性があります。
問題のあるレプリカを特定するには、sys.dm_hadr_database_replica_states
をクエリしてください。特に、log_send_queue_size
列に注目してください。
特にマシンを再起動した後にAGで発生する奇妙なことがいくつかあります。これにより、AGのデータベースの1つが同期を停止するだけです(ログに記録されたエラーや問題はありません)。 AGから完全に削除してから追加し直すのではなく、問題のあるセカンダリでhadr_endpoint
を再起動して、トラフィックが再び流れ始めるかどうかを確認できます。
ログファイルの増大によりドライブがいっぱいになることに注意する必要があります。これが発生すると、ログバックにロールバック情報を書き込むスペースがないため、これを引き起こしたトランザクションはロールバックすらできません。
別のドライブにデータファイルを追加してログを拡張できるようにするのが安全なオプションですが、セカンダリレプリカでは実行できないため、選択したオプションが残っていると思います。