核心概念對照
| 維度 | Oracle Data Guard (Standby Database) | SQL Server Database Mirroring |
| 對應關係 | Primary ↔ Physical/Logical/Snapshot Standby | Principal ↔ Mirror (可選 Witness) |
| 實例/資料庫模型 | 1 Instance = 1 Database (單實例模式) | 1 Instance 含多 Database,鏡像以**單一資料庫**為單位 |
| 外部物件同步 | 整個資料庫完整複製(含用戶、作業、連結伺服器等) | **僅鏡像資料庫本身**,Logins、Jobs、Linked Servers 需手動同步 |
| 最小伺服器數 | 2 (Primary + Standby) | 2 (高效能/高安全) 或 3 (高可用性需 Witness) |
SQL Server 三種運作模式深度解析
| 模式 | 同步性 | 自動容錯移轉 | Witness | 資料遺失風險 | 適用場景 |
| 高可用性 | 同步 | 是 | 必須 | 零 | 金融核心、零容忍遺失 |
| 高安全性 | 同步 | 否 (手動) | 不需要 | 零 | 需人工決策的關鍵系統 |
| 高效能 | 非同步 | 否 | 不需要 | 低 (網路延遲窗口) | 跨機房、高延遲、可容忍秒級遺失 |
Witness 角色:僅參與仲裁投票(2:1 多數決),不傳輸資料、不負擔 I/O。任何版本(含 Express)皆可擔任 Witness。
Redo Log vs Transaction Log:同步機制差異
- Oracle:LGWR/ARCH 進程將 Redo 同步/非同步傳至 Standby,Standby 端 MRP/Apply 進程應用。SCN (System Change Number) 為全域一致性錨點。
- SQL Server:Log Hardening(記錄寫入磁碟)→ 發送 Log Block 至 Mirror → Mirror 硬化 → 回覆 ACK(同步模式)。`mirroring_failover_lsn` 為容錯移轉錨點。**非分散式交易**,Principal 不等待 Mirror Commit。
復原模式對鏡像的硬性要求
- **必須為完整復原模式** (`FULL`)。
- 簡單模式會截斷記錄 → Log Chain 斷裂 → 鏡像中斷。
- 大量記錄模式不支援鏡像(大量操作會最小記錄,破壞同步)。
資料庫鏡像狀態與快照
- Mirror 資料庫處於 `RESTORING` / `RECOVERING` 狀態,**不可直接查詢**。
- 需建立 **Database Snapshot**(需 Enterprise/Developer 版)提供唯讀報表存取。
- Oracle Active Data Guard (11g+) 可直接開啟 Standby 唯讀查詢,無需額外授權(需 Active Data Guard 選項)。
版本授權限制
| 功能 | Standard | Enterprise/Developer | Express |
| 鏡像 (Partner) | 支援 (高安全/高效能) | 全模式支援 | 僅能當 Witness |
| 自動容錯移轉 (高可用性) | 不支援 | 支援 | 不支援 |
| Database Snapshot | 不支援 | 支援 | 不支援 |
故障切換流程對比
- SQL Server (高可用性):Principal 掛點 → Witness + Mirror 形成多數決 → Mirror 自動切換為 Principal → 用戶端連線字串含 `Failover Partner=` 自動重導向。
- Oracle (Data Guard):Primary 掛點 → 手動/腳本觸發 `ALTER DATABASE ACTIVATE STANDBY DATABASE` (Physical) 或 `ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH` → 切換 VIP/SCAN IP / 修改 TNS → 應用重連。
運維建議
- **監控指標**:`mirroring_role`、`mirroring_state`、`mirroring_witness_state`、Log Send Queue / Redo Queue、網路延遲。
- **定期演練**:每季進行計畫性容錯移轉演練,驗證 RTO/RPO、應用重連邏輯、外部物件同步腳本。
- **網路規劃**:專用鏡像網路、低延遲、啟用 Jumbo Frame、QoS 保障。
- **備份策略**:鏡像**不替代備份**!仍需完整/差異/記錄備份,防邏輯錯誤、惡意刪除、雙節點同時故障。
結語
SQL Server Mirroring 架構輕量、設定簡單、整合於 Engine、自動容錯移轉強;Oracle Data Guard 功能豐富、多 Standby 類型、Active Data Guard 可分流查詢、企業級成熟度高。選型核心看:**授權成本、團隊技能棧、RTO/RPO 需求、跨機房延遲、報表分流需求**。無論選哪個,**定期演練、完整備份、外部物件同步**是共同鐵律。
- 上一篇文章: SQL Server 2008 升級兼容性完整清單:六大核心功能領域的棄用、移除與行為變更
- 下一篇文章: 解決 MySQL 8 小時閒置連線斷開:wait_timeout 原理與三種修正方案
Copyright ©
程式碼之家 All Rights Reserved