Sql-Server

數據庫級別的健康檢查沒有在失去磁碟時觸發故障轉移

  • July 31, 2019

我正在測試 2016 SQL Enterprise SP2 CU7 版中的新數據庫級別檢測選項,它似乎沒有按預期工作。我們在兩個節點上有一個 2 節點設置、同步送出、自動故障轉移。數據庫級別的健康檢測選項被選中。在主節點上,我使包含 AG 中數據庫的一個數據文件的驅動器離線。我從從失去磁碟讀取的表中執行了一個 select *,並得到了預期的 823 錯誤,該錯誤記錄在錯誤日誌中。我跑了幾次,錯誤日誌記錄了823多次。

可用性組沒有像發生這種情況時那樣進行故障轉移。我等了大約 3 分鐘,看看是否會發生故障轉移,但它從未發生過。我怎樣才能知道數據庫級健康檢查常式設置執行的頻率?我知道這需要根據這篇文章連續執行 4 次才能看到問題: 增強的數據庫級別故障轉移

我檢查了AG中的健康檢查超時值,是30秒。

我還查看了伺服器上的故障條件級別,它設置為 On CriticalServerErrors,但據我了解,此設置完全獨立於數據庫級別的健康檢查,它們中的任何一個都應該能夠自行觸發故障轉移. 它是否正確?

我唯一能想到的就是防止這種情況發生在 WSFC 管理器中的掛起超時。這在使集群資源離線之前的值為 3 分鐘。

知道我應該在哪裡尋找為什麼這沒有故障轉移嗎?

在主節點上,我使包含 AG 中數據庫的一個數據文件的驅動器離線。我從從失去磁碟讀取的表中執行了一個 select *

$$ … $$

由於您使用的是 2016 年,因此數據庫級別的健康檢查正在檢查數據庫是否線上(使輔助文件離線不會改變)並且我們可以寫入事務日誌。由於這兩個都是真的,你的測試通過了。這就是它在 2016 年的運作方式。

知道我應該在哪裡尋找為什麼這沒有故障轉移嗎?

是的,見上文。這在 2017 年更改為包含更多內容。

引用自:https://dba.stackexchange.com/questions/244237