隨著業務增長,單一資料庫伺服器難以負荷高併發讀寫請求。本文介紹利用 SQL Server 2005 新功能 (P2P 異動複寫、資料庫鏡像、快照集) 搭配自訂中介層軟體,實作「一寫多讀」的負載平衡與高可用架構。
核心架構圖

關鍵技術支點
1. 端對端 (P2P) 異動複寫
- 支援多個發佈者雙向交換異動,實現多寫入節點。
- 新增節點只需加入複寫拓撲,擴展性極佳。
- 任一節點離線,其餘節點仍持有完整資料,保證可用性。
2. 資料庫鏡像與快照集
- 鏡像:提供自動容錯移轉,需見證伺服器支援自動切換 (需 SP1 以上)。
- 快照集:建立時間點唯讀複本,極低成本卸載報表查詢至鏡像伺服器,不影響主庫效能。
軟體層面實作策略
中介層設計
- 所有應用程式連線導向中介層服務 (Windows Service),不直接連資料庫。
- 優勢:資料庫置於內網提升安全性;集中管理連線、監控慢查詢、動態路由。
- 高可用:部署多個中介層實例,配合負載平衡器 (NLB/硬體 LB)。
資料同步拓撲:一寫兩讀
- 主寫入庫設為發佈者,啟用異動複寫。
- 兩個從讀庫設為訂閱者,同步必要資料表。
- 統計顯示 70% 操作為讀取,此架構可大幅分攤主庫壓力。
備援機制
- 主寫入庫再配置一台鏡像備援機 (高安全性模式 + 見證伺服器)。
- 主庫故障時自動容錯移轉至鏡像庫,中介層偵測到角色變更後切換寫入目標。
健康監控與路由決策
- 各資料庫節點部署監控 Agent (Windows Service),每 30 秒回報 CPU、記憶體、網路、連線數等指標。
- 中介層依權重演算法 (建議以 CPU 使用率為主) 選擇最閒置的讀庫。
- 記錄歷史負載趨勢,供 DBA 調整權重與擴容判斷。
故障處理流程
| 故障情境 | 自動處理 | 人工介入 |
| 主寫入庫掛掉 | 鏡像自動升級為主庫;中介層切換寫入連線 | 告警通知 DBA,確認鏡像狀態、重建備援 |
| 讀庫掛掉 | 中介層移出該節點,流量導向剩餘讀庫 | 告警通知,修復後重新加入複寫 |
| 中介層掛掉 | NLB 偵測健康檢查失敗,流量導向存活實例 | 檢查服務日誌、重啟或替換節點 |
總結
結合 SQL Server 2005 原生高可用功能與輕量級中介層路由,可在不購買昂貴硬體負載平衡器的前提下,建構具備讀寫分離、自動容錯、水平擴展能力的資料庫叢集,降低營運成本並提升維運彈性。