前面已經(jīng)完成了鏡像數(shù)據(jù)庫的配置,并進行那個了故障轉移測試。接下來將部署見證服務器,實現(xiàn)自動故障轉移。
一、關于見證服務器
1、若要支持自動故障轉移,必須在高安全性模式下配置數(shù)據(jù)庫鏡像會話,并且還要具有第三個服務器實例(也稱為“見證服務器”)。見證服務器是 SQL Server 的可選實例,它能使高安全性模式會話中的鏡像服務器識別出是否要啟動自動故障轉移。與這兩個伙伴不同的是,見證服務器并不能用于數(shù)據(jù)庫。見證服務器的唯一角色是支持自動故障轉移。
2、為了給數(shù)據(jù)庫設置見證服務器,數(shù)據(jù)庫所有者為見證服務器的角色分配數(shù)據(jù)庫引擎實例。見證服務器實例可以與主體服務器實例或鏡像服務器實例運行于同一臺計算機上,但這樣會明顯降低自動故障轉移的可靠性。因此建議見證服務器應位于另外一臺計算機上。
3、在高性能模式下,見證服務器對可用性會有不利影響。如果見證服務器是針對數(shù)據(jù)庫鏡像會話而配置,則主體服務器必須至少連接到一個其他服務器實例,即鏡像服務器或見證服務器,或者是連接到這兩個服務器。否則,將無法使用數(shù)據(jù)庫,并且不能進行強制服務(可能丟失數(shù)據(jù))。因此,對于高性能模式,我們極力建議您始終將見證服務器設置為 OFF。
二、關于自動故障轉移
1、只有在高安全性模式(“具有自動故障轉移功能的高安全性模式”)下運行并且具有見證服務器的數(shù)據(jù)庫鏡像會話支持自動故障轉移。在具有自動故障轉移功能的高安全性模式下,同步數(shù)據(jù)庫后,如果主體數(shù)據(jù)庫變得不可用,則會發(fā)生自動故障轉移。自動故障轉移將導致鏡像服務器接管主體服務器的角色,并使其數(shù)據(jù)庫的副本聯(lián)機以作為主體數(shù)據(jù)庫。因為每個在主體數(shù)據(jù)庫中提交的事務同時也在鏡像數(shù)據(jù)庫中提交,所以需要使數(shù)據(jù)庫保持同步以防止在故障轉移過程中丟失數(shù)據(jù)。
2、自動故障轉移所需條件
A、數(shù)據(jù)庫鏡像會話必須在高安全性模式下運行,并且必須處理見證服務器。
B、鏡像數(shù)據(jù)庫必須已經(jīng)同步。這將保證發(fā)送到鏡像服務器的所有日志都已寫入磁盤。
C、主體服務器已中斷了與其余數(shù)據(jù)庫鏡像配置的通信,而鏡像服務器和見證服務器將保留仲裁。但是,如果所有服務器實例都已中斷通信,而見證服務器和鏡像服務器稍后重新建立通信,則不會發(fā)生自動故障轉移。
D、鏡像服務器已檢測到丟失了主體服務器
E、鏡像服務器檢測主體服務器故障的方式取決于故障是硬故障還是軟故障。
更多自動故障轉移內(nèi)容參考
http://msdn.microsoft.com/zh-cn/library/ms189590.aspx
三、自動故障轉移原理
1、如果主體服務器仍在運行中,則將主體數(shù)據(jù)庫的狀態(tài)更改為 DISCONNECTED 并斷開所有客戶端與主體數(shù)據(jù)庫的連接。
2、見證服務器和鏡像服務器將主體服務器注冊為不可用。
3、如果重做隊列中有任何等待的日志,則鏡像服務器將完成前滾鏡像數(shù)據(jù)庫的操作
4、前一個鏡像數(shù)據(jù)庫作為新的聯(lián)機主體數(shù)據(jù)庫,恢復通過盡快回滾未提交的事務將這些事務全部清除。鎖將隔離這些事務。
5、當前一個主體服務器重新聯(lián)接到會話時,它將認定其故障轉移伙伴現(xiàn)在擁有主體角色。前一個主體服務器接管鏡像角色,并將其數(shù)據(jù)庫作為鏡像數(shù)據(jù)庫。新的鏡像服務器會盡快將新的鏡像數(shù)據(jù)庫與主體數(shù)據(jù)庫同步。新的鏡像服務器重新同步數(shù)據(jù)庫后,就可以再次執(zhí)行故障轉移,但按反向執(zhí)行。。
下圖說明了自動故障轉移的一個實例。

四、在見證服務器上看裝SQL Server 2008
詳見《SQL Server 2008 數(shù)據(jù)庫鏡像部署實例之一》
五、配置見證服務器
1、主體數(shù)據(jù)庫服務器上,右鍵點擊數(shù)據(jù)庫,選擇任務——鏡像
2、在彈出的數(shù)據(jù)庫屬性頁面中,選定鏡像頁,點擊右側的配置安全

3、點擊下一步,選擇包括見證服務器

4、點擊下一步,進行見證服務器配置

5、點擊兩次下一步,填入見證服務器地址或機器名及站點名稱

6、填入服務賬戶

7、查看摘要信息,點擊完成



六、測試自動故障轉移
1、當前主體服務器為Hytest01,鏡像數(shù)據(jù)庫是Hytest02

2、將主體服務器Hytest1的網(wǎng)絡斷開,看數(shù)據(jù)庫是否自動轉移到鏡像服務器Hytest02上

鏡像設置顯示,主體服務器、鏡像服務器角色也互換了。
有人會說,兩個數(shù)據(jù)庫,IP地址都不一樣,怎么寫連接代碼呢?難道出現(xiàn)故障后要手動更改代碼嗎?其實使用ADO.NET或者SQL Native Client能夠自動連接到故障轉移后的伙伴,連接字符串如下所示:
ConnectionString="DataSource= A;Failover Partner=B;Initial Catalog=AdventureWorks;Integrated Security=true;" DataSource= A;
這樣設置之后,客戶端就可以自動切換數(shù)據(jù)庫了
至此SQL Server 2008 的鏡像高可用配置實例全部完成。
您可能感興趣的文章:- SQLServer 鏡像功能完全實現(xiàn)
- SQL Server 2008 R2數(shù)據(jù)庫鏡像部署圖文教程
- SQL Server 2008 數(shù)據(jù)庫鏡像部署實例之一 數(shù)據(jù)庫準備
- SQL Server 2008 數(shù)據(jù)庫鏡像部署實例之二 配置鏡像,實施手動故障轉移
- SQL Server 2005 鏡像構建手冊(sql2005數(shù)據(jù)庫同步鏡像方案)
- SQL Server中避免觸發(fā)鏡像SUSPEND的N種方法