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