概述
“數(shù)據(jù)庫鏡像”是一種針對數(shù)據(jù)庫高可用性的基于軟件的解決方案。其維護(hù)著一個數(shù)據(jù)庫的兩個相同的副本,這兩個副本分別放置在不同的SQL Server數(shù)據(jù)庫實例中。建議使用不同位置的兩臺服務(wù)器來承載。在同一時刻,其中一臺上的數(shù)據(jù)庫用于客戶端訪問,充當(dāng)“主體服務(wù)器”角色;而另一臺則根據(jù)鏡像會話的配置和狀態(tài),充當(dāng)熱備份服務(wù)器,即“鏡像服務(wù)器角色”,這兩種角色不是絕對的。
優(yōu)點(diǎn)
l 增強(qiáng)了數(shù)據(jù)保護(hù)功能
l 提高了數(shù)據(jù)庫的可用性
l 提高了生產(chǎn)數(shù)據(jù)庫在升級期間的可用性
工作方式
在“數(shù)據(jù)庫鏡像會話”中,主體服務(wù)器和鏡像服務(wù)器是相互通信和協(xié)作,并雙方互補(bǔ)。主體服務(wù)器角色上的數(shù)據(jù)庫副本為生產(chǎn)數(shù)據(jù)庫。數(shù)據(jù)庫鏡像會盡快將主體數(shù)據(jù)庫中執(zhí)行的每一項操作(如:插入、更新和刪除等)在鏡像數(shù)據(jù)庫中進(jìn)行重新執(zhí)行。這一過程是通過將活動事務(wù)日志記錄的流發(fā)送到鏡像服務(wù)器來完成,這可以盡快將日志記錄按順序應(yīng)用到鏡像數(shù)據(jù)庫中。而且數(shù)據(jù)庫鏡像是在物理日志記錄級別執(zhí)行這一“重做”操作的。SQL Server 2008 R2(以下簡稱:SQL08R2)中,為了減少網(wǎng)絡(luò)的負(fù)載,主體服務(wù)器會將事務(wù)日志記錄壓縮后進(jìn)行發(fā)送。
運(yùn)行模式
l 高性能模式(異步運(yùn)行):事務(wù)不需要等待鏡像服務(wù)器將日志寫入磁盤便可提交,這樣可最大程度地提高性能。這意味著事務(wù)不需要等待鏡像服務(wù)器將日志寫入磁盤便可提交,而此操作允許主體服務(wù)器在事務(wù)滯后時間最小的條件下運(yùn)行,但可能會丟失某些數(shù)據(jù)。
l 高安全模式(同步運(yùn)行):當(dāng)會話開始時,鏡像服務(wù)器使鏡像數(shù)據(jù)庫盡快與主體數(shù)據(jù)庫同步。一旦同步了數(shù)據(jù)庫,事務(wù)將在雙方提交,這會延長事務(wù)滯后時間。
圖1
l 具有故障轉(zhuǎn)移功能的高安全性模式(見證服務(wù)器):這種模式最大的優(yōu)點(diǎn)就是主體服務(wù)器斷線時,鏡像服務(wù)器上的數(shù)據(jù)庫副本會自動啟用,作為生產(chǎn)數(shù)據(jù)庫為客戶端提供服務(wù)。在這一結(jié)構(gòu)中見證服務(wù)器并不能用于數(shù)據(jù)庫,其主要作用是通過驗證主體服務(wù)器是否已啟用并運(yùn)行來支持自動故障轉(zhuǎn)移。
注意:只有在與主體服務(wù)器斷開連接之后,鏡像服務(wù)器仍和見證服務(wù)器保持相互連接時,鏡像服務(wù)器才啟動自動故障轉(zhuǎn)移。
見證服務(wù)器的作用是驗證指定的伙伴服務(wù)器是否已啟動并正常運(yùn)行。如果鏡像服務(wù)器與主體服務(wù)器斷開,但見證服務(wù)器仍與主體服務(wù)器保持連接,則鏡像服務(wù)器無法啟動故障轉(zhuǎn)移。所以要實現(xiàn)故障轉(zhuǎn)移的條件是主體服務(wù)器與鏡像服務(wù)器斷線,同時也與見證服務(wù)器斷線;鏡像服務(wù)器與見證服務(wù)器連線的情況。
圖2
角色切換
自動切換:在使用見證服務(wù)器的情況下,數(shù)據(jù)庫必須已經(jīng)同步,并且見證服務(wù)器必須和鏡像服務(wù)器連接正常。
手動切換:在高安全性模式下,主體服務(wù)器和鏡像服務(wù)器必須保持互聯(lián),并且數(shù)據(jù)庫必須已經(jīng)同步。
強(qiáng)制服務(wù):在高性能模式和不帶自動故障轉(zhuǎn)移功能的高安全性模式下,如果主體服務(wù)器出現(xiàn)故障而鏡像服務(wù)器可用,則可以強(qiáng)制服務(wù)運(yùn)行。這種方式可能導(dǎo)致某些數(shù)據(jù)庫丟失。
實現(xiàn)
一、條件
SQL08R2的“數(shù)據(jù)庫鏡像”必須基于每個使用完整恢復(fù)模式的數(shù)據(jù)庫來實現(xiàn)。對于SQL08R2不支持簡單恢復(fù)模式和大容量日志恢復(fù)模式的數(shù)據(jù)庫鏡像。另外,不能鏡像“master”、“msdb”、“model”和“tempdb”等系統(tǒng)數(shù)據(jù)庫。
二、環(huán)境
測試環(huán)境為一個LAN內(nèi),IP地址是192.168.0.0/24段,域名是punwar.cn。
DC:192.168.0.110/24——域控制器和DNS服務(wù)器;
SQL-1:192.168.0.111/24——SQL08R2主體服務(wù)器;
SQL-1:192.168.0.112/24——SQL08R2鏡像服務(wù)器;
SQL-1:192.168.0.113/24——SQL08R2見證服務(wù)器。
拓?fù)洌ㄈ鐖D3)所示:
圖3
三、基本環(huán)境的準(zhǔn)備
由于系統(tǒng)平臺使用WIN08R2,而且啟用了防火墻設(shè)置,因此為了SQL08R2能夠正常工作,需要在防火墻上打開相應(yīng)的端口。本文中介紹數(shù)據(jù)庫鏡像需要打開的端口是TCP-1433和TCP-5022端口。打開方式非常多,但是此處可以結(jié)合基于域的組策略為三臺SQL08R2服務(wù)器同時進(jìn)行整體配置。
將三臺服務(wù)器放置在同一個OU中(如圖4)
圖4
通過DC的組策略管理器,為其OU單獨(dú)創(chuàng)建一個GPO,并定位其“計算機(jī)配置”——“管理模板”——“網(wǎng)絡(luò)/網(wǎng)絡(luò)連接/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來講,默認(rèn)情況下,SQL服務(wù)的TCP/IP訪問是禁用的,所以需要通過SQL Server Configuration Manager將其啟用(如圖6)。
圖6
四、準(zhǔn)備數(shù)據(jù)庫
在登錄將作為主體服務(wù)器的SQL-1服務(wù)器(如圖7),定位需要鏡像的數(shù)據(jù)庫(本文中是mydb數(shù)據(jù)庫),右擊選擇其“屬性”(如圖8)。
圖7
圖8
在其屬性窗口中,選擇“選項”頁,確認(rèn)其恢復(fù)模式為“完整”(如圖9)。
圖9
關(guān)閉該窗口,然后對該數(shù)據(jù)進(jìn)行完整備份和事務(wù)日志備份。選擇mydb數(shù)據(jù)庫節(jié)點(diǎn),右擊選擇任務(wù)——備份(如圖10)。
在備份窗口中選擇備份類型為“完整”,并指定目標(biāo)備份包的路徑(如圖11),點(diǎn)擊“確定”進(jìn)行備份。
相同步驟,打開備份窗口,選擇備份類型為“完整”,并指定目標(biāo)備份包的路徑(如圖12),點(diǎn)擊“確定”進(jìn)行備份。這里為了方便可以選擇與完整備份相同的備份包。
圖12
將備份包復(fù)制到鏡像服務(wù)器SQL-2上(如圖13),并且從SQL管理控制臺登錄到SQL-2(如圖14)。
圖13
圖14
創(chuàng)建與主體服務(wù)器上需要鏡像的數(shù)據(jù)庫相同名稱的數(shù)據(jù)庫——mydb(如圖15)。同時,數(shù)據(jù)庫文件放置的位置應(yīng)該相同,各屬性也應(yīng)該配置相同。
圖15
在SQL-2上對新建的數(shù)據(jù)庫進(jìn)行還原操作,即將從SQL-1上對數(shù)據(jù)庫的備份針對SQL-2上新建的mydb進(jìn)行還原操作。右擊mydb數(shù)據(jù)庫選擇任務(wù)——還原——數(shù)據(jù)庫(如圖16)打開還原數(shù)據(jù)庫窗口。
圖16
選擇“原設(shè)備”,通過瀏覽添加從SQL-1復(fù)制的備份包(如圖17)。
圖17
再選擇頁中選擇“選項”,勾選“覆蓋現(xiàn)有數(shù)據(jù)庫”,同時選擇“不對數(shù)據(jù)庫執(zhí)行任何操作,不回滾未提交的事務(wù)??梢赃€原其他事務(wù)日志。(RESTORE WITH NORECOVERY)”(如圖18)。
圖18
點(diǎn)擊“確定”,完成數(shù)據(jù)庫還原操作(如圖19)
圖19
五、配置主體/鏡像服務(wù)器
在SQL-1上,右擊mydb,選擇任務(wù)——鏡像(如圖20),打開鏡像數(shù)據(jù)庫配置窗口,點(diǎn)擊“配置安全性”按鈕(如圖21)。
圖20
圖21
在“包括見證服務(wù)器”頁中選擇“是”(如圖22),這樣可以在之后實現(xiàn)自動故障轉(zhuǎn)移。單擊下一步。
圖22
在“選擇要配置的服務(wù)器”頁面中,可以不勾選“見證服務(wù)器實例”(如圖23),因為見證服務(wù)器可以在之后來進(jìn)行配置。
圖23
點(diǎn)擊下一步,指定主體服務(wù)器監(jiān)聽端口和端點(diǎn)名稱(如圖24),默認(rèn)的端口為TCP-5022端口,端點(diǎn)名稱自定義。
圖24
單擊下一步,指定鏡像服務(wù)器,在下拉菜單中選擇“瀏覽更多”(如圖25),在“連接到服務(wù)器”對話框中指定登錄到SQL-2(如圖26)。
圖25
圖26
仍然需要指定鏡像服務(wù)器的偵聽器端口和端點(diǎn)名稱,這里的端口仍然使用默認(rèn)的TCP-5022(如圖27)。
圖27
單擊下一步,指定服務(wù)器實例的服務(wù)賬戶,在此測試環(huán)境中統(tǒng)一使用管理員賬戶,但是在生產(chǎn)環(huán)境中建議專門為其創(chuàng)建一個賬戶(如圖28)。
圖28
單擊下一步,顯示摘要,確認(rèn)無誤,點(diǎn)擊“完成”(如圖29)進(jìn)行端點(diǎn)配置。
圖29
成功完成配置后,系統(tǒng)提示是否立刻進(jìn)行“開始鏡像”(如圖30),單擊開始鏡像。
圖30
完成數(shù)據(jù)庫同步后,鏡像狀態(tài)會顯示為“已同步:數(shù)據(jù)庫已完全同步”(如圖31)。由此,主體服務(wù)器和鏡像服務(wù)器的部署已經(jīng)完成。
圖31
注:在最后一個步驟中,進(jìn)行鏡像同步時,需要在每一臺SQL08R2服務(wù)器上啟用“Remote DAC”,否則可能會收到錯誤提示(如圖32)
圖32
在SQL08R2中啟用遠(yuǎn)程管理員連接的方法如下:
右擊服務(wù)器節(jié)點(diǎn),選擇“方面”(如圖33)
圖33
打開“查看方面”窗口,在“方面”下拉菜單中選擇“外圍應(yīng)用配置器”(如圖34),指定“方面屬性”的“RemoteDacEnabled”值為“True”(如圖35)。
圖34
圖35
六、實現(xiàn)手動故障轉(zhuǎn)移
首先,確定目前主體服務(wù)器和鏡像服務(wù)器工作均正常,并且連接正常。目前在SQL-1上,mydb的狀態(tài)是“主體,已同步”(如圖36)
圖36
在SQL-1上打開mydb的“鏡像”配置窗口,確認(rèn)運(yùn)行模式為“高安全”模式,然后點(diǎn)擊“故障轉(zhuǎn)移”按鈕(如圖37)。系統(tǒng)提示是否進(jìn)行轉(zhuǎn)移(如圖38),單擊“是”進(jìn)行轉(zhuǎn)移。
圖37
圖38
成功完成操作后,在SQL-1上數(shù)據(jù)庫mydb的狀態(tài)變?yōu)榱恕扮R像,已同步/正在還原……”(如圖39);
圖39
而在SQL-2上,mydb的狀態(tài)變?yōu)椤爸黧w,已同步”了(如圖40)。由此可見進(jìn)行故障轉(zhuǎn)移的結(jié)果是使其主體/鏡像角色互換了。
圖40
七、實現(xiàn)自動故障轉(zhuǎn)移
自動故障轉(zhuǎn)移需要配置見證服務(wù)器,由于此前在實現(xiàn)主體/鏡像服務(wù)器的過程中,略過了見證服務(wù)器的配置,所以,現(xiàn)在需要手動重新配置見證服務(wù)器。
在主體服務(wù)器SQL-1上,右擊數(shù)據(jù)庫mydb,選擇任務(wù)——鏡像(如圖41),打開“鏡像”配置窗口,選擇“配置安全性”按鈕(如圖42)
圖41
圖42
將安全性配置為包括見證服務(wù)器實例(如圖43)
圖43
單擊下一步,勾選“見證服務(wù)器實例”(如圖44)。
圖44
單擊下一步,確認(rèn)主體服務(wù)器配置(如圖45),
單擊下一步,配置見證服務(wù)器,在下拉菜單中選擇“瀏覽更多”(如圖46)。連接并登錄到SQL-3(如圖47)
圖46
圖47
指定“偵聽器端口”為默認(rèn)的TCP-502和端點(diǎn)名稱(如圖48)
圖48
單擊下一步,指定域管理員作為主體/鏡像/見證的服務(wù)賬戶(如圖49)
圖49
單擊下一步,確認(rèn)摘要信息無誤,點(diǎn)擊“完成”(如圖50)。
圖50
成功完成配置后,在“鏡像”配置窗口中會顯示“見證服務(wù)器”信息,并自動選中“帶自動故障轉(zhuǎn)移功能的高安全(同步)”(如圖51)。
圖51
注:此時“不帶自動故障轉(zhuǎn)移功能的高安全(同步)”將不可使用
斷開SQL-1的網(wǎng)絡(luò)連接,模擬主體服務(wù)器,即生產(chǎn)數(shù)據(jù)庫服務(wù)器出現(xiàn)故障。如:拔去SQL-1的網(wǎng)線。SQL-1上的mydb狀態(tài)將自動變?yōu)椤爸黧w,已斷開連接/正在恢復(fù)”(如圖52)
圖52
而此時,在SQL-2上查看mydb狀態(tài)將自動變?yōu)椤爸黧w,已斷開連接”(如圖53)。
圖53
八、驗證鏡像數(shù)據(jù)庫的數(shù)據(jù)同步。
在各角色都正常工作的情況下,定位到主體服務(wù)器SQL-1上mydb數(shù)據(jù)庫,創(chuàng)建表t1。并在其中插入數(shù)據(jù)(如圖54)。
圖54
完成建表和插入數(shù)據(jù)后,拔掉SQL-1的網(wǎng)線,模擬故障。然后,登錄鏡像服務(wù)器SQL-2,定位到mydb數(shù)據(jù)庫,展開可以看到鏡像同步過來的t1表,打開表可以看到表中的數(shù)據(jù)也是同步過來的(如圖55)。
圖55
由此可以看出,“數(shù)據(jù)庫鏡像”技術(shù)可以成功對數(shù)據(jù)進(jìn)行熱備,使SQL08R2的可用性得以大大提高。此外,需要注意的是,出現(xiàn)故障后的服務(wù)器訪問定位需要在SQL語句級別進(jìn)行設(shè)計,在此將不再進(jìn)行敘述。
參考文章:
《微軟技術(shù)資源庫SQL Server 2008 R2數(shù)據(jù)庫鏡像》
http://technet.microsoft.com/zh-cn/library/bb934127.aspx
本文出自 “胖哥技術(shù)堂” 博客
您可能感興趣的文章:- win2008 r2 安裝sqlserver 2000問題的解決方法
- SQL Server 2008 R2 超詳細(xì)安裝圖文教程
- 還原sqlserver2008 媒體的簇的結(jié)構(gòu)不正確的解決方法
- SQL Server 2008 R2:error 26 開啟遠(yuǎn)程連接詳解
- SQL Server2008導(dǎo)出數(shù)據(jù)之Excel詳細(xì)解析
- SQL SERVER 2008 R2配置管理器出現(xiàn)“遠(yuǎn)程過程調(diào)用失敗”(0x800706be)錯誤提示
- win2008 r2 安裝sql server 2005/2008 無法連接服務(wù)器解決方法
- SQLServer2005與SQLServer2008數(shù)據(jù)庫同步圖文教程
- win2008 r2 下安裝sql server 2005 64位教程(圖解)
- 圖文詳解SQL Server 2008R2使用教程