資料庫鏡像 是 SQL Server 2005 引入的高可用性解決方案,以資料庫為單位、基於交易記錄傳送實現熱備援。本文系統整理其架構、模式、角色切換、版本支援與部署要點。
| 角色 | 說明 |
|---|---|
| 主體伺服器 | 提供線上服務,處理用戶讀寫,交易記錄同步傳送至鏡像 |
| 鏡像伺服器 | 維護熱備份資料庫,正常情況不可讀寫,故障轉移後升級為主體 |
| 見證伺服器 | 不存放資料,僅監控雙方心跳,支援自動故障轉移 (需高安全性模式) |
| 模式 | 同步性 | 資料保護 | 效能影響 | 自動容錯移轉 | 適用場景 |
|---|---|---|---|---|---|
| 高安全性 (同步) | 同步 | 零資料遺失 | 交易延遲較高 | 需見證伺服器 | 金融、訂單、核心業務 |
| 高安全性 (同步、無見證) | 同步 | 零資料遺失 | 交易延遲較高 | 僅手動容錯移轉 | 可接受人工介入的核心業務 |
| 高效能 (非同步) | 非同步 | 可能遺失資料 | 主體幾無延遲 | 不支援 (需強制服務) | 跨機房、跨城市、報表/BI 次要庫 |
SAFETY FULL (預設) = 同步模式 = 高安全性。主體等待鏡像寫入記錄檔確認 (ACK) 才回覆用戶 Commit。SAFETY OFF = 非同步模式 = 高效能。主體發送記錄後立即回覆用戶,不等待鏡像確認。SAFETY FULL 時生效;SAFETY OFF 時必須 WITNESS OFF。ALTER DATABASE ... SET PARTNER FAILOVER。ALTER DATABASE ... SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS。| 版本 | 夥伴支援 | 見證支援 | 非同步 (高效能) |
|---|---|---|---|
| Enterprise SP1+ | ✅ | ✅ | ✅ |
| Standard SP1+ | ✅ | ✅ | ❌ |
| Workgroup SP1+ | ❌ | ✅ | ❌ |
| Express SP1+ | ❌ | ✅ | ❌ |
限制:夥伴雙方版本必須相同;master、msdb、tempdb、model 不可鏡像;僅支援完整復原模式資料庫。
RESTORE ... WITH NORECOVERYCREATE ENDPOINT ... FOR DATABASE_MIRRORING),角色 PARTNER/WITNESS,啟用加密GRANT CONNECT ON ENDPOINT::...)SET PARTNER = 'TCP://Principal:5022',再在主體 SET PARTNER = 'TCP://Mirror:5022',最後主體 SET WITNESS = ...、SET SAFETY FULL.NET Framework 2.0+ / SQL Native Client / JDBC 1.1+ 支援連線字串指定 Failover Partner=MirrorServer,驅動程式自動處理重導向,應用程式無感知。
