程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> SqlServer2008 >> SQL Server 2008 數據庫鏡像部署實例之三 配置見證服務器

SQL Server 2008 數據庫鏡像部署實例之三 配置見證服務器

編輯:SqlServer2008

前面已經完成了鏡像數據庫的配置,並進行那個了故障轉移測試。接下來將部署見證服務器,實現自動故障轉移。

一、關於見證服務器

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 的鏡像高可用配置實例全部完成。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved