前面已經完成了鏡像資料庫的配置,並進行那個了容錯移轉測試。接下來將部署見證伺服器,實現自動容錯移轉。
一、關於見證伺服器
1、若要支援自動容錯移轉,必須在高安全性模式下設定資料庫鏡像會話,並且還要具有第三個伺服器執行個體(也稱為“見證伺服器”)。見證伺服器是 SQL Server 的可選執行個體,它能使高安全性模式會話中的鏡像伺服器識別出是否要啟動自動容錯移轉。與這兩個夥伴不同的是,見證伺服器並不能用於資料庫。見證伺服器的唯一角色是支援自動容錯移轉。
2、為了給資料庫設定見證伺服器,資料庫擁有者為見證伺服器的角色指派資料庫引擎執行個體。見證伺服器執行個體可以與主體伺服器執行個體或鏡像伺服器執行個體運行於同一台電腦上,但這樣會明顯降低自動容錯移轉的可靠性。因此建議見證伺服器應位於另外一台電腦上。
3、在高效能模式下,見證伺服器對可用性會有不利影響。如果見證伺服器是針對資料庫鏡像會話而配置,則主體伺服器必須至少串連到一個其他伺服器執行個體,即鏡像伺服器或見證伺服器,或者是串連到這兩個伺服器。否則,將無法使用資料庫,並且不能進行強制服務(可能遺失資料)。因此,對於高效能模式,我們極力建議您始終將見證伺服器設定為 OFF。
二、關於自動容錯移轉
1、只有在高安全性模式(“具有自動容錯移轉功能的高安全性模式”)下運行並且具有見證伺服器的資料庫鏡像會話支援自動容錯移轉。在具有自動容錯移轉功能的高安全性模式下,同步資料庫後,如果主體資料庫變得不可用,則會發生自動容錯移轉。自動容錯移轉將導致鏡像伺服器接管主體伺服器的角色,並使其資料庫的副本聯機以作為主體資料庫。因為每個在主體資料庫中提交的事務同時也在鏡像資料庫中提交,所以需要使資料庫保持同步以防止在容錯移轉過程中遺失資料。
2、自動容錯移轉所需條件
A、資料庫鏡像會話必須在高安全性模式下運行,並且必須處理見證伺服器。
B、鏡像資料庫必須已經同步。這將保證發送到鏡像伺服器的所有日誌都已寫入磁碟。
C、主體伺服器已中止了與其餘資料庫鏡像配置的通訊,而鏡像伺服器和見證伺服器將保留仲裁。但是,如果所有伺服器執行個體都已中止通訊,而見證伺服器和鏡像伺服器稍後重建立立通訊,則不會發生自動容錯移轉。
D、鏡像伺服器已檢測到丟失了主體伺服器
E、鏡像伺服器檢測主體伺服器故障的方式取決於故障是封鎖性失敗還是非封鎖性失敗。
更多自動容錯移轉內容參考
http://msdn.microsoft.com/zh-cn/library/ms189590.aspx
三、自動容錯移轉原理
1、如果主體伺服器仍在運行中,則將主體資料庫的狀態更改為 DISCONNECTED 並斷開所有用戶端與主體資料庫的串連。
2、見證伺服器和鏡像伺服器將主體伺服器註冊為不可用。
3、如果重做隊列中有任何等待的日誌,則鏡像伺服器將完成前滾鏡像資料庫的操作
4、前一個鏡像資料庫作為新的聯機主體資料庫,恢複通過儘快復原未提交的事務將這些事務全部清除。鎖將隔離這些事務。
5、當前一個主體伺服器重新聯結到會話時,它將認定其容錯移轉夥伴現在擁有主體角色。前一個主體伺服器接管鏡像角色,並將其資料庫作為鏡像資料庫。新的鏡像伺服器會儘快將新的鏡像資料庫與主體資料庫同步。新的鏡像伺服器重新同步資料庫後,就可以再次執行容錯移轉,但按反向執行。。
下圖說明了自動容錯移轉的一個執行個體。
四、在見證伺服器上看裝SQL Server 2008
詳見《SQL Server 2008 資料庫鏡像部署執行個體之一》
五、配置見證伺服器
1、主體資料庫伺服器上,右鍵點擊資料庫,選擇任務——鏡像
2、在彈出的資料庫屬性頁面中,選定鏡像頁,點擊右側的配置安全
3、點擊下一步,選擇包括見證伺服器
4、點擊下一步,進行見證伺服器配置
5、點擊兩次下一步,填入見證伺服器地址或機器名及網站名稱
6、填入服務賬戶
7、查看摘要資訊,點擊完成
六、測試自動容錯移轉
1、當前主體伺服器為Hytest01,鏡像資料庫是Hytest02
2、將主體伺服器Hytest1的網路斷開,看資料庫是否自動轉移到鏡像伺服器Hytest02上
鏡像設定顯示,主體伺服器、鏡像伺服器角色也互換了。
有人會說,兩個資料庫,IP地址都不一樣,怎麼寫串連代碼呢?難道出現故障後要手動更改代碼嗎?其實使用ADO.NET或者SQL Native Client能夠自動連接到容錯移轉後的夥伴,連接字串如下所示:
ConnectionString="DataSource= A;Failover Partner=B;Initial Catalog=AdventureWorks;Integrated Security=true;" DataSource= A;
這樣設定之後,用戶端就可以自動切換資料庫了
至此SQL Server 2008 的鏡像高可用配置執行個體全部完成。