標籤:
資料庫鏡像是一種針對資料庫高可用性的基於軟體的解決方案。其維護著一個資料庫的兩個相同的副本,這兩個副本分別放置在不同的SQL Server資料庫執行個體中
概述
“資料庫鏡像”是一種針對資料庫高可用性的基於軟體的解決方案。其維護著一個資料庫的兩個相同的副本,這兩個副本分別放置在不同的SQL Server資料庫執行個體中。建議使用不同位置的兩台伺服器來承載。在同一時刻,其中一台上的資料庫用於用戶端訪問,充當“主體伺服器”角色;而另一台則根 據鏡像會話的配置和狀態,充當熱備份伺服器,即“鏡像伺服器角色”,這兩種角色不是絕對的。
優點
l 增強了資料保護功能
l 提高了資料庫的可用性
l 提高了生產資料庫在升級期間的可用性
工作方式
在“資料庫鏡像會話”中,主體伺服器和鏡像伺服器是相互連信和協作,並雙方互補。主體伺服器角色上的資料庫副本為生產資料庫。資料庫鏡像會儘快將主 體資料庫中執行的每一項操作(如:插入、更新和刪除等)在鏡像資料庫中進行重新執行。這一過程是通過將活動交易記錄記錄的流發送到鏡像伺服器來完成,這可 以儘快將日誌記錄按順序應用到鏡像資料庫中。而且資料庫鏡像是在物理日誌記錄層級執行這一“重做”操作的。SQL Server 2008 R2(以下簡稱:SQL08R2)中,為了減少網路的負載,主體伺服器會將交易記錄記錄壓縮後進行發送。
運行模式
l 高效能模式(非同步運行):事務不需要等待鏡像伺服器將日誌寫入磁碟便可提交,這樣可最大程度地提高效能。這意味著事務不需要等待鏡像伺服器將日誌寫入磁碟便可提交,而此操作允許主體伺服器在事務延隔時間最小的條件下運行,但可能會丟失某些資料。
l 高安全模式(同步運行):當會話開始時,鏡像伺服器使鏡像資料庫儘快與主體資料庫同步。一旦同步了資料庫,事務將在雙方提交,這會延長事務延隔時間。
圖1
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)所示:
圖3
三、基本環境的準備
由於系統平台使用WIN08R2,而且啟用了防火牆設定,因此為了SQL08R2能夠正常工作,需要在防火牆上開啟相應的連接埠。本文中介紹資料庫鏡 像需要開啟的連接埠是TCP-1433和TCP-5022連接埠。開啟檔案非常多,但是此處可以結合基於域的組策略為三台SQL08R2伺服器同時進行整體配 置。
將三台伺服器放置在同一個OU中(4)
圖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
圖5
此外,對於SQL08R2來講,預設情況下,SQL服務的TCP/IP訪問是禁用的,所以需要通過SQL Server Configuration Manager將其啟用(6)。
圖6
四、準備資料庫
在登入將作為主體伺服器的SQL-1伺服器(7),定位需要鏡像的資料庫(本文中是mydb資料庫),右擊選擇其“屬性”(8)。
圖7
圖8
在其屬性視窗中,選擇“選項”頁,確認其復原模式為“完整”(9)。
圖9
關閉該視窗,然後對該資料進行完整備份和交易記錄備份。選擇mydb資料庫節點,右擊選擇任務——備份(10)。
在備份視窗中選擇備份類型為“完整”,並指定目標備份包的路徑(11),點擊“確定”進行備份。
相同步驟,開啟備份視窗,選擇備份類型為“完整”,並指定目標備份包的路徑(12),點擊“確定”進行備份。這裡為了方便可以選擇與完整備份相同的備份包。
圖12
將備份包複製到鏡像伺服器SQL-2上(13),並且從SQL管理主控台登入到SQL-2(14)。
圖13
圖14
建立與主體伺服器上需要鏡像的資料庫相同名稱的資料庫——mydb(15)。同時,資料庫檔案放置的位置應該相同,各屬性也應該配置相同。
圖15
在SQL-2上對建立的資料庫進行還原作業,即將從SQL-1上對資料庫的備份針對SQL-2上建立的mydb進行還原作業。右擊mydb資料庫選擇任務——還原——資料庫(16)開啟還原資料庫視窗。
圖16
選擇“原裝置”,通過瀏覽添加從SQL-1複製的備份包(17)。
圖17
再選擇頁中選擇“選項”,勾選“覆蓋現有資料庫”,同時選擇“不對資料庫執行任何操作,不復原未提交的事務。可以還原其他交易記錄。(RESTORE WITH NORECOVERY)”(18)。
圖18
點擊“確定”,完成資料庫還原操作(19)
圖19
五、配置主體/鏡像伺服器
在SQL-1上,右擊mydb,選擇任務——鏡像(20),開啟鏡像資料庫配置視窗,點擊“配置安全性”按鈕(21)。
圖20
圖21
在“包括見證伺服器”頁中選擇“是”(22),這樣可以在之後實現自動容錯移轉。單擊下一步。
圖22
在“選擇要配置的伺服器”頁面中,可以不勾選“見證伺服器執行個體”(23),因為見證伺服器可以在之後來進行配置。
圖23
點擊下一步,指定主體伺服器監聽連接埠和端點名稱(24),預設的連接埠為TCP-5022連接埠,端點名稱自訂。
圖24
單擊下一步,指定鏡像伺服器,在下拉式功能表中選擇“瀏覽更多”(25),在“串連到伺服器”對話方塊中指定登入到SQL-2(26)。
圖25
圖26
仍然需要指定鏡像伺服器的接聽程式連接埠和端點名稱,這裡的連接埠仍然使用預設的TCP-5022(27)。
圖27
單擊下一步,指定伺服器執行個體的服務賬戶,在此測試環境中統一使用管理員賬戶,但是在生產環境中建議專門為其建立一個賬戶(28)。
圖28
單擊下一步,顯示摘要,確認無誤,點擊“完成”(29)進行端點配置。
圖29
成功完成配置後,系統提示是否立刻進行“開始鏡像”(30),單擊開始鏡像。
圖30
完成資料庫同步後,鏡像狀態會顯示為“已同步:資料庫已完全同步”(31)。由此,主體伺服器和鏡像伺服器的部署已經完成。
圖31
註:在最後一個步驟中,進行鏡像同步時,需要在每一台SQL08R2伺服器上啟用“Remote DAC”,否則可能會收到錯誤提示(32)
圖32
在SQL08R2中啟用遠端管理員串連的方法如下:
右擊伺服器節點,選擇“方面”(33)
圖33
開啟“查看方面”視窗,在“方面”下拉式功能表中選擇“介面區配置器”(34),指定“方面屬性”的“RemoteDacEnabled”值為“True”(35)。
圖34
圖35
六、實現手動容錯移轉
首先,確定目前主體伺服器和鏡像伺服器工作均正常,並且串連正常。目前在SQL-1上,mydb的狀態是“主體,已同步”(36)
圖36
在SQL-1上開啟mydb的“鏡像”配置視窗,確認運行模式為“高安全”模式,然後點擊“容錯移轉”按鈕(37)。系統提示是否進行轉移(38),單擊“是”進行轉移。
圖37
圖38
成功完成操作後,在SQL-1上資料庫mydb的狀態變為了“鏡像,已同步/正在還原……”(39);
圖39
而在SQL-2上,mydb的狀態變為“主體,已同步”了(40)。由此可見進行容錯移轉的結果是使其主體/鏡像角色互換了。
圖40
七、實現自動容錯移轉
自動容錯移轉需要配置見證伺服器,由於此前在實現主體/鏡像伺服器的過程中,略過了見證伺服器的配置,所以,現在需要手動重新設定見證伺服器。
在主體伺服器SQL-1上,右擊資料庫mydb,選擇任務——鏡像(41),開啟“鏡像”配置視窗,選擇“配置安全性”按鈕(42)
圖41
圖42
將安全性配置為包括見證伺服器執行個體(43)
圖43
單擊下一步,勾選“見證伺服器執行個體”(44)。
圖44
單擊下一步,確認主體伺服器配置(45),
單擊下一步,配置見證伺服器,在下拉式功能表中選擇“瀏覽更多”(46)。串連並登入到SQL-3(47)
圖46
圖47
指定“接聽程式連接埠”為預設的TCP-502和端點名稱(48)
圖48
單擊下一步,指定網域系統管理員作為主體/鏡像/見證的服務賬戶(49)
圖49
單擊下一步,確認摘要資訊無誤,點擊“完成”(50)。
圖50
成功完成配置後,在“鏡像”配置視窗中會顯示“見證伺服器”資訊,並自動選中“帶自動容錯移轉功能的高安全(同步)”(51)。
圖51
註:此時“不帶自動容錯移轉功能的高安全(同步)”將不可使用
斷開SQL-1的網路連接,類比主體伺服器,即生產資料庫伺服器出現故障。如:拔去SQL-1的網線。SQL-1上的mydb狀態將自動變為“主體,已中斷連線/正在恢複”(52)
圖52
而此時,在SQL-2上查看mydb狀態將自動變為“主體,已中斷連線”(53)。
圖53
八、驗證鏡像資料庫的資料同步。
在各角色都正常工作的情況下,定位到主體伺服器SQL-1上mydb資料庫,建立表t1。並在其中插入資料(54)。
圖54
完成建表和插入資料後,拔掉SQL-1的網線,類比故障。然後,登入鏡像伺服器SQL-2,定位到mydb資料庫,展開可以看到鏡像同步過來的t1表,開啟表可以看到表中的資料也是同步過來的(55)。
圖55
由此可以看出,“資料庫鏡像”技術可以成功對資料進行熱備,使SQL08R2的可用性得以大大提高。此外,需要注意的是,出現故障後的伺服器訪問定位需要在SQL語句層級進行設計,在此將不再進行敘述。
參考文章:
《微軟技術資產庫SQL Server 2008 R2資料庫鏡像》 http://technet.microsoft.com/zh-cn/library/bb934127.aspx
SQL Server 2008 R2資料庫鏡像部署圖文教程