無法截斷事務日誌,log_reuse_wait_desc - AVAILABILITY_REPLICA
今天早上,我被我們的一個數據庫上的事務日誌完整警報喚醒。該伺服器是一個永遠線上的集群,也是一個事務複製訂閱者。我檢查了 log_reuse_wait_desc,它顯示了 logbackup。4 天前有人不小心禁用了日誌備份作業,我重新啟用了日誌備份作業並且日誌被清除了。由於現在是凌晨 4 點,我想我會在那天早上晚些時候去辦公室並縮小日誌,因為它已經增長到 400GB。
上午 10 點——我在辦公室,我在縮小之前檢查了日誌使用情況,大約是 16%。我很驚訝並檢查了顯示複製的 log_reuse_wait_desc。我很困惑,因為這是一個複制訂戶。然後我們看到為 CDC 啟用了 db,並認為這可能是原因,所以禁用了 CDC,現在 log_reuse_wait_desc 顯示 AVAILABILITY_REPLICA。
同時,日誌使用量仍在穩步增長,目前為 17%。我檢查了alwayson儀表板並檢查了已發送和重做隊列,兩者幾乎為零。我不確定為什麼日誌重用顯示為 AVAILABILITY_REPLICA 並且無法清除日誌。
知道為什麼會這樣嗎?
如果你這樣做:
SELECT * FROM sys.databases
log_reuse_wait_desc 顯示 AVAILABILITY_REPLICA,這意味著 SQL Server 正在等待將日誌數據發送到您的 Always On 可用性組副本之一。其中一個副本可能由於網路速度慢而落後,或者它可能完全關閉。
如果您檢查 AG 儀表板並且它沒有顯示任何隊列,那麼您可能是執行緒耗盡的受害者。AG 儀表板在工作執行緒耗儘後停止更新是一個已知問題。您需要直接檢查每個副本的狀態,而不是依賴主副本。Nick 在 Connect 項中的註釋說,您可以更改副本的屬性以重新啟動複製,但這並不總是有效(特別是如果您在副本上有數百個數據庫需要發送大量數據,並且重新啟動複製只會導致工作執行緒再次耗盡。)
如果最後一個人設置了一個 AG 副本並且它不應該再存在,那麼是時候刪除該 AG 和/或副本了。請注意,應用程序未指向偵聽器名稱以連接到您的 SQL Server。