數據庫鏡像
相對於日誌傳送,數據庫鏡像顯然更高一級。在最簡單的形式下,它其實與日誌傳送的
工做原理類似,可是生產服務器發送事務到鏡像服務器的頻率要高得多,這意味着更新速度
也要快不少。
對於數據庫鏡像來講,故障轉移功能也是須要手動完成。可是你能夠添加第三個SQL
Server,稱爲witness。Witness 能夠做爲一個普通的SQL Server,可是一直留意着其它兩個
鏡像服務器。當主鏡像發生故障,witness 可讓第二個鏡像接管操做,相似一種自動的故
障轉移。
在故障轉移時,任何進行中的客戶端事務都將從新啓動,而因爲在這一過程當中仍然存在
着延遲,鏡像服務器也不能保證百分之百不丟失數據。
一.
數據庫準備
1、目標
利用Sql Server 2008 enterprise X64,創建異步(高性能)鏡像數據庫,同時創建見證服務器
實現自動故障轉移。
2、前提條件、限制和建議
一、夥伴雙方(主體服務器和鏡像服務器)及見證服務器必須使用相同版本的Sql Server
二、如使用見證服務器,擇須確保其系統上安裝 Sql Server 2005 或更高版本
三、在鏡像服務器上建立鏡像數據庫時,確保制定相同的數據庫名稱WITH NOREBOVORY 來
還原主題數據庫備份。另外,還必須經過 WITH NORECOVERY 應用在該備份執行後建立的所
有日誌備份。若是數據庫鏡像已經中止,則必須將對主體數據庫執行的全部後續日誌備份應
用到鏡像數據庫中,而後才能夠從新啓動鏡像。
四、跨數據庫事務和分佈式事務均不支持數據庫鏡像
五、鏡像的數據庫路徑儘可能與主體服務相同,若是主體服務器CPU 利用率在50%以上,擇不
建議配置自動故障轉移
六、建議配置高效穩定的網絡環境
3、設置概述
一、確保全部數據庫用戶在鏡像服務器上都有登陸名
二、在向另外一個服務器實例提供數據庫以前,您必須在該服務器實例上創建數據庫用於新服
務器實例時所需的環境
三、使用 NORECOVERY 還原最近的主體數據庫完整備份,以建立鏡像數據庫。確保執行備
份時主體數據庫已使用完整恢復模式。鏡像數據庫和主體數據庫名稱必須相同,而且它們在
數據庫鏡像會話中不能被重命名。
四、設置安全性並啓動數據庫鏡像會話。可使用 Transact-SQL 或數據庫鏡像嚮導來設置鏡
像。
五、(可選)將見證服務器添加到會話。
4、在Windows Server 2008 R2上安裝Sql Server 2008 enterprise X64
一、SQL Server 2008 須要.NET 3.5支持,因此安裝以前須要安裝.NET3.5,在服務器管理的功能單元中,添加.NET Framework 3.5.1功能
二、安裝時選擇全新SQL Server獨立安裝
三、選定功能組件,注意安裝目錄與其餘節點保持一致
四、使用默認實例名稱,或者與其餘節點相同
五、設定服務啓動帳戶,這裏配置全部服務均使用域管理啓動
六、設置混合身份登陸、制定SQL Server管理員
七、點擊下一步,等待安裝完成。在其餘節點按照一樣方式安裝SQL Server
5、配置數據庫鏡像前的數據庫準備
一、 確認數據庫使用了完整恢復模式:打開SQL Server Management,在VirtualManagerDB數據庫(將要鏡像的數據庫)上點擊右鍵選擇屬性,定位到選項頁,將恢復模式改成「完整」
二、 備份主體數據庫:在VirtualManagerDB數據庫上點擊右鍵——任務——備份,備份類型選擇完整
三、將備份文件拷貝到鏡像節點,執行還原。右鍵點擊數據庫,選擇還原數據庫,選定備份文件,寫入還原數據庫名稱,注意此數據庫名稱必須與主體服務器數據庫名稱一致。即VirtualManagerDB。
點擊選項頁,勾選覆蓋現有數據庫。選擇NORECOVERY模式
四、進行完整日誌備份
執行backup LOG VirtualManagerDB to Disk = 'c:\backup\vlogback.bak'
五、一樣,事務日誌備份在鏡像數據庫上還原。鏡像數據庫上,點擊右鍵——任務——還原——事務日誌
六、在還原選項中選中NORECOVERY,執行還原操做。
二.配置鏡像鏈接
1、設置安全性並啓動數據庫鏡像會話
一、展開數據庫,選擇VirtualManagerDB,點擊右鍵選擇任務——鏡像
二、點擊配置安全性,點選是,包括見證服務器
三、去掉見證服務器,之後進行配置
四、設置主體服務器,填入端點名稱爲site1
五、添加鏡像服務器,取端點名爲site2
六、指定服務帳戶爲域管理員帳戶(能夠在域內事先配置)
七、建立成功,點擊關閉
八、彈出對話框,選擇不開始開始鏡像
九、點選高性能模式的運行模式,點擊開始鏡像,查看狀態顯示已經同步
十、同步完成後,顯示以下
至此,鏡像配置完畢,接下來開始測試故障轉移
2、手動故障轉移測試
一、主體數據庫上點擊右鍵——任務——鏡像
更改運行模式爲高安全性(在高可用模式下不能進行手動故障轉移)
點擊右側故障轉移,提示斷開全部與主體數據庫的連接
一、 點擊是,開始向鏡像數據庫還原,下圖爲正在執行鏡像過程
四、 此時顯示鏡像已近完成,主體數據庫被轉移到了原來的鏡像數據庫HYTEST02。整個過程1秒鐘內完成
部署見證服務器,實現自動故障轉移。
1、關於見證服務器
一、若要支持自動故障轉移,必須在高安全性模式下配置數據庫鏡像會話,而且還要具備第三個服務器實例(也稱爲「見證服務器」)。見證服務器是 SQL Server 的可選實例,它能使高安全性模式會話中的鏡像服務器識別出是否要啓動自動故障轉移。與這兩個夥伴不一樣的是,見證服務器並不能用於數據庫。見證服務器的惟一角色是支持自動故障轉移。
二、爲了給數據庫設置見證服務器,數據庫全部者爲見證服務器的角色分配數據庫引擎實例。見證服務器實例能夠與主體服務器實例或鏡像服務器實例運行於同一臺計算機上,但這樣會明顯下降自動故障轉移的可靠性。所以建議見證服務器應位於另一臺計算機上。
三、在高性能模式下,見證服務器對可用性會有不利影響。若是見證服務器是針對數據庫鏡
像會話而配置,則主體服務器必須至少鏈接到一個其餘服務器實例,即鏡像服務器或見證服務器,或者是鏈接到這兩個服務器。不然,將沒法使用數據庫,而且不能進行強制服務(可能丟失數據)。所以,對於高性能模式,咱們極力建議您始終將見證服務器設置爲 OFF。
2、關於自動故障轉移
一、只有在高安全性模式(「具備自動故障轉移功能的高安全性模式」)下運行而且具備見證服務器的數據庫鏡像會話支持自動故障轉移。在具備自動故障轉移功能的高安全性模式下,同步數據庫後,若是主體數據庫變得不可用,則會發生自動故障轉移。自動故障轉移將致使鏡像服務器接管主體服務器的角色,並使其數據庫的副本聯機以做爲主體數據庫。由於每一個在主體數據庫中提交的事務同時也在鏡像數據庫中提交,因此須要使數據庫保持同步以防止在故障轉移過程當中丟失數據。
二、自動故障轉移所需條件
A、數據庫鏡像會話必須在高安全性模式下運行,而且必須處理見證服務器。
B、鏡像數據庫必須已經同步。這將保證發送到鏡像服務器的全部日誌都已寫入磁盤。
C、主體服務器已中斷了與其他數據庫鏡像配置的通訊,而鏡像服務器和見證服務器將保留仲裁。可是,若是全部服務器實例都已中斷通訊,而見證服務器和鏡像服務器稍後從新創建通訊,則不會發生自動故障轉移。
D、鏡像服務器已檢測到丟失了主體服務器
E、鏡像服務器檢測主體服務器故障的方式取決於故障是硬故障仍是軟故障。
更多自動故障轉移內容參考:http://msdn.microsoft.com/zh-cn/library/ms189590.aspx
3、自動故障轉移原理
一、若是主體服務器仍在運行中,則將主體數據庫的狀態更改成 DISCONNECTED 並斷開全部客戶端與主體數據庫的鏈接。
二、見證服務器和鏡像服務器將主體服務器註冊爲不可用。
三、若是重作隊列中有任何等待的日誌,則鏡像服務器將完成前滾鏡像數據庫的操做
四、前一個鏡像數據庫做爲新的聯機主體數據庫,恢復經過儘快回滾未提交的事務將這些事務所有清除。鎖將隔離這些事務。
五、當前一個主體服務器從新聯接到會話時,它將認定其故障轉移夥伴如今擁有主體角色。前一個主體服務器接管鏡像角色,並將其數據庫做爲鏡像數據庫。新的鏡像服務器會盡快將新的鏡像數據庫與主體數據庫同步。新的鏡像服務器從新同步數據庫後,就能夠再次執行故障轉移,但按反向執行。。
下圖說明了自動故障轉移的一個實例。
4、在見證服務器上看裝SQL Server 2008
詳見前一
5、配置見證服務器
一、主體數據庫服務器上,右鍵點擊數據庫,選擇任務——鏡像
二、在彈出的數據庫屬性頁面中,選定鏡像頁,點擊右側的配置安全
三、點擊下一步,選擇包括見證服務器
四、點擊下一步,進行見證服務器配置
五、點擊兩次下一步,填入見證服務器地址或機器名及站點名稱
六、填入服務帳戶
七、查看摘要信息,點擊完成數據庫
6、測試自動故障轉移
一、當前主體服務器爲Hytest01,鏡像數據庫是Hytest02
二、將主體服務器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 的鏡像高可用配置實例所有完成。安全