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