資料庫映象期間可能出現的故障處理

iSQlServer發表於2008-11-17

物理故障、作業系統故障或 SQL Server 故障都可能導致資料庫映象會話失敗。 資料庫映象不會定期檢查 Sqlservr.exe 所依賴的元件來驗證元件是在正常執行還是已出現故障。 但對於某些型別的故障,受影響的元件將向 Sqlservr.exe 報告錯誤。由另一個元件報告的錯誤稱為“硬錯誤”。 為了檢測可能未被注意的其他故障,資料庫映象採用了自己的超時機制。 發生映象超時時,資料庫映象將假定已發生故障並宣告一個“軟錯誤”。

重要提示:
在資料庫映象會話中無法檢測到資料庫(除映象資料庫之外)故障。 此外,也無法檢測到資料磁碟故障,除非資料庫因為資料磁碟故障而重新啟動。
 


因此,錯誤檢測的速度以及映象會話對故障的反應時間取決於是硬錯誤還是軟錯誤。 系統可以立即報告某些硬錯誤,例如網路故障。 但在某些情況下,特定於元件的超時期限可能會延遲報告某些硬錯誤。 對於軟錯誤,映象超時期限的長度決定了錯誤檢測的速度。 預設情況下,此期限為 10 秒鐘。 這是建議的最小值。

 硬錯誤導致的故障
可能的硬錯誤原因包括(但不限於)下列幾種情況:

連線或網線斷開

網路卡出現故障

路由器更改

防火牆更改

端點重新配置

事務日誌駐留的驅動器丟失

作業系統或程式故障

例如,如果主體資料庫中的日誌驅動器停止響應或失敗,作業系統會通知 Sqlservr.exe 出現嚴重錯誤。

某些元件(如網路元件和某些 IO 子系統)使用它們自己的超時設定來確定故障。 這些超時設定獨立於資料庫映象,資料庫映象不瞭解它們,並且完全不能識別其行為。 在這些情況下,超時延遲會延長髮生故障與資料庫映象收到所引發硬錯誤之間的時間。

注意:
出現軟錯誤時,僅對資料庫映象執行活動的錯誤檢查。 有關詳細資訊,請參閱本主題後面的“軟錯誤導致的故障”。
 


若要了解網路出現的錯誤情況,請諮詢網路工程師,詢問當 TCP 連線發生下列事件時,哪些錯誤訊息會傳送到埠:

DNS 未執行。

網線被拔掉。

Microsoft Windows 防火牆阻止了特定埠。

監視埠的應用程式出現故障。

重新命名基於 Windows 的伺服器。

重新啟動基於 Windows 的伺服器。

注意:
映象無法避免與客戶端訪問伺服器相關的問題。 例如,假設由公用網路介面卡處理與主體伺服器例項的客戶端連線,而由專用網路介面卡處理伺服器例項之間的所有映象通訊流量。 此時,儘管資料庫可以繼續進行映象,但公用網路介面卡的故障將防止客戶端訪問資料庫。
 


 軟錯誤導致的故障
導致映象超時的情況包括(但不限於)下列各項:

諸如 TCP 連結超時、資料包被刪除或損壞或資料包順序錯誤等網路錯誤。

作業系統、伺服器或資料庫處於掛起狀態。

Windows 伺服器超時。

計算資源不足,例如 CPU 或磁碟超負荷運轉,事務日誌填滿,或系統用完記憶體或執行緒。 在這些情況下,需要增加超時期限、降低工作負荷或更換硬體以處理相應的工作負荷。

映象超時機制
由於軟錯誤不能由伺服器例項直接檢測到,因此,軟錯誤可能導致伺服器例項無限期等待。 為了防止發生這種情況,資料庫映象採用了它自己的超時機制,此機制基於映象會話中的每個伺服器例項會在每個開放連線上按固定間隔傳送 ping。

為了使連線保持開放,伺服器例項必須能夠在超時期限內在該連線上接收到 ping,此期限為定義的映象超時時間再加上再傳送一個 ping 所需的時間。 在超時期限內收到 ping 指示連線仍是開放的,且伺服器例項正在通過此連線進行通訊。 接收到 ping 後,伺服器例項將重置此連線上的超時計數器。

如果未在超時期限內從此連線上收到 ping,則伺服器例項認為此連線已超時。 伺服器例項將關閉超時連線,然後根據會話的狀態和執行模式處理超時事件。

即使其他伺服器實際工作正常,超時也被認為是一個故障。 如果會話的超時值太短而不能使任一夥伴做出正常響應,則會產生虛假故障。 如果一個伺服器例項成功地與另一個伺服器例項實現通訊,但後者的響應時間太短,以致於無法在超時期限過期之前接收到 ping,則會產生錯誤故障。

在高效能模式會話中,超時期限始終為 10 秒鐘。 通常,該期限足以避免虛假故障。 在高安全性模式會話中,預設超時期限為 10 秒鐘,但您可以更改該持續時間。 為了避免虛假故障,建議映象超時期限始終為 10 秒鐘或更長。

更改超時值(僅限於高安全性模式)

使用 ALTER DATABASE SET PARTNER TIMEOUT 語句。

檢視當前超時值

在 sys.database_mirroring 中查詢 mirroring_connection_timeout。

 響應錯誤
無論出現何種錯誤型別,檢測到錯誤的伺服器都會根據例項的角色、會話執行模式以及會話中任何其他連線的狀態做出相應的響應。 有關丟失夥伴後會發生的情況的資訊,請參閱同步資料庫映象(高安全性模式)或非同步資料庫映象(高效能模式)。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-496058/,如需轉載,請註明出處,否則將追究法律責任。

相關文章