重視可用性的系統 (SQL Server AlwaysOn) - 技術說明

重視可用性的系統 (SQL Server AlwaysOn) - 技術說明

重視可用性的系統架構

1. 利用虛擬名稱以透明的方式從應用程式來存取

  • 虛擬名稱是容錯移轉叢集的資源,會識別運作中的主要伺服器,並使連線路徑選擇連線至主要伺服器(以規則為基礎)
  • 虛擬名稱會登錄至 AD 的 DNS 伺服器,以便對用戶端進行名稱解析
  • 當連線為唯讀屬性,則連線路徑會選擇連線至主動的次要伺服器 (可讀)

2. 最多可在可用性群組 (Availability Group,AG) 中構成 4 部次要伺服器

  • 其中 2 部可採用同步模式,另外 2 部的其中 1 部可以定義為自動容錯移轉對象

3. 如果發生容錯移轉

  • 與主要伺服器連線的用戶端必須重新連線 (連線對象仍為虛擬名稱)
  • 會利用 LSN 重新傳送交易記錄

重視可用性的系統架構

1. 整合可用性群組 (Availability Group,AG) 與 Windows Server 容錯移轉叢集
 (Windows Server Failover Clustering,WSFC)

  • 叢集內的錯誤偵測
  • 節點關閉
  • SQL Server 服務關閉
  • 容錯移轉協同合作
  • 資源監視器狀態變更通知
    • 虛擬名稱管理
    • SQL Server 服務檢查
      • SQL Server 無回應
      • SQL Server 活動異常
  • 狀態變更通知
編號 錯誤詳細資料 偵測規則
1 節點關閉 *1(根據其他節點偵測) 活動訊號 1 秒 * 5 次 (< 5 秒)
2 SQL Server 服務關閉 * 1(報告失敗) < 1 秒
3 SQL Server 無回應 < LEASE 逾時
4 sp_server_diagnostics 偵測結果狀況不良If "Offline Success" then  通知 SQL ServerElse 等待 LEASE 逾時 < 5 秒
*1:可略過離線處理。

 

層級 條件

SQL Server 服務重新啟動

或容錯移轉的觸發條件

0 無自動容錯移轉或重新啟動 將不會自動進行 SQL Server 服務的重新啟動或容錯移轉。這個層級只會用於系統維護的用途。
1 伺服器關閉時進行容錯移轉或重新啟動
  • SQL Server 服務已關閉
2 伺服器沒有回應時進行容錯移轉或重新啟動
  • SQL Server 服務已關閉
  • SQL Server 執行個體沒有回應
3(預設) 發生重大伺服器錯誤時進行容錯移轉或重新啟動
  • SQL Server 服務已關閉
  • SQL Server 執行個體沒有回應
  • sp_server_diagnostics 的 'system' 元件健康情況為'錯誤'
4 發生中度伺服器錯誤時進行容錯移轉或重新啟動
  • SQL Server 服務已關閉
  • SQL Server 執行個體沒有回應
  • sp_server_diagnostics 的 'system' 元件健康情況為'錯誤'
  • sp_server_diagnostics 的 'resource' 元件健康情況為'錯誤'
5 發生任何合格失敗條件時進行容錯移轉或重新啟動
  • SQL Server 服務已關閉
  • SQL Server 執行個體沒有回應
  • sp_server_diagnostics 的 'system' 元件健康情況為'錯誤'
  • sp_server_diagnostics 的 'resource' 元件健康情況為'錯誤'
  • sp_server_diagnostics 的 'query_processing' 元件健康情況為'錯誤'

失敗類型 動作 容錯移轉時間

容錯移轉

叢集

硬體失敗 (電源中斷) 偵測到失敗,進行容錯移轉 28 秒
作業系統失敗(藍色畫面) 偵測到失敗,進行容錯移轉 17 秒
處理序 (SQL Server)失敗 偵測到失敗,進行容錯移轉(在同一節點重新啟動,同時可設定重試的臨界值) 11 秒
資料庫鏡像(參考資訊) 硬體失敗 (電源中斷) 偵測到失敗,進行容錯移轉 8 秒
作業系統失敗(藍色畫面) 偵測到失敗,進行容錯移轉 9 秒
處理序 (SQL Server) 失敗 偵測到失敗,進行容錯移轉 1 秒