摘要:數據庫是前臺應用的“心臟”,其中每一條記錄凝結了工作人員的智慧和辛勤勞動,都是寶貴的財富。對其進行備份是有效防止軟硬件損壞、人為操作錯誤等對數據庫造成破壞的必備方法。該文詳細介紹了通過在Sql Server2000的數據庫維護計劃的基礎上經過腳本實現數據備份的具體步驟。
關鍵詞:SqlServer;數據庫;維護計劃;備份
中圖分類號:TP309.3文獻標識碼:A 文章編號:1009-3044(2009)33-9617-03
The Research and Application of Sqlserver Automatic Secondary Backup
WU Yan, ZHANG Dong
(Fujian Polytechnic of Information Technology, Fuzhou 350003, China)
Abstract: Database is the heart of foreground application, every record has the staff's wisdom and hard work., they are all valuable asset. Back-up the database is the really essential method of preventing damage to hardware and software, human operational errors and so on that destroys the database. This paper describes the concrete steps that after the script for data backup based on Sql Server2000 database maintenance plan.
Key words: SQL Server; database; maintenance plan; backup
Sql Server數據庫是目前廣泛使用的數據庫。備份和保護數據是數據庫維護的首要任務,SqlServer本身具有比較強大的備份功能,但出現災難的原因往往是由于硬盤的損壞,所以有必要在異地(異機)多保留一份備份數據,以備不測。這就要求我們除sqlserver自帶功能外,還要探索其他的方法實現SqlServer數據庫自動的異地備份。
1 備份目標
我們具體研究實現目標包括:每天對數據庫進行兩個不同時刻的完全備份、保留最近1周的備份數據、備份數據實現異地(異機)存放。
每天對數據庫進行兩個不同時刻的完全備份;保留最近1周的備份數據;備份數據實現異地(異機)存放;對于目標的前兩條,我是利用SQL Server 2000本身自帶“數據庫維護計劃”來實現的;而最后一條我是通過手工編寫腳本來實現的。
具體如下:“數據庫維護計劃”是SQL Server 2000能夠實現自動備份調度,以及自動刪除舊的數據備份,完全能夠滿足我我們備份要求。
2 實現步驟
2.1打開SQL Server“企業管理器”窗體
用鼠標單擊任務欄上的“開始”按鈕中的“程序(P)”菜單下的“Microsoft SQL Server”子菜單中的“企業管理器”菜單項,即可打開SQL Server 2000的“企業管理器”窗體。
2.2找到“數據庫維護計劃”功能
在“企業管理器”窗體中左側的樹型選項卡中,用鼠標單擊“+”圖標擴展開“控制臺根目錄”下的“Microsoft SQL Servers”,可以看到其下有一個“SQL Server組”;接著繼續擴展開“SQL Server組”,此時可以看到其下出現了服務器的名稱;再繼續擴展開此服務器,可以看到其下列出了諸如“數據庫”、“數據轉換服務”等項目;最后單擊“管理”項目,可以看到其下存在一個“數據庫維護計劃”(如圖1)。
2.3創建“數據庫維護計劃”
鼠標右擊“數據庫維護計劃”項目,選擇“新建維護計劃(P)”功能,將打開“數據庫維護計劃向導”窗體,依照此向導能夠創建一個新的“數據庫維護計劃”。
步驟1:單擊 “下一步(N)”按鈕,打開“選擇數據庫”窗體(如圖2)。在此窗體中選定文獻系統數據庫“tsgdb”。
步驟2:單擊圖2中的“下一步(N)”按鈕,打開“更新數據優化信息”窗體(如圖3)。
在此窗體中可以對數據庫中的數據和索引重新進行組織,以及能夠設定在滿足一定條件的情況下,維護計劃自動刪除數據庫中的未使用的空間,以便提高性能。
本人沒有使用其中的功能。
步驟3:單擊圖3中的“下一步(N)”按鈕,打開“檢查數據庫完整性”窗體,如圖4所示。
在此窗體中可以設定維護計劃在備份數據庫前自動檢查數據庫的完整性,以便檢測由于硬件或軟件錯誤而導致數據的不一致。選中“檢查數據庫完整性[H]”復選框,因為有可能會修正一些錯誤,使備份的數據更有效。
步驟4:在“檢查數據庫完整性”窗體中的“下一步(N)”按鈕,打開“指定數據庫備份計劃”窗體。因為圖書館開館時間為8:00——12:00和14:00——21:00,所以我在“調度”中設為每天12:30開始備份和21:30開始備份,這樣做,即提高了數據庫備份的效率,又不會影響到文獻系統的正常使用。
對數據庫進行備份,則必須選定“作為維護計劃的一部分來備份數據庫[A]”復選框,指定存儲備份文件的位置:磁盤。設定“調度”后單擊“下一步(N)”按鈕則顯示“指定備份磁盤目錄”窗體(如圖6)。
在圖6中,指定存儲備份文件的目錄備份文件擴展名,因為我要保存最近1周的備份,所以設置備份計劃自動地刪除早于1周的備份文件。設定后,單擊“下一步(N)”按鈕則顯示“指定事務日志備份計劃”窗體。
步驟5:指定“事務日志備份計劃”的過程與步驟4的過程完全相同,只是在設定“調度”上稍有差別(因為我的要求是數據庫每天備份一次,事務日志每1小時備份一次)。
步驟6:對事務日志的備份計劃全部設定后,單擊“下一步(N)”按鈕則顯示“要生成的報表”窗體。在此窗體中可以指定用于存放整個備份計劃執行過程中的日志的目錄。
步驟7:完成步驟6后,單擊“下一步(N)”按鈕則顯示“維護計劃歷史紀錄”窗體。
在此窗體中可以指定如何存儲此維護計劃的歷史紀錄(是存放在“本地服務器”上,還是在“遠程服務器”上),而且通過指定表中的行數可以限定歷史紀錄的存儲大小。
步驟8:完成步驟7后,單擊“下一步(N)”按鈕則顯示“正在完成數據庫維護計劃向導”窗體(如圖7)。
在此窗體中自定義一個“計劃名”為“tsgdb備份”。
步驟9:完成步驟8后,單擊“完成”按鈕,則顯示“維護計劃已創建成功。”的提示框,再單擊 “確定”按鈕即成功地設定了文獻系統數據庫維護計劃。
2.4 啟動SQL Server 2000代理以便執行“作業”
完成第三步后,還需啟動SQL Server 2000 Agent(代理),以便執行“數據庫維護計劃”作業。
與展開SQL Server 2000“數據庫維護計劃”的步驟一樣,在“管理”項目中,可以發現存在一個“SQL Server 代理”。
2.5 檢查結果
經過上述步驟后,文獻系統數據庫的備份計劃就建立起來了。可以通過“資源管理器”來檢查備份目錄下是否存在相應地備份文件。
通過以上操作,已經實現了在服務器上保留最近一周的備份數據了,為了防止服務器本身硬件故障等情況對備份數據造成破壞,我又通過編寫腳本實現了備份數據的異地(機)存放。具體如下:
3 編寫腳本
新建文件名為cptsgdb.txt的文本文件,在其中編輯以下內容(如圖8):
net use \\\\172.16.0.8\\DB_bk PASSWD_for_tsg /user:tsg
REM start copy
cd C:\\WINDOWS\\system32
xcopy.exe \\\\172.16.0.8\sg\\DB_back\\*.* g:\\ /e/h/y/d
說明:
172.16.0.8是數據庫服務器,DB_bk為服務器上存放備份數據的目錄,一定要先將其共享。
· net use \\\\172.16.0.8\\DB_bkPASSWD_for_tsg /user:tsg
以用戶tsg訪問DB_bk目錄,PASSWD_for_tsg是用戶tsg的密碼。
· REM start copy 此為注釋行
· cd C:\\WINDOWS\\system32 切換當前目錄到system32
· xcopy.exe \\\\172.16.0.8\sg\\DB_back\\*.* g:\\ /e/h/y/d
將服務器上的備份數據拷貝到本地g盤中。參數含義:
/e復制目錄和子目錄,包括空的。
/h也復制隱藏和系統文件。
/y禁止提示以確認改寫一個。
/d只復制那些源時間 比目標時間新的文件。
編輯完成后保存文件,將文件后綴改為.bat,這樣就生成了一個批處理文件,我們使用windows自帶的“任務計劃”來調度它,實現數據在兩臺計算機之間的自動定時copy。
4 結論
這樣對數據庫的異地備份的實現,這樣我們就能有效防止軟硬件損壞、人為操作錯誤等對數據庫造成破壞,來保障數據內容。
參考文獻:
[1] 薩師煊,王珊.數據庫系統概論[M].北京:高等教育出版社,2004:247-248.
[2] 張家愛.基于日志的數據恢復及其在SQLSERVER中的實現[J].農業網絡信息,2009(1).
[3] 趙松濤.SQL SERVER2000系統管理與應用開發[M].北京:人民郵電出版社,2006:18-20.
[4] 蘇國磊.利用RMAN實現Oracle數據庫的備份與恢復[J].電腦知識與技術,2007(2).
[5] 賈代平,吳麗娟.Oracle DBA核心技術解析[M].北京:電子工業出版社,2006:136-137.