Sql-Server
如何在可用性組儀表板中調試不斷增長的重做隊列大小?
在過去的幾個小時裡,我的輔助副本伺服器 (SQL16) 上的重做隊列大小一直在增長。在過去一個小時左右的時間裡,我沒有發現任何長時間或繁重的跑步,所以我不確定這是從哪裡來的。
我的索引維護工作在昨晚執行,這非常強大,通常會導致副本之間的這種“滯後”同步,但通常會在早上清除。
我記錄了重做隊列大小,可以看到它在夜間飆升,然後像往常一樣開始下降。作業在幾小時前完成,重做隊列大小在作業期間飆升至 10 GB 左右,在作業完成後又回落到 1.5 GB 左右,但現在它再次增長,儘管從那以後沒有執行任何繁重的任務。
注意:我的輔助副本設置為同步副本。
除了打開與 Microsoft 的事件進行調查外,沒有其他方法可以“調試”它。他們可能能夠獲得一系列程序轉儲或啟用一些更詳細的日誌記錄以查看是否存在掛起的執行緒,但您可能不得不將其保持在目前狀態很長一段時間,所以這是不利的一面。
根據我對相同症狀的經驗,停止和啟動輔助伺服器上的 SQL Server 服務將解決該問題(除非您有導致它的基礎 I/O 問題)。數據庫可能需要一段時間才能恢復,因為它必須播放重做隊列中的所有事務,在此期間,複製將暫停。您可以在錯誤日誌中跟踪數據庫恢復的進度,一旦數據庫恢復,複製將恢復。
請查看此網頁:
有不同的指標可供查看,它可以幫助您了解導致問題的原因。
實際上,重做部分是當 SQL 應用寫入輔助節點的 ldf 文件的日誌以更新 mdf 中的數據頁時。
檢查“SQL Server:Database Replica > Redone Bytes/sec”性能計數器以查看重做速率。如果這個數字很大,可能只是主節點上的活動比正常情況多。如果該數字很低,您可能需要尋找可以鎖定數據頁的會話。