前面已經(jīng)完成了鏡像數(shù)據(jù)庫的配置,并進(jìn)行那個(gè)了故障轉(zhuǎn)移測(cè)試。接下來將部署見證服務(wù)器,實(shí)現(xiàn)自動(dòng)故障轉(zhuǎn)移。
一、關(guān)于見證服務(wù)器
1、若要支持自動(dòng)故障轉(zhuǎn)移,必須在高安全性模式下配置數(shù)據(jù)庫鏡像會(huì)話,并且還要具有第三個(gè)服務(wù)器實(shí)例(也稱為“見證服務(wù)器”)。見證服務(wù)器是 SQL Server 的可選實(shí)例,它能使高安全性模式會(huì)話中的鏡像服務(wù)器識(shí)別出是否要啟動(dòng)自動(dòng)故障轉(zhuǎn)移。與這兩個(gè)伙伴不同的是,見證服務(wù)器并不能用于數(shù)據(jù)庫。見證服務(wù)器的唯一角色是支持自動(dòng)故障轉(zhuǎn)移。
2、為了給數(shù)據(jù)庫設(shè)置見證服務(wù)器,數(shù)據(jù)庫所有者為見證服務(wù)器的角色分配數(shù)據(jù)庫引擎實(shí)例。見證服務(wù)器實(shí)例可以與主體服務(wù)器實(shí)例或鏡像服務(wù)器實(shí)例運(yùn)行于同一臺(tái)計(jì)算機(jī)上,但這樣會(huì)明顯降低自動(dòng)故障轉(zhuǎn)移的可靠性。因此建議見證服務(wù)器應(yīng)位于另外一臺(tái)計(jì)算機(jī)上。
3、在高性能模式下,見證服務(wù)器對(duì)可用性會(huì)有不利影響。如果見證服務(wù)器是針對(duì)數(shù)據(jù)庫鏡像會(huì)話而配置,則主體服務(wù)器必須至少連接到一個(gè)其他服務(wù)器實(shí)例,即鏡像服務(wù)器或見證服務(wù)器,或者是連接到這兩個(gè)服務(wù)器。否則,將無法使用數(shù)據(jù)庫,并且不能進(jìn)行強(qiáng)制服務(wù)(可能丟失數(shù)據(jù))。因此,對(duì)于高性能模式,我們極力建議您始終將見證服務(wù)器設(shè)置為 OFF。
二、關(guān)于自動(dòng)故障轉(zhuǎn)移
1、只有在高安全性模式(“具有自動(dòng)故障轉(zhuǎn)移功能的高安全性模式”)下運(yùn)行并且具有見證服務(wù)器的數(shù)據(jù)庫鏡像會(huì)話支持自動(dòng)故障轉(zhuǎn)移。在具有自動(dòng)故障轉(zhuǎn)移功能的高安全性模式下,同步數(shù)據(jù)庫后,如果主體數(shù)據(jù)庫變得不可用,則會(huì)發(fā)生自動(dòng)故障轉(zhuǎn)移。自動(dòng)故障轉(zhuǎn)移將導(dǎo)致鏡像服務(wù)器接管主體服務(wù)器的角色,并使其數(shù)據(jù)庫的副本聯(lián)機(jī)以作為主體數(shù)據(jù)庫。因?yàn)槊總€(gè)在主體數(shù)據(jù)庫中提交的事務(wù)同時(shí)也在鏡像數(shù)據(jù)庫中提交,所以需要使數(shù)據(jù)庫保持同步以防止在故障轉(zhuǎn)移過程中丟失數(shù)據(jù)。
2、自動(dòng)故障轉(zhuǎn)移所需條件
A、數(shù)據(jù)庫鏡像會(huì)話必須在高安全性模式下運(yùn)行,并且必須處理見證服務(wù)器。
B、鏡像數(shù)據(jù)庫必須已經(jīng)同步。這將保證發(fā)送到鏡像服務(wù)器的所有日志都已寫入磁盤。
C、主體服務(wù)器已中斷了與其余數(shù)據(jù)庫鏡像配置的通信,而鏡像服務(wù)器和見證服務(wù)器將保留仲裁。但是,如果所有服務(wù)器實(shí)例都已中斷通信,而見證服務(wù)器和鏡像服務(wù)器稍后重新建立通信,則不會(huì)發(fā)生自動(dòng)故障轉(zhuǎn)移。
D、鏡像服務(wù)器已檢測(cè)到丟失了主體服務(wù)器
E、鏡像服務(wù)器檢測(cè)主體服務(wù)器故障的方式取決于故障是硬故障還是軟故障。
更多自動(dòng)故障轉(zhuǎn)移內(nèi)容參考
http://msdn.microsoft.com/zh-cn/library/ms189590.aspx
三、自動(dòng)故障轉(zhuǎn)移原理
1、如果主體服務(wù)器仍在運(yùn)行中,則將主體數(shù)據(jù)庫的狀態(tài)更改為 DISCONNECTED 并斷開所有客戶端與主體數(shù)據(jù)庫的連接。
2、見證服務(wù)器和鏡像服務(wù)器將主體服務(wù)器注冊(cè)為不可用。
3、如果重做隊(duì)列中有任何等待的日志,則鏡像服務(wù)器將完成前滾鏡像數(shù)據(jù)庫的操作
4、前一個(gè)鏡像數(shù)據(jù)庫作為新的聯(lián)機(jī)主體數(shù)據(jù)庫,恢復(fù)通過盡快回滾未提交的事務(wù)將這些事務(wù)全部清除。鎖將隔離這些事務(wù)。
5、當(dāng)前一個(gè)主體服務(wù)器重新聯(lián)接到會(huì)話時(shí),它將認(rèn)定其故障轉(zhuǎn)移伙伴現(xiàn)在擁有主體角色。前一個(gè)主體服務(wù)器接管鏡像角色,并將其數(shù)據(jù)庫作為鏡像數(shù)據(jù)庫。新的鏡像服務(wù)器會(huì)盡快將新的鏡像數(shù)據(jù)庫與主體數(shù)據(jù)庫同步。新的鏡像服務(wù)器重新同步數(shù)據(jù)庫后,就可以再次執(zhí)行故障轉(zhuǎn)移,但按反向執(zhí)行。。
下圖說明了自動(dòng)故障轉(zhuǎn)移的一個(gè)實(shí)例。
四、在見證服務(wù)器上看裝SQL Server 2008
詳見《SQL Server 2008 數(shù)據(jù)庫鏡像部署實(shí)例之一》
五、配置見證服務(wù)器
1、主體數(shù)據(jù)庫服務(wù)器上,右鍵點(diǎn)擊數(shù)據(jù)庫,選擇任務(wù)——鏡像
2、在彈出的數(shù)據(jù)庫屬性頁面中,選定鏡像頁,點(diǎn)擊右側(cè)的配置安全
3、點(diǎn)擊下一步,選擇包括見證服務(wù)器
4、點(diǎn)擊下一步,進(jìn)行見證服務(wù)器配置
5、點(diǎn)擊兩次下一步,填入見證服務(wù)器地址或機(jī)器名及站點(diǎn)名稱
6、填入服務(wù)賬戶
7、查看摘要信息,點(diǎn)擊完成
六、測(cè)試自動(dòng)故障轉(zhuǎn)移
1、當(dāng)前主體服務(wù)器為Hytest01,鏡像數(shù)據(jù)庫是Hytest02
2、將主體服務(wù)器Hytest1的網(wǎng)絡(luò)斷開,看數(shù)據(jù)庫是否自動(dòng)轉(zhuǎn)移到鏡像服務(wù)器Hytest02上
鏡像設(shè)置顯示,主體服務(wù)器、鏡像服務(wù)器角色也互換了。
有人會(huì)說,兩個(gè)數(shù)據(jù)庫,IP地址都不一樣,怎么寫連接代碼呢?難道出現(xiàn)故障后要手動(dòng)更改代碼嗎?其實(shí)使用ADO.NET或者SQL Native Client能夠自動(dòng)連接到故障轉(zhuǎn)移后的伙伴,連接字符串如下所示:
ConnectionString="DataSource= A;Failover Partner=B;Initial Catalog=AdventureWorks;Integrated Security=true;" DataSource= A;
這樣設(shè)置之后,客戶端就可以自動(dòng)切換數(shù)據(jù)庫了
至此SQL Server 2008 的鏡像高可用配置實(shí)例全部完成。
您可能感興趣的文章:- SQLServer 鏡像功能完全實(shí)現(xiàn)
- SQL Server 2008 R2數(shù)據(jù)庫鏡像部署圖文教程
- SQL Server 2008 數(shù)據(jù)庫鏡像部署實(shí)例之一 數(shù)據(jù)庫準(zhǔn)備
- SQL Server 2008 數(shù)據(jù)庫鏡像部署實(shí)例之二 配置鏡像,實(shí)施手動(dòng)故障轉(zhuǎn)移
- SQL Server 2005 鏡像構(gòu)建手冊(cè)(sql2005數(shù)據(jù)庫同步鏡像方案)
- SQL Server中避免觸發(fā)鏡像SUSPEND的N種方法