■ 河南 劉景云
編者按:DPM可以利用VSS服務從數(shù)據(jù)庫級,為SQL Server提供數(shù)據(jù)備份操作,可以更好的備份和恢復復雜的數(shù)據(jù)庫結構。利用SQL Server上的VSS服務,DPM還可以瞬間為數(shù)據(jù)庫創(chuàng)建快照,并對快照進行備份,來實現(xiàn)數(shù)據(jù)的一致性,可以有效避免在恢復數(shù)據(jù)時,出現(xiàn)的數(shù)據(jù)庫損壞或者數(shù)據(jù)庫結構需要重建等問題。在群集環(huán)境中,如果發(fā)生了異常的故障轉(zhuǎn)移,DPM會智能提醒管理員執(zhí)行一致性檢查,來保證數(shù)據(jù)的一致性。
DPM備份SQL Server的要點
這里以使用DPM 2012 R2和SQL Server 2012為例進行說明。在使用DPM保護SQL Server時,需要對所有的 Database,SQL Server安裝目錄,System State等對象進行備份。如果SQL Server安 裝 在Windows Server 2003等老系統(tǒng)上,需要使用DPM 2007中提供的SRT保護系統(tǒng)狀態(tài)。對于tempdb數(shù)據(jù)庫來說,是不需要進行備份的。因為其是用來保存SQL Server的所有臨時數(shù)據(jù),可以為復雜的查詢緩存各種結果集。
當SQL Server重新啟動時,會創(chuàng)建新的tempdb數(shù)據(jù)庫。不管創(chuàng)建什么數(shù)據(jù)庫,都是使用Model數(shù)據(jù)庫作為模版,如果其出現(xiàn)問題,會導致無法創(chuàng)建新的數(shù)據(jù)庫的問題。因此,每當對該數(shù)據(jù)庫進行修改后,對其執(zhí)行一次備份即可。在SQL Server群集環(huán)境中,主要對每個節(jié)點上的SQL安裝目錄進行備份,注意需要排除數(shù)據(jù)庫存儲路徑。對于群集的仲裁盤是不需要進行備份的。
SQL Server的備份和恢復模式
對于SQL Server來說,提供了完整備份、差異備份、事務日志備份等模式,對于完整備份來說,指的是對整個數(shù)據(jù)庫,部分事務日志,數(shù)據(jù)庫結構和文件結構的備份。
對于差異備份來說,指的是對上一次完整備份之后所有的更改的數(shù)據(jù)進行備份。
對于事務日志備份來說,用來記錄數(shù)據(jù)庫的所有改變。其又分為備份日志和截斷事務日志兩類,前者備份的目標為從上一次成功的事務日志備份到當前事務日志額尾部,后者指到事務日志活動部分的開始,丟棄不活動的部分,可以有效降低事務日志磁盤空間的占用率。
對于數(shù)據(jù)恢復來說,SQL Server支持簡單模式,大容量日志模式和完整模式。
對于簡單模式來說,適用于不常更新的小型數(shù)據(jù)庫,不支持日志備份,會丟失最后一次備份后的數(shù)據(jù)更改,不能恢復到即時點。對于大容量日志模式來說,值進行最小化的日志備份,可能會有數(shù)據(jù)的丟失,不能夠恢復到即時點,一般用于臨時海量數(shù)據(jù)的導入。
對于完整模式來說,可以支持日志備份,不會丟失數(shù)據(jù),能夠恢復到即時點,對于生產(chǎn)型數(shù)據(jù)庫來說,一般需要使用完整恢復模式。當需要執(zhí)行大容量日志記錄操作時,可以切換到大容量日志恢復模式。如果有多個備份需要還原的話,除了最后一個之外的所有備份在還原時必須中設置為“Restore with norecovery”方式,不對數(shù)據(jù)庫進行任何操作,不回滾未提交的事務,可以還原其他事務日志。
備份SQL Server的注意事項
在 使 用DPM對SQL Server進行備份時,需要考慮到很多因素。例如,當SQL Server數(shù)據(jù)進行了升級之后,需要對停止對之前老版本數(shù)據(jù)庫的保護,同時選擇保留數(shù)據(jù)選項。
在升級之后的SQL Server服務器上安裝DPM代理程序,并啟動SQL Server的編寫器服務,因為SQL Server備份是依賴于編寫器服務的。之后將升級后的服務器上數(shù)據(jù)庫添加到新保護組中。例如,在DPM控制臺左下角選擇“保護”項,在左側的“所有保護組”欄中選擇對應的保護組,在右側的保護組列表中選擇舊的SQL Server服務器,在其右鍵菜單上點擊“停止成員保護”項,在打開的窗口(如圖1)中不選擇“刪除磁盤上的副本”項,點擊確定按鈕停止保護。
圖1 停止成員保護窗口
在保護組的右鍵菜單上點擊“修改保護組”項,在向?qū)Ы缑嬷袑⑸壓蟮腟QL Server服務器添加進來。
注意,在升級后的服務器上 執(zhí) 行“services.mac” 程序,在服務管理器中選擇“SQL Server VSS Writer”項,確保該服務處于啟動狀態(tài),該服務提供用于通過Windows VSS基礎結構備份/還原Microsoft SQL Server的接口。如果目標SQL Server服務器遷移到了新的域環(huán)境中,那么需要對遷移后的服務器進行全新的數(shù)據(jù)保護。
在DPM保護組中刪除原有域的成員,對副本和恢復點數(shù)據(jù)進行保留,并對該服務器上的DPM代理程序進行強制卸載,之后對遷移到新域中的SQL Server重新安裝代理,將該機上的數(shù)據(jù)添加到保護組。
當重命名了SQL Server之后,也需要先從保護組中刪除原有主機名稱的數(shù)據(jù)源,之后針對新名稱的主機進行數(shù)據(jù)保護。以上操作實現(xiàn)起來很繁瑣,所以建議不要輕易更改受保護的主機的域或者重命令主機名。
這是因為對于DPM 2012來說,是利用計算機名作為副本恢復點,以及DPM數(shù)據(jù)庫條目(包括報表數(shù)據(jù)庫條目)的唯一標識符。
上面已經(jīng)談到,當在恢復SQL Server時,可以使用三種模式。當將SQL Server數(shù)據(jù)庫添加到保護組時,DPM將檢測數(shù)據(jù)庫所使用的恢復模式類型。如果檢測到使用的是簡單恢復模式,則不允許進行日志備份和增量備份。只有使用完整備份和大容量日志恢復模式,才可以執(zhí)行日志備份。對于使用完整或大容量日志恢復模式的數(shù)據(jù)庫來說,當DPM對其進行保護時,會在受保護的SQL Server上創(chuàng)建一個目錄。
該目錄位于受保護數(shù)據(jù)庫的第一個日志文件所在的路徑下。在使用DPM進行SQL Server日志備份和還原過程中,將使用此目錄作為日志的臨時存儲。如果該目錄缺失,DPM將重新創(chuàng)建該目錄。如果將受保護的數(shù)據(jù)庫的恢復模式從完整或者大容量日志更改為簡單模式后,快速完整備份可以繼續(xù)進行,但是增量備份將失敗。在這種情況下,具體操作是先在DPM上停止對目標數(shù)據(jù)庫的保護,同時選擇保留副本選項。之后將SQL Server數(shù)據(jù)庫的恢復模式更改為簡單模式,然后將數(shù)據(jù)添加到保護組。
在為數(shù)據(jù)庫配置日志傳送或者將數(shù)據(jù)庫更改為只讀狀態(tài)前,也需要停止對數(shù)據(jù)庫的保護。在對數(shù)據(jù)庫進行更改后,需要重新配置對數(shù)據(jù)庫的保護。當SQL Server群集中的磁盤空間不夠,對其進行磁盤替換來提升容量,或者磁盤損壞需要更換時,如果磁盤包含DPM所保護的SQL Server的數(shù)據(jù),那么對于更換的新磁盤來說,需要為其分配與之前相同的盤符,然后使用DPM將受保護的數(shù)據(jù)恢復到新磁盤。
如果僅僅是將SQL Server數(shù)據(jù)庫遷移到新的磁盤上,那么只需將原有磁盤下線,將新磁盤賦予原有的盤符,DPM就可以自動對其識別。
在使用SQL Server時,可能會將新的數(shù)據(jù)庫添加到數(shù)據(jù)庫實例中,DPM允許使用SQL Server實例自動保護來保護新添加的數(shù)據(jù)庫。DPM可以自動確定和保護添加到要自動保護的SQL Server實例中的數(shù)據(jù)庫,可以使用“cmdlet Start-AutoProtection”命令,來強制DPM立即檢查是否有新數(shù)據(jù)庫加入并對其進行保護。
當更改受保護的數(shù)據(jù)庫關聯(lián)的路徑時,備份操作將失敗。為此需要從保護組中刪除數(shù)據(jù)庫,然后將此數(shù)據(jù)庫重新添加都保護組中,并對保護組的這一更改進行一致性檢查,當一致性檢查通過后,才可以進行正常的保護作業(yè)。如果對SQL Server數(shù)據(jù)庫進行重命名操作,那么必須將采用新名稱的數(shù)據(jù)庫添加到保護組中,之后將保護組中舊名稱的數(shù)據(jù)庫刪除,才可以對新的數(shù)據(jù)源進行保護。
對于DPM來說,是可以支持SQL Server的并行備份作業(yè)的。即允許對同一保護組中的數(shù)據(jù)源進行并行備份來優(yōu)化網(wǎng)絡使用。對于SQL Server群集來說,如果將新的服務器添加進來,DPM將發(fā)出警報,提示在新群集結點上安裝保護代理,否則的話會出現(xiàn)保護失敗的情況,但從群集中刪除某臺服務器,DPM將自動檢測到目標節(jié)點已經(jīng)離開群集,并且會顯示其與群集分離,在該服務器上沒有可保護的數(shù)據(jù)。對于SQL Server鏡像來說,必須在鏡像的兩臺服務器上同時安裝保護代理,不要在同一臺主機上對數(shù)據(jù)庫進行鏡像。
安裝DPM代理保護
在對于SQL Server進行備份之前,需要在SQL Server服務器上安裝DPM代理和WSB備份組件。對于代理來說,可以使用自動推送或者手動安裝的方式。
例如,對于后者來說,可以將DPM 2012安裝盤中的“DPMAgentInstall_x64.exe”文件復制到SQL服務器上。運行該安裝文件,之后切換到DPM代理程序安裝路徑中的“bin”目錄中,執(zhí) 行“SetDpmServer.exe-dpmservername dpmser.xxx.com”命 令,指 定 DMP 2012服務器名稱。
圖2 配置代理賬戶權限
對于SQL Server 2012來說,當安裝了DPM代理后,在Microsoft SQL Server Management Studio中打開打開目標數(shù)據(jù)庫實例,選擇“安全性”-“登錄名”項,會在其中顯示“NT SERVERDPMRA”對象,在其右擊菜單上點擊“屬性”項,在打開窗口(如圖2)左側選擇“服務器角色”項,在右側選擇“public”和“sysadmin”角色,讓保護代理擁有所需的權限。
否則,在使用DPM進行備份時,會出現(xiàn)“保護代理在SQL Server實例上沒有sysadmin權限”的報錯信息。
如果沒有該賬戶,可以在系統(tǒng)中創(chuàng)建“DPMRA”賬戶,之后在“安全性”-“登錄名”項的右鍵菜單上點擊“新建登錄名”項,選擇“Windows身份驗證”項,導入上述“DPMRA”賬戶即可。
也可以先在Windows中執(zhí) 行“net user DPMRA p@ssword /add” 命 令, 創(chuàng)建“DPMRA”賬 戶,之 后 在在Microsoft SQL Server Management Studio中 執(zhí)行“Create login [xxxDPMRA] from Windows”或者“Exec sp_grantLogin [xxxDPMRA]”命令,來創(chuàng)建上述登錄名,其中的“XXX”為SQL Server服務器的名稱。
使用DPM保護SQL Server數(shù)據(jù)庫
在DPM管理控制臺左下角選擇“保護”項,在右側選擇保護組,在其右鍵菜單上點擊“修改保護組”項,在向?qū)Т翱谥羞x擇目標SQL Server服務器,在其中選擇需保護的數(shù)據(jù)庫,點擊下一步按鈕,配置所需的保持期,同步頻率,一致性檢測項目,文件的恢復點等參數(shù)。點擊“更新組”按鈕,執(zhí)行數(shù)據(jù)備份操作。之后在保護組中選擇該SQL Server保護對象,在其右鍵菜單上點擊“執(zhí)行一次性檢查”項,進行初始化同步。之后可以根據(jù)需要,在該菜單中點擊“創(chuàng)建恢復點”項,來創(chuàng)建備份項目。
注意,DPM提供了增量同步和帶有一致性檢查的同步兩種同步方式。
對于后者來說,是DPM用來檢查和更正受保護數(shù)據(jù)源及其副本之間的不一致的過程。作為同步過程的一部分,一致性檢查執(zhí)行逐個數(shù)據(jù)塊的驗證,來確保副本中的所有數(shù)據(jù)與受保護的數(shù)據(jù)保持一致。此過程比增量同步慢,因為其要比較副本上的所有數(shù)據(jù),不是只將數(shù)據(jù)更改應用到副本。如果選擇了在副本不一致時自動執(zhí)行一致性檢查的項目,或為保護組設置了日常一致性檢查,那么DPM會自動啟動一致性檢查并將其作為日常任務完成。
對于保持期來說,可以讓數(shù)據(jù)處于可恢復狀態(tài)的持續(xù)時間。DPM會在保持期中指定的持續(xù)時間內(nèi)保留恢復點,副本不一致的任何一天都不會計入保持期。保持期最長時間始終為64天,對于不同的數(shù)據(jù)源來說,可用的最大恢復點數(shù)量是不同的,例如對于SQL Server來說,每天最多可以創(chuàng)建96個恢復點,最多在448天進行512個快速完整備份。也就是說,最多每天可每隔15分鐘創(chuàng)建一恢復點。最多可在448天內(nèi)創(chuàng)建43008個恢復點。
快速完整備份是一種同步類型,可以讓保護代理傳輸自上次快速完整備份后,以及自上次執(zhí)行一致性檢查后已經(jīng)更改的所有塊的快照。在初次創(chuàng)建副本后,可進行首次快速完整備份??焖偻暾麄浞莶僮鲗τ谛阅芎蜁r間的影響要低于完整備份,因為其使用DPM的篩選器技術來識別已更改的塊,僅傳輸自上次快速完整備份后更改的塊。
恢復SQL Server 數(shù)據(jù)庫
在執(zhí)行恢復操作時,在DPM控制臺左下角選擇“恢復”項,在左側的“可恢復的數(shù)據(jù)”欄中選擇目標SQL Server服務器下的所需數(shù)據(jù)庫,在右側的“恢復時間”列表中選擇具體的時間點,在“路徑”列表中選擇所需的恢復項目,在其右鍵菜單上點擊“恢復”項,在向?qū)Ы缑妫ㄈ鐖D4)中選擇恢復的類型,如果選擇“恢復到SQL Server的原始實例”項,在下一步窗口中選擇具體的恢復選項。
如果有多個備份需要還原的話(例如采用了類似于完整+差異+事務日志備份方式),那么除了最后一個備份之外的所有備份在還原時,需要選擇“是數(shù)據(jù)庫保持不可操作性狀態(tài),但能夠還原其他事務日志”項。當恢復最后一個備份時,需要選擇“是數(shù)據(jù)庫保持可操作性狀態(tài)”項。點擊下一步按鈕,其余選項保持默認,點擊恢復按鈕,執(zhí)行數(shù)據(jù)恢復操作。如果選擇“恢復到任何SQL Server實例”項,在下一步窗口點擊瀏覽按鈕,選擇所需的實例名稱,并指定數(shù)據(jù)庫文件位置,之后執(zhí)行恢復操作即可。如果選擇“復制到網(wǎng)絡文件夾”項,之后選擇目標網(wǎng)絡路徑,將其恢復到該共享路徑中。