top
Loading...
解SQLServer“數據庫維護計劃”

作為網管員,無論其管理的網絡的規模是大還是小,在日常的管理中除了維護網絡平穩運行、及時排除網絡故障、保護網絡安全等工作以外,備份網絡中關鍵數據也是其中的一個非常非常重要的工作環節。

網絡中的各種故障無非就分兩種:軟件故障和硬件故障。對于“硬件故障”可以通過維修或更換硬件設備得到及時解決;對于“軟件故障”則可以通過重新安裝或升級軟件、重做網絡或應用軟件系統等方法及時解決,而且用此方法來解決網絡故障大多需要一些基礎的、關鍵的數據支持才能得以恢復正常。但是,網絡中諸如此類的關鍵數據(特別是“應用軟件系統”中的關鍵數據)的損壞或丟失,絕大部分是無法恢復和彌補的。即使可以恢復部分數據,彌補它們所花費的代價(諸如時間、人力、財力、物力等)都可能遠遠超出了公司的承受能力。

所以說,注重數據的備份工作是網管員日常管理工作中的必須時刻關注的一項任務,也是必須周期性重復操作的一項工作。

目錄

現行備份策略
具體實現步驟
結束語

現行備份策略

我公司在組建局域網時,考慮到商業企業的特點,仔細考量了購、銷、存三大環節中發生的各種數據及其存儲問題后,選定了以Windows 2000 Server為操作系統,SQL Server 2000為數據庫平臺來搭建局域網的應用系統的軟件平臺,以網線為載體將購、銷、存等核心部門的計算機通過局域網平臺緊密地連接起來。這樣,各個核心部門每天的任何一筆業務都及時地、動態地存儲到公司局域網的核心Dell服務器上的SQL Server 2000數據庫中,并以此為基礎平臺向各方提供所需的各種數據服務。

因此,自公司局域網開始正式運作之日起,作為網管員的我就非常注重對局域網中的關鍵數據——特別是這些業務數據的備份工作。同時,我也希望備份數據的軟件能夠實現以下自動功能。

功能1:能夠在每天的某個固定的時刻(如夜晚0:00:00,當然這個時間是可以自主設定的)對包含所有業務數據庫在內的所有關鍵數據庫進行一次“完全備份”。

功能2:能夠在每天的0:00:00至23:59:59這段時間內,每間隔1個小時對功能1中所涉及到的各個數據庫的事務日志進行“差異備份”。

功能3:每天都能夠保留功能1和功能2中所生成的數據庫和事務日志的最近兩天的備份(即:前一天的和前兩天的),而且能夠自動地刪除久于兩天前的所有數據庫和事務日志的備份。

功能4:定期(如每個星期一次)將所有關鍵數據庫的完全備份的副本備份到磁帶或其它存儲介質上(這部分工作可能需要手工完成)。

于是,圍繞這些功能的實現,在日常管理工作中,我盡可能地嘗試了各種備份數據的軟件和方法,如Windows 2000自帶的“備份”工具、SQL Server 2000自帶的“備份”功能等。這些備份軟件和方法的功能各有千秋,但是都存在以下缺點:

一種就是需要人工干預,無法實現自動備份(如Windows 2000自帶的“備份”工具)。如果采用這種方法,就必須時刻人工手動備份,萬一哪天因為出差或其它原因沒有進行備份,而這時又出現服務器或數據故障的話,那麻煩就大了。

另一種就是能夠實現自動備份,但是舊的備份不能被自動地刪除(如SQL Server 2000自帶的“備份”功能)。如果采取這種方法,就必須及時地手工刪除舊的備份,否則再大的硬盤也會迅速地被用完。

在相互比較后,我還是決定采用第二種——SQL Server 2000自帶的“備份”功能對關鍵數據庫進行備份,因為它能夠實現“自動備份”功能,比第一種略強。所以,在一段時期內,我每天上班后的第一件事就是先檢查一下備份目錄下各種數據的新的備份,然后手工刪除舊的備份數據。這種做法一度讓我很是苦惱。

一天,我在利用SQL Server 2000的“幫助”查詢某個Transact-SQL語句的語義解釋時無意中閱讀到“自動化管理任務”的內容。從頭到尾地仔細閱讀后,我不由得眼睛一亮,原來SQL Server 2000本身自帶了一個能夠實現我的備份要求的、強大的功能——“數據庫維護計劃”。于是我立刻按照這部分內容的提示,以一個數據庫為試驗樣本一步一步地操作,成功地創建了一個數據庫維護計劃。經過一個星期的試運行,這個計劃果然能夠實現自動備份調度,以及自動刪除舊的數據備份,完全能夠滿足我的備份要求。

從那時起,我就利用SQL Server 2000的“數據庫維護計劃”備份所有關鍵數據庫,而且嚴格地、定期地執行功能4,每個星期五將完全備份的數據庫備份到磁帶和局域網中其它客戶機(主要是用于網絡管理的網管PC)的硬盤上。這樣做的目的是,能同時異地保存三份相同的備份,減少故障帶來的損失。

而且,通過SQL Server 2000的“數據庫維護計劃”,我現在能夠較輕松地備份所需各種數據,方便地管理其備份,相應地減少了日常工作量,也減輕了部分工作壓力。

具體實現步驟

目錄

第一步:打開SQL Server“企業管理器”窗體
第二步:找到“數據庫維護計劃”功能
第三步:創建“數據庫維護計劃”
第四步:維護和管理“數據庫維護計劃”
第五步:啟動SQL Server 2000代理以便執行“作業”
第六步:檢查結果

“數據庫維護計劃”功能在SQL Server 2000的“企業管理器”中可以找到。

說明:

1.以下操作是在服務器的Windows 2000 Server上進行操作的。在Window 9X系統上操作相同。

2.由于SQL Server 2000執行備份時將產生許多文件(特別是在進行事務日志備份時),所以建議按數據庫名稱分別建立獨立的備份目錄進行存儲。

3.以下所有操作過程當中一般不會對數據庫的使用產生影響。

第一步:打開SQL Server“企業管理器”窗體

用鼠標單擊任務欄上的“開始”按鈕中的“程序(P)”菜單下的“Microsoft SQL Server”子菜單中的“企業管理器”菜單項,即可打開SQL Server 2000的“企業管理器”窗體。

第二步:找到“數據庫維護計劃”功能

在“企業管理器”窗體中左側的樹型選項卡中,用鼠標單擊“+”圖標擴展開“控制臺根目錄”下的“Microsoft SQL Servers”,可以看到其下有一個“SQL Server組”;接著繼續擴展開“SQL Server組”,此時可以看到其下出現了服務器的名稱(圖1中的“JXNC-SERVER”就是我的服務器的名稱);再繼續擴展開此服務器,可以看到其下列出了諸如“數據庫”、“數據轉換服務”等項目;最后單擊“管理”項目,可以看到其下存在一個“數據庫維護計劃”(如圖1)。

圖1

單擊“數據庫維護計劃”項目,在“企業管理器”窗口右側將會顯示出已經存在的維護計劃項目。每個維護計劃均包括以下項目:

1.名稱:就是維護計劃的名稱。此名稱可以自定義,中英文皆可。

2.數據庫:就是維護計劃所進行維護的數據庫的名稱。

因為一個維護計劃允許同時維護多個數據庫,所以此處可以顯示出多個數據庫的名稱(在圖1中可以看到名為“系統數據庫備份”的數據庫維護計劃中的“數據庫”就包括三個數據庫:master、model和msdb)。

3.服務器:也就是維護計劃所維護的數據庫所處的服務器的名稱。“(local)”表示是本地服務器。

4.對策:是指維護計劃所需要進行的具體維護工作的內容。

圖1中有3個“數據庫維護計劃”均為“數據庫備份,事務日志備份”,它的含義就是這些維護計劃中同時對所指定的數據庫進行“數據庫”和“事務日志”的備份。

第三步:創建“數據庫維護計劃”

鼠標右擊“數據庫維護計劃”項目,選擇“新建維護計劃(P)”功能,將打開“數據庫維護計劃向導”窗體,依照此向導能夠創建一個新的“數據庫維護計劃”。

步驟1:單擊 “下一步(N)”按鈕,打開“選擇數據庫”窗體(如圖2)。在此窗體中可以選定一個或多個的數據庫作為操作對象。為了敘述方便,我在此只選擇了一個數據庫“regie”。

圖2

步驟2:單擊圖2中的“下一步(N)”按鈕,打開“更新數據優化信息”窗體(如圖3)。

圖3

在此窗體中可以對數據庫中的數據和索引重新進行組織,以及能夠設定在滿足一定條件的情況下,維護計劃自動刪除數據庫中的未使用的空間,以便提高性能。

但要注意的是,在此窗體中,只要選定了“重新組織數據和索引頁[R]”復選框,“更新查詢優化器所使用的統計。示例[D]”復選框將失效(變成灰色,不能選擇)。而且“重新組織數據和索引頁[R]”復選框和“從數據庫文件中刪除未使用的空間[M]”復選框二者只要有一個被選中,其下的“調度[S]”功能才有效。單擊“更改[C]”按鈕可以對“調度”進行自定義。

各位讀者可以根據自身情況決定是否選用其中的功能。當然也可以通過單擊“幫助”按鈕來查看各功能的具體含義。

在此窗體中能夠便捷地設定每項作業的持續運行時間和運行的頻率。完成自己的設置后,一定要選定右上角的“啟用調度[B]”復選框,這樣一個作業調度才算真正完成了。

步驟3:單擊圖3中的“下一步(N)”按鈕,打開“檢查數據庫完整性”窗體。

在此窗體中可以設定維護計劃在備份數據庫前自動檢查數據庫的完整性,以便檢測由于硬件或軟件錯誤而導致數據的不一致。在此窗體中只有先選定了“檢查數據庫完整性[H]”復選框,其下的“備份之前執行這些檢查[R]”和“調度[S]”功能才有效。單擊“更改[C]”按鈕可以對“調度”進行自定義。

各位讀者可以自主決定,較好的一種做法就是選中“檢查數據庫完整性[H]”復選框(推薦,因為有可能會修正一些錯誤)。

步驟4:在“檢查數據庫完整性”窗體中的“下一步(N)”按鈕,打開“指定數據庫備份計劃”窗體。

如需對數據庫進行備份,則必須選定“作為維護計劃的一部分來備份數據庫[A]”復選框,而且必須指定存儲備份文件的位置:磁帶[P]或磁盤[K]。

如果選擇“磁盤[K]”作為數據庫備份的位置,設定“調度”后單擊“下一步(N)”按鈕則顯示“指定備份磁盤目錄”窗體(如圖4)。

圖4

在圖4中,可以具體指定存儲備份文件的目錄(可以使用默認的目錄,也可自定義)、備份文件擴展名,而且能夠指示備份計劃自動地刪除早于某個時間(圖4中設定的是“2天”,也就是說兩天前的所有備份文件將被自動地刪除,只留下最近兩天的備份)的備份文件。而圖4中的“為每個數據庫創建子目錄[C]”功能只是在步驟1中選擇了多個數據庫時才有用,對于一個數據庫作用不大。設定后,單擊“下一步(N)”按鈕則顯示“指定事務日志備份計劃”窗體。

如果選擇“磁帶[P]”作為數據庫備份的位置,設定“調度”后單擊“下一步(N)”按鈕則直接顯示“指定事務日志備份計劃”窗體。

步驟5:指定“事務日志備份計劃”的過程與步驟4的過程完全相同,只是在設定“調度”上稍有差別(因為我的要求是數據庫每天備份一次,事務日志每1小時備份一次)。

步驟6:對事務日志的備份計劃全部設定后,單擊“下一步(N)”按鈕則顯示“要生成的報表”窗體。

在此窗體中可以指定用于存放整個備份計劃執行過程中的日志的目錄。設定過程與圖4的操作及其相似。

圖5

步驟7:完成步驟6后,單擊“下一步(N)”按鈕則顯示“維護計劃歷史紀錄”窗體。

在此窗體中可以指定如何存儲此維護計劃的歷史紀錄(是存放在“本地服務器”上,還是在“遠程服務器”上),而且通過指定表中的行數可以限定歷史紀錄的存儲大小。

步驟8:完成步驟7后,單擊“下一步(N)”按鈕則顯示“正在完成數據庫維護計劃向導”窗體(如圖5)。

在此窗體中可以自定義一個“計劃名[P]”(推薦,這樣便于管理和識別),當然也可使用默認的“計劃名[P]”。而且還可以通過對“計劃名[P]”下的文本框中的內容進行確認,如有誤,則可通過單擊窗體中的“上一步[B]”按鈕退回到相應的窗體進行修改。

步驟9:完成步驟8后,單擊“完成”按鈕,則顯示“維護計劃已創建成功。”的提示框,再單擊 “確定”按鈕即成功地設定了一個新的數據庫維護計劃。

從圖6中可以看到,已經成功的創建了一個新的數據庫維護計劃——“regie備份”。

第四步:維護和管理“數據庫維護計劃”

第三步完成后,對各個“數據庫維護計劃”的日常維護和管理都非常方便,只需要雙擊“數據庫維護計劃”即可對第三步中所涉及的內容進行變更、修正。

圖6

如圖6所示,鼠標右擊“regie備份”,單擊“屬性[R]”,或者直接雙擊“regie備份”,打開“數據庫維護計劃”窗體。在此窗體中集成了第三步中涉及到的所有功能,每項功能都能任意修改,修改過程與第三步中的相應步驟一樣。

但需要說明的是,在設定圖7中的“報表”選項卡下的“文本報表”中的“刪除早于此時間的文本報表文件[F]”選項時,也就是第三步中的步驟6中的內容,無論您將其設定成“分鐘”、“小時”、“天”,還是“月”,創建成功后都將被自動地更正為“周”,而且以后無論如何修改,保存后再去查看時它仍將顯示為“周”,但不意味著其它選項無效,其它選項仍然有效。

圖7

第五步:啟動SQL Server 2000代理以便執行“作業”

完成第三步后,還需啟動SQL Server 2000 Agent(代理),以便執行“數據庫維護計劃”作業。

與展開SQL Server 2000“數據庫維護計劃”的步驟一樣,在“管理”項目中,可以發現存在一個“SQL Server 代理”(如圖8)。

圖8

單擊“SQL Server 代理”下的“作業”子菜單,在“企業管理器”窗口右側將會顯示出已經存在的作業項目(在圖8中可以看到已經存在17個作業項目)。每個作業項目均包括以下數據列:

1.名稱:當然是指作業的名稱,可以自定義,中英文皆可。為了理解方便,建議用中英文結合。

每當新建立一個“數據庫維護計劃”,將自動生成以下默認名稱的作業:

(1)當新建的“數據庫維護計劃”中設定了“備份數據庫”功能時,將生成默認名為“DB 維護計劃‘******’的 DB 備份作業”的作業。

(2)當新建的“數據庫維護計劃”中設定了“備份事務日志”功能時將生成默認名為“DB 維護計劃‘******’的 事務日志備份作業(多服務器)”的作業。

以上(1)和(2)中的“******”處將顯示“數據庫維護計劃”中的“計劃名”(也就是第三步步驟8中設定的“計劃名”)。

2.分類:指明該作業當前所屬的類別。缺省值為“[未分類(本地)]”。

3.啟用:指明該作業是否處于“啟用”狀態。

4.可運行:指明該作業是否處于“可運行”狀態。

5.已調度:指明該作業是否處于“已調度”狀態。

6.狀態:指明該作業當前的運行狀態—不在運行、正在運行。

7.上次運行狀態(開始日期):顯示最近一次運行該作業后的狀態(“已成功”、“失敗”,還是“未知”),和運行時的日期和時間。

8.下次運行日期:指明下一次運行該作業的日期和時間。

如圖8所示,鼠標右擊“regie完全備份”作業,單擊“屬性[R]”,或者直接雙擊“regie完全備份”作業,打開作業的“屬性”窗體。在此窗體中集成了該作業的詳細的配置項。每個配置項都能任意修改。“屬性”窗體中有四個選項卡:

◆ 常規:在此選項卡中可以重新設定作業名稱(“名稱[N]”文本框)、修改作業的分類(“分類[Y]”下拉框)、指定作業的所有者(“所有者[W]”下拉框)、簡單地對作業進行描述(“描述[R]”文本框),以及決定是否啟用此作業(“啟用[E]”復選框)。

◆ 步驟:在此選項卡中可以新建、插入新的步驟,刪除、編輯已有的步驟。

單擊“編輯[E]”按鈕,在“編輯作業步驟”窗體中的“常規”選項卡中的“命令[M]”文本框中可以查閱到該作業的執行語句。

◆ 調度:在此選項卡中可以新建調度、新建警報,刪除、編輯已有的調度。

◆ 通知:在此選項卡中可以設定作業完成時(即當作業成功時、作業失敗時)執行的操作,即發送電子郵件、傳呼操作員、發出網絡警報信息、寫入Windows應用程序事件日志、自動刪除等操作。

第六步:檢查結果

經過上述五個步驟后,一個完整的備份數據庫的計劃就建立起來了。可以通過“資源管理器”來檢查備份目錄下是否存在相應地備份文件。

經過長時間的使用,如果以“保留2天的數據庫完全備份和2天的每個一小時的事務日志備份”的備份策略來正確地建立了一個完整的數據庫維護計劃的話,無論何時查看相應備份目錄下的文件,都應該存在102個文件:

◆2個數據庫的完整備份,即2個以“數據庫名_db_yyyy mmddhhss.bak”格式為文件名的文件;

◆ 3個與數據庫完整備份相對應的操作過程的記錄報告文件,即以“數據庫名”+“備份4_yyyymmddhhss.txt” 格式為文件名的文件;

◆ 48個事務日志的差異備份,即2天各24個以“數據庫名_tlog_yyyymmddhhss.trn”格式為文件名的文件;

◆ 49個與事務日志的差異備份對應的操作過程的記錄報告文件,即以“數據庫名”+“備份6_yyyymmddhhss.txt” 格式為文件名的文件。

以上文件名中,“數據庫名”為第三步的步驟一中選定的數據庫的名稱;“yyyymmddhhss”是時間戳,其格式為:“yyyy”指“年”(4位數值),“mm”指“月”(2位數值,不足2位的補“0”),“dd”指“日”(2位數值,不足2位的補“0”),“hh”指“時”(2位數值,不足2位的補“0”),“ss”指“分”(2位數值,不足2位的補“0”)。

結束語

對于一個企業而言,日常運作中發生的各種業務所產生的所有數據,經過計算機不斷地日積月累,逐漸成為公司的一種財富和資本。利用計算機,可以便捷地統計分析部分或全部的數據,通過各種形式的反饋(如圖表、表格等),給公司的決策層用于參考,便于為公司的今后決策提供指導和幫助。正基于此,這些數據的價值隨著時間的延續正呈現出幾何速度的增長。因此我認為,對于數據的備份工作是網管員日常工作中最重要的工作之一。

通過這次“數據庫維護計劃”的創建,我略有感受:

1.經過這么長時間的運用,我認為“數據庫維護計劃”仍然存在不足之處,雖說“數據庫維護計劃”功能很強大,但是它最終的結果是生成一項作業,由“SQL Server 2000 Agent”服務定期執行它來完成對數據庫的備份工作。這就要求“SQL Server 2000 Agent”服務能夠正常地“運行”。從多次安裝來看,在Windows 2000系統中“SQL Server 2000 Agent”服務能夠正常運行,而且能隨Windows 2000的啟動自動運行。但是在Window 98系統(包括第二版)中,卻不能正常運行。所以說,在Windows 98系統中即使依照上述步驟成功地創建了“數據庫維護計劃”,也會因為“SQL Server 2000 Agent”服務無法啟動而變得沒有任何作用。

2.之所以選擇“完全備份”,主要在于,在進行完全備份時,SQL Server將.mdf與其對應的.ldf文件進行對比,刪除一些舊的、不必要的日志,然后將.mdf和.ldf文件進行合并、壓縮后一起存儲。

◆ 優點是:能最大可能地、完整地保存數據庫。

◆ 缺點是:存儲量隨著數據庫的增大而增大,存儲時間也將隨著數據庫的增大而延長。

3.在建立“數據庫維護計劃”過程,各位讀者應該盡可能地去使用各種選項、功能,以便加深對“數據庫維護計劃”的理解和掌握。

4.雖然Internet上有許多第三方備份軟件和工具,但是大多數是共享版。由于擔心知識產權問題、病毒問題和其它問題,所以我沒有試用這些第三方軟件。這樣的話,它們的性能我就不清楚了。也許這些軟件的功能非常強大,能夠滿足更多的、更高的要求。在這里我只是就Windows 2000和SQL Server 2000自帶的“備份”工具和軟件進行一個比較。

小編說話:如果你想闡述自己的觀點,請在下面的“發表評論”中發言

(責任編輯:趙紀雷)

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗