首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2008 高可用性架構全解析:容錯移轉叢集、記錄傳送、資料庫鏡像三大支柱

     編輯:關於SqlServer

高可用性目標:五個九 (99.999%),業務連續性優於災難恢復

現代理念強調預防不可用、失敗時影響最小化,而非事後災難恢復。SQL Server 2008 提供三大核心方案構建業務連續性。

一、容錯移轉叢集 (Failover Clustering, FC) — 實例級高可用

架構基礎

  • 基於 Windows Server 叢集服務 (WSFC)。
  • 兩台或以上節點對外呈現單一虛擬伺服器 (唯一名稱/IP)。
  • 需共享儲存 (SCSI/FC/iSCSI)。iSCSI 需獨立網卡隔離流量。
  • Windows 2008+ 需相容儲存,至少兩磁碟區:見證磁碟 + 資料磁碟。

部署模式

模式架構資源利用故障切換
Active/Passive單一實例,主節點服務,備用節點待命備用閒置,成本較高極快,僅啟動服務
Active/Active多實例,各節點主不同實例雙節點皆工作,資源利用率高需備用節點承擔雙倍負載,硬體規格須規劃足夠

Active/Active 實質為多虛擬伺服器互為備援,單實例仍無法多寫入 (唯一交易日誌)。

二、記錄傳送 (Log Shipping) — 資料庫級暖備援

核心機制

基於每個資料庫獨立配置。主資料庫定期備份交易記錄 → 複製至次要伺服器 → 還原 (NORECOVERY/STANDBY)。支援多次要伺服器。

配置前置條件

  • 主/次要伺服器網路可靠連通。
  • 資料庫使用完整復原模式。
  • 次要伺服器無同名目標資料庫。

SSMS 圖形化配置要點

  • 啟用主資料庫 → 設定備份排程/保留/壓縮/閾值警示。
  • 備份共享建議放所有節點可存取位置,但需排除主伺服器單點故障影響。
  • 次要伺服器模式:No Recovery (暖備) 或 Standby (唯讀報表)。
  • 複製/還原作業獨立排程,可設定延遲還原與警示閾值。
  • 可選配監視伺服器 (非參與節點) 集中查看狀態報表。

T-SQL 腳本化配置

文中提供完整 sp_add_log_shipping_primary_database、sp_add_log_shipping_secondary_* 等系統預存程序腳本範例,適合自動化部署。

容錯移轉操作流程

  1. 複製備份共享中未複製的記錄檔至次要伺服器。
  2. 按序應用所有剩餘記錄備份。
  3. 若主庫可存取,執行尾端記錄備份 → 複製 → 還原。
  4. 將次要資料庫設為 RECOVERY (上線)。
  5. 更新用戶端連接字串 (或 DNS 別名) 指向新主庫。
  6. 遷移關聯中繼資料 (登入、作業、警示) 確保應用一致性。
  7. 若有多次要庫,重新配置拓撲。

局限

  • 手動容錯移轉,RTO 較長。
  • 不自動同步伺服器級物件 (登入、Agent 作業等)。
  • 僅支援單一方向複寫。

三、資料庫鏡像 — 資料庫級熱備援與自動容錯移轉

核心差異

  • 以交易為單位即時傳送記錄 (非檔案複製),透過端點持續通訊維護一致性。
  • 單一資料庫僅一主體 + 一鏡像 (記錄傳送可多次要)。
  • 配置見證伺服器 可實現自動、近乎即時容錯移轉。

三角色

  • 主體伺服器:提供服務。
  • 鏡像伺服器:持續恢復記錄,處於 RECOVERING 狀態,不可直接查詢 (可建立資料庫快照間接讀取)。
  • 見證伺服器 (選配):仲裁者,不參與資料流,僅監控心跳。

用戶端自動重導向

連接字串加入 Failover Partner:

Server=Principal; Failover Partner=Mirror; Database=AdventureWorks2008

驅動程式自動嘗試切換,無需應用程式修改。

三種運作模式

模式同步方式自動容錯移轉見證伺服器資料損失風險
高效能非同步不支援不需要可能 (主體未等鏡像確認)
高安全性 (無自動)同步不支援不需要無 (同步提交)
高安全性 (有自動)同步支援必要無

仲裁機制:三角色中任兩者連通即構成仲裁,服務可用。失去仲裁則鏡像狀態改變 (SUSPENDED/DISCONNECTED)。

SSMS 精靈配置流程

  1. 資料庫屬性 → 鏡像 → 設定安全性精靈。
  2. 配置主體/鏡像/見證端點 (連接埠、加密、驗證)。
  3. 若同一實例扮多角,端口必須不同。
  4. 精靈摘要確認後建立端點、授權、啟動鏡像。

T-SQL 手動配置核心指令

-- 建立端點 (主體/鏡像)
CREATE ENDPOINT MirroringEndPoint STATE=STARTED AS TCP(LISTENER_PORT=5022) FOR DATABASE_MIRRORING(ROLE=PARTNER);
-- 建立見證端點 (含加密範例)
CREATE ENDPOINT WitnessEndPoint STATE=STARTED AS TCP(LISTENER_PORT=5024) FOR DATABASE_MIRRORING(AUTHENTICATION=WINDOWS NEGOTIATE, ENCRYPTION=REQUIRED ALGORITHM AES, ROLE=WITNESS);
-- 建立鏡像夥伴關係
ALTER DATABASE AdventureWorksLT2008 SET PARTNER = 'TCP://MIRROR:5022';  -- 在主體執行
ALTER DATABASE AdventureWorksLT2008 SET PARTNER = 'TCP://PRINCIPAL:5023'; -- 在鏡像執行
ALTER DATABASE AdventureWorksLT2008 SET WITNESS = 'TCP://WITNESS:5024';   -- 在主體執行
-- 切換非同步 (高效能)
ALTER DATABASE AdventureWorksLT2008 SET PARTNER SAFETY OFF;

監視與管理

  • 鏡像監視器:SSMS 任務 → 啟動資料庫鏡像監視器,註冊主體/鏡像實例,監控狀態、延遲、警示。
  • 暫停/繼續:ALTER DATABASE ... SET PARTNER SUSPEND/RESUME。
  • 手動容錯移轉:SSMS 屬性頁按鈕或 ALTER DATABASE ... SET PARTNER FAILOVER (在主體執行)。
  • 強制服務 (災難模式):高效能/無自動模式下主體失效,在鏡像執行 ALTER DATABASE ... SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS。
  • 移除鏡像:ALTER DATABASE ... SET PARTNER OFF,端點保留可重用。

注意事項

  • 不支援啟用 FILESTREAM 的資料庫。
  • 容錯移轉前後,伺服器級物件 (登入、作業、連結伺服器) 需額外同步 (建議 SSIS 定期同步)。

方案選型建議

需求推薦方案備註
實例級 HA、自動容錯、共享儲存可行容錯移轉叢集Active/Active 需規劃雙倍負載容量
資料庫級 HA、跨機房、可容忍分鐘級 RTO、需報表分流記錄傳送Standby 模式支援唯讀查詢
資料庫級 HA、自動秒級容錯、零資料損失、無共享儲存資料庫鏡像 (高安全性+見證)單一鏡像夥伴,不支援 FILESTREAM
多次要庫、跨區域災備、可接受資料損失記錄傳送 + 鏡像混合鏡像做本地 HA,記錄傳送做遠端災備

三大方案可疊加組合 (如 FC 節點上再做鏡像/記錄傳送),構建多層次高可用防護體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved