概述
“數據庫鏡像”是一種針對數據庫高可用性的基于軟件的解決方案。其維護著一個數據庫的兩個相同的副本,這兩個副本分別放置在不同的SQL Server數據庫實例中。建議使用不同位置的兩臺服務器來承載。在同一時刻,其中一臺上的數據庫用于客戶端訪問,充當“主體服務器”角色;而另一臺則根據鏡像會話的配置和狀態,充當熱備份服務器,即“鏡像服務器角色”,這兩種角色不是絕對的。
優點
l 增強了數據保護功能
l 提高了數據庫的可用性
l 提高了生產數據庫在升級期間的可用性
工作方式
在“數據庫鏡像會話”中,主體服務器和鏡像服務器是相互通信和協作,并雙方互補。主體服務器角色上的數據庫副本為生產數據庫。數據庫鏡像會盡快將主體數據庫中執行的每一項操作(如:插入、更新和刪除等)在鏡像數據庫中進行重新執行。這一過程是通過將活動事務日志記錄的流發送到鏡像服務器來完成,這可以盡快將日志記錄按順序應用到鏡像數據庫中。而且數據庫鏡像是在物理日志記錄級別執行這一“重做”操作的。SQL Server 2008 R2(以下簡稱:SQL08R2)中,為了減少網絡的負載,主體服務器會將事務日志記錄壓縮后進行發送。
運行模式
l 高性能模式(異步運行):事務不需要等待鏡像服務器將日志寫入磁盤便可提交,這樣可最大程度地提高性能。這意味著事務不需要等待鏡像服務器將日志寫入磁盤便可提交,而此操作允許主體服務器在事務滯后時間最小的條件下運行,但可能會丟失某些數據。
l 高安全模式(同步運行):當會話開始時,鏡像服務器使鏡像數據庫盡快與主體數據庫同步。一旦同步了數據庫,事務將在雙方提交,這會延長事務滯后時間。
圖2
角色切換
自動切換:在使用見證服務器的情況下,數據庫必須已經同步,并且見證服務器必須和鏡像服務器連接正常。
手動切換:在高安全性模式下,主體服務器和鏡像服務器必須保持互聯,并且數據庫必須已經同步。
強制服務:在高性能模式和不帶自動故障轉移功能的高安全性模式下,如果主體服務器出現故障而鏡像服務器可用,則可以強制服務運行。這種方式可能導致某些數據庫丟失。
實現
一、條件
SQL08R2的“數據庫鏡像”必須基于每個使用完整恢復模式的數據庫來實現。對于SQL08R2不支持簡單恢復模式和大容量日志恢復模式的數據庫鏡像。另外,不能鏡像“master”、“msdb”、“model”和“tempdb”等系統數據庫。
二、環境
測試環境為一個LAN內,IP地址是192.168.0.0/24段,域名是punwar.cn。
DC:192.168.0.110/24——域控制器和DNS服務器;
SQL-1:192.168.0.111/24——SQL08R2主體服務器;
SQL-1:192.168.0.112/24——SQL08R2鏡像服務器;
SQL-1:192.168.0.113/24——SQL08R2見證服務器。
拓撲(如圖3)所示:
圖4
通過DC的組策略管理器,為其OU單獨創建一個GPO,并定位其“計算機配置”——“管理模板”——“網絡/網絡連接/Windows防火墻/域配置文件”,啟用“定義入站端口例外”(如圖5),分別定義兩條:
1433:TCP:192.168.0.0/24:enabled:SQL Server
5022:TCP:192.168.0.0/24:enabled:SQL Server DBM
圖6
四、準備數據庫
在登錄將作為主體服務器的SQL-1服務器(如圖7),定位需要鏡像的數據庫(本文中是mydb數據庫),右擊選擇其“屬性”(如圖8)。
圖8
在其屬性窗口中,選擇“選項”頁,確認其恢復模式為“完整”(如圖9)。
在備份窗口中選擇備份類型為“完整”,并指定目標備份包的路徑(如圖11),點擊“確定”進行備份。
圖12
將備份包復制到鏡像服務器SQL-2上(如圖13),并且從SQL管理控制臺登錄到SQL-2(如圖14)。
圖14
創建與主體服務器上需要鏡像的數據庫相同名稱的數據庫——mydb(如圖15)。同時,數據庫文件放置的位置應該相同,各屬性也應該配置相同。
圖16
選擇“原設備”,通過瀏覽添加從SQL-1復制的備份包(如圖17)。
圖18
點擊“確定”,完成數據庫還原操作(如圖19)
圖20
圖22
在“選擇要配置的服務器”頁面中,可以不勾選“見證服務器實例”(如圖23),因為見證服務器可以在之后來進行配置。
圖24
單擊下一步,指定鏡像服務器,在下拉菜單中選擇“瀏覽更多”(如圖25),在“連接到服務器”對話框中指定登錄到SQL-2(如圖26)。
圖26
仍然需要指定鏡像服務器的偵聽器端口和端點名稱,這里的端口仍然使用默認的TCP-5022(如圖27)。
圖28
單擊下一步,顯示摘要,確認無誤,點擊“完成”(如圖29)進行端點配置。
圖30
完成數據庫同步后,鏡像狀態會顯示為“已同步:數據庫已完全同步”(如圖31)。由此,主體服務器和鏡像服務器的部署已經完成。
圖32
在SQL08R2中啟用遠程管理員連接的方法如下:
右擊服務器節點,選擇“方面”(如圖33)
圖34
圖36
在SQL-1上打開mydb的“鏡像”配置窗口,確認運行模式為“高安全”模式,然后點擊“故障轉移”按鈕(如圖37)。系統提示是否進行轉移(如圖38),單擊“是”進行轉移。
圖38
成功完成操作后,在SQL-1上數據庫mydb的狀態變為了“鏡像,已同步/正在還原……”(如圖39);
圖40
七、實現自動故障轉移
自動故障轉移需要配置見證服務器,由于此前在實現主體/鏡像服務器的過程中,略過了見證服務器的配置,所以,現在需要手動重新配置見證服務器。
在主體服務器SQL-1上,右擊數據庫mydb,選擇任務——鏡像(如圖41),打開“鏡像”配置窗口,選擇“配置安全性”按鈕(如圖42)
圖42
將安全性配置為包括見證服務器實例(如圖43)
圖44
單擊下一步,確認主體服務器配置(如圖45),
圖46
圖48
單擊下一步,指定域管理員作為主體/鏡像/見證的服務賬戶(如圖49)
圖50
成功完成配置后,在“鏡像”配置窗口中會顯示“見證服務器”信息,并自動選中“帶自動故障轉移功能的高安全(同步)”(如圖51)。
圖52
而此時,在SQL-2上查看mydb狀態將自動變為“主體,已斷開連接”(如圖53)。
圖54
完成建表和插入數據后,拔掉SQL-1的網線,模擬故障。然后,登錄鏡像服務器SQL-2,定位到mydb數據庫,展開可以看到鏡像同步過來的t1表,打開表可以看到表中的數據也是同步過來的(如圖55)。
圖55
由此可以看出,“數據庫鏡像”技術可以成功對數據進行熱備,使SQL08R2的可用性得以大大提高。此外,需要注意的是,出現故障后的服務器訪問定位需要在SQL語句級別進行設計,在此將不再進行敘述。
參考文章:
《微軟技術資源庫SQL Server 2008 R2數據庫鏡像》
本文出自 “胖哥技術堂” 博客
新聞熱點
疑難解答