角色可互換:容錯移轉後原主體變鏡像、原鏡像變主體。
| 模式 | 交易安全性 | 見證 | 自動容錯移轉 | 資料遺失 | 適用場景 |
|---|---|---|---|---|---|
| 高可用性 | FULL (同步) | 必要 | 支援 | 無 | 金融/證券/核心業務 |
| 高保護 | FULL (同步) | 無 | 手動 | 無 | 資料完整性優先、可接受停機 |
| 高效能 | OFF (非同步) | 無 | 強制服務(可能遺失) | 可能 | 跨機房/高延遲/效能優先 |
SQL Server 2005 **SP1 以上** (9.00.2047+) 才支援鏡像,建議直接打 SP2 (9.00.3042+)。
-- 主體:完整備份 + 記錄備份 BACKUP DATABASE Northwind TO DISK='C:\NW.bak'; BACKUP LOG Northwind TO DISK='C:\NW_log.bak'; -- 鏡像:NORECOVERY 還原 RESTORE DATABASE Northwind FROM DISK='C:\NW.bak' WITH NORECOVERY; RESTORE LOG Northwind FROM DISK='C:\NW_log.bak' WITH NORECOVERY;
-- 主體/鏡像:夥伴端點
CREATE ENDPOINT DBMirroring
STATE = STARTED
AS TCP (LISTENER_PORT = 5022)
FOR DATABASE_MIRRORING (ROLE = PARTNER, ENCRYPTION = SUPPORTED);
-- 見證:見證端點
CREATE ENDPOINT DBMirroring
STATE = STARTED
AS TCP (LISTENER_PORT = 5022)
FOR DATABASE_MIRRORING (ROLE = WITNESS, ENCRYPTION = SUPPORTED);
GRANT CONNECT ON ENDPOINT::DBMirroring TO [DOMAIN\ServiceAccount];
-- 1. 鏡像端指定夥伴 ALTER DATABASE Northwind SET PARTNER = 'TCP://Principal:5022'; -- 2. 主體端指定夥伴 ALTER DATABASE Northwind SET PARTNER = 'TCP://Mirror:5022'; -- 此時為「高保護模式」同步無自動容錯移轉 -- 3. 主體端指定見證 ALTER DATABASE Northwind SET WITNESS = 'TCP://Witness:5022'; -- 4. 設定交易安全性 FULL (高可用性) ALTER DATABASE Northwind SET SAFETY FULL;
SELECT * FROM sys.database_mirroring; / sys.database_mirroring_witnesses。停用主體網卡 → 鏡像狀態變 PRINCIPAL**/DISCONNECTED** → 見證確認主體失聯且與鏡像聯繫正常 → 鏡像自動升級為主體 → 客戶端連線字串含 Failover Partner 即可無縫重導。
可搭配 Windows Server Failover Clustering (WSFC) 為主體/鏡像提供節點級高可用性,形成「叢集 + 鏡像」雙層保護。