SQL server的高可用性 SQL Mirror HA
本文講述了對SQL Server 2008 進行Mirror的基本配置及安裝方法。
準備工作
1. Principal 與Mirror 以及 Witness 三臺實例都安裝為相同版本,目前是到SQL Server 2008 SP1。
2. 需要有一個域帳戶分別添加到 三臺數據庫實例所在的Server 的 Administrators組、以及SQL Server 相關的組中; 由于具體的組的功能不清楚,因此建議所有組都添加該域帳戶,確保權限運行正常。
3. 將第二步中的域帳戶設置為SQL Server 服務,SQL Server Agent 的啟動帳戶,并重啟服務。
4. 確保Principal 與Miroor 兩臺實例上的數據數據及日志相同。備份模式為完全備份,恢復模式為完全,向Mirror實例上恢復數據庫時必須選擇為NoRecovery模式。
創建EndPoint
1. 在Principal與 Mirror實例上創建EndPoint,運行腳本:
- Create EndPoint On Principal and Mirror Instance
- CREATE ENDPOINT mirroring_ep
- STATE=STARTED
- AS TCP (LISTENER_PORT=5022)
- FOR DATABASE_MIRRORING
- (ROLE = PARTNER, ENCRYPTION = SUPPORTED)
- --或CREATE ENDPOINT mirroring_ep
- STATE=STARTED
- AS TCP (LISTENER_PORT=5022)
- FOR DATABASE_MIRRORING
- (AUTHENTICATION=WINDOWS NTLM,ROLE = PARTNER)
2. 在Witness實例上創建EndPoint,運行腳本:
- Create EndPoint On Witness Instance
- CREATE ENDPOINT mirroring_ep
- STATE = STARTED
- AS TCP ( LISTENER_PORT = 5022 )
- FOR DATABASE_MIRRORING
- ( ENCRYPTION = SUPPORTED, ROLE=WITNESS );
- --或
- CREATE ENDPOINT mirroring_ep
- STATE=STARTED
- AS TCP (LISTENER_PORT=5022)
- FOR DATABASE_MIRRORING
- (AUTHENTICATION=WINDOWS NTLM,ROLE = WITNESS)
查看EndPoint及刪除EndPoint腳本:
- Select * From Sys.database_mirroring_endpoints
- Select * From sys.database_mirroring
- Drop Endpoint endpoint_mirroring
創建 Mirror Session
1.在Mirror 實例上創建Session,運行腳本:
- ALTER DATABASE DataBaseName
- SET PARTNER = 'TCP://PrincipalServerName:5022';
2.在Principal 實例上創建Session ,運行腳本:
- ALTER DATABASE DataBaseName
- SET PARTNER = 'TCP://MirrorServerName:5022';
3.在Principal 實例上指定Witness,運行腳本:
- ALTER DATABASE HB2008_Gome
- SET WITNESS = 'TCP://WitnessServerName:5022';
注意:
1.在Principal實例上創建Session時可能會遇到此錯誤,錯誤信息如下:
鏡像數據庫 "dbName" 包含的事務日志數據不足,無法保留主體數據庫的日志備份鏈。如果沒有從主體數據庫進行日志備份或者沒有在鏡像數據庫上還原日志備份,則可能會出現這種情況。
解決方法是在Principal實例上再進行一次日志備份,并按照NoRecovery模式還原至Mirror實例上。
原因是日志存在間斷,可能在進行完全備份時又產生日志。
2.測試FailOver
- ALTER DATABASE DataBase
- SET PARTNER FAILOVER
3.相關查詢表:
- Sys.database_mirroring
- Sys.database_mirroring_endpoints
- Sys.database_mirroring_witnesses
4.計劃任務提前備份:
可以將Principal上的計劃任務提前生成腳本,在Mirror配置完成后,在Mirror實例上執行。
5.鏡像運行模式
高安全性模式:支持同步操作,事務在主體與鏡像上同時提交,會延長事務滯后時間。
高性能模式:支持異步運行,鏡像服務器可能稍微滯后于主體數據庫。
值得說明的是,高安全性模式,由于是主體與鏡像為同步操作,鏡像的未提交會導致主體不進行提交,可能會有較大的影響。
比如:DBServerA與DBServerB數據庫互為鏡像,DBServerA為主體,DBServerB為鏡像;
同時DBServerA做了發布服務器,DBServerC從DBServerA做了訂閱。應用系統在DBServerC上進行查詢。
若DBServerB 出現故障,則DBServerA無法提交,從而DBServerC查詢數據不及時。
原文鏈接:http://www.cnblogs.com/shitou/archive/2011/04/13/2015115.html
【編輯推薦】