摘要:數(shù)據(jù)庫(kù)是前臺(tái)應(yīng)用的“心臟”,其中每一條記錄凝結(jié)了工作人員的智慧和辛勤勞動(dòng),都是寶貴的財(cái)富。對(duì)其進(jìn)行備份是有效防止軟硬件損壞、人為操作錯(cuò)誤等對(duì)數(shù)據(jù)庫(kù)造成破壞的必備方法。該文詳細(xì)介紹了通過(guò)在Sql Server2000的數(shù)據(jù)庫(kù)維護(hù)計(jì)劃的基礎(chǔ)上經(jīng)過(guò)腳本實(shí)現(xiàn)數(shù)據(jù)備份的具體步驟。
關(guān)鍵詞:SqlServer;數(shù)據(jù)庫(kù);維護(hù)計(jì)劃;備份
中圖分類(lèi)號(hào):TP309.3文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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數(shù)據(jù)庫(kù)是目前廣泛使用的數(shù)據(jù)庫(kù)。備份和保護(hù)數(shù)據(jù)是數(shù)據(jù)庫(kù)維護(hù)的首要任務(wù),SqlServer本身具有比較強(qiáng)大的備份功能,但出現(xiàn)災(zāi)難的原因往往是由于硬盤(pán)的損壞,所以有必要在異地(異機(jī))多保留一份備份數(shù)據(jù),以備不測(cè)。這就要求我們除sqlserver自帶功能外,還要探索其他的方法實(shí)現(xiàn)SqlServer數(shù)據(jù)庫(kù)自動(dòng)的異地備份。
1 備份目標(biāo)
我們具體研究實(shí)現(xiàn)目標(biāo)包括:每天對(duì)數(shù)據(jù)庫(kù)進(jìn)行兩個(gè)不同時(shí)刻的完全備份、保留最近1周的備份數(shù)據(jù)、備份數(shù)據(jù)實(shí)現(xiàn)異地(異機(jī))存放。
每天對(duì)數(shù)據(jù)庫(kù)進(jìn)行兩個(gè)不同時(shí)刻的完全備份;保留最近1周的備份數(shù)據(jù);備份數(shù)據(jù)實(shí)現(xiàn)異地(異機(jī))存放;對(duì)于目標(biāo)的前兩條,我是利用SQL Server 2000本身自帶“數(shù)據(jù)庫(kù)維護(hù)計(jì)劃”來(lái)實(shí)現(xiàn)的;而最后一條我是通過(guò)手工編寫(xiě)腳本來(lái)實(shí)現(xiàn)的。
具體如下:“數(shù)據(jù)庫(kù)維護(hù)計(jì)劃”是SQL Server 2000能夠?qū)崿F(xiàn)自動(dòng)備份調(diào)度,以及自動(dòng)刪除舊的數(shù)據(jù)備份,完全能夠滿(mǎn)足我我們備份要求。
2 實(shí)現(xiàn)步驟
2.1打開(kāi)SQL Server“企業(yè)管理器”窗體
用鼠標(biāo)單擊任務(wù)欄上的“開(kāi)始”按鈕中的“程序(P)”菜單下的“Microsoft SQL Server”子菜單中的“企業(yè)管理器”菜單項(xiàng),即可打開(kāi)SQL Server 2000的“企業(yè)管理器”窗體。
2.2找到“數(shù)據(jù)庫(kù)維護(hù)計(jì)劃”功能
在“企業(yè)管理器”窗體中左側(cè)的樹(shù)型選項(xiàng)卡中,用鼠標(biāo)單擊“+”圖標(biāo)擴(kuò)展開(kāi)“控制臺(tái)根目錄”下的“Microsoft SQL Servers”,可以看到其下有一個(gè)“SQL Server組”;接著繼續(xù)擴(kuò)展開(kāi)“SQL Server組”,此時(shí)可以看到其下出現(xiàn)了服務(wù)器的名稱(chēng);再繼續(xù)擴(kuò)展開(kāi)此服務(wù)器,可以看到其下列出了諸如“數(shù)據(jù)庫(kù)”、“數(shù)據(jù)轉(zhuǎn)換服務(wù)”等項(xiàng)目;最后單擊“管理”項(xiàng)目,可以看到其下存在一個(gè)“數(shù)據(jù)庫(kù)維護(hù)計(jì)劃”(如圖1)。
2.3創(chuàng)建“數(shù)據(jù)庫(kù)維護(hù)計(jì)劃”
鼠標(biāo)右擊“數(shù)據(jù)庫(kù)維護(hù)計(jì)劃”項(xiàng)目,選擇“新建維護(hù)計(jì)劃(P)”功能,將打開(kāi)“數(shù)據(jù)庫(kù)維護(hù)計(jì)劃向?qū)А贝绑w,依照此向?qū)軌騽?chuàng)建一個(gè)新的“數(shù)據(jù)庫(kù)維護(hù)計(jì)劃”。
步驟1:單擊 “下一步(N)”按鈕,打開(kāi)“選擇數(shù)據(jù)庫(kù)”窗體(如圖2)。在此窗體中選定文獻(xiàn)系統(tǒng)數(shù)據(jù)庫(kù)“tsgdb”。
步驟2:單擊圖2中的“下一步(N)”按鈕,打開(kāi)“更新數(shù)據(jù)優(yōu)化信息”窗體(如圖3)。
在此窗體中可以對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)和索引重新進(jìn)行組織,以及能夠設(shè)定在滿(mǎn)足一定條件的情況下,維護(hù)計(jì)劃自動(dòng)刪除數(shù)據(jù)庫(kù)中的未使用的空間,以便提高性能。
本人沒(méi)有使用其中的功能。
步驟3:單擊圖3中的“下一步(N)”按鈕,打開(kāi)“檢查數(shù)據(jù)庫(kù)完整性”窗體,如圖4所示。
在此窗體中可以設(shè)定維護(hù)計(jì)劃在備份數(shù)據(jù)庫(kù)前自動(dòng)檢查數(shù)據(jù)庫(kù)的完整性,以便檢測(cè)由于硬件或軟件錯(cuò)誤而導(dǎo)致數(shù)據(jù)的不一致。選中“檢查數(shù)據(jù)庫(kù)完整性[H]”復(fù)選框,因?yàn)橛锌赡軙?huì)修正一些錯(cuò)誤,使備份的數(shù)據(jù)更有效。
步驟4:在“檢查數(shù)據(jù)庫(kù)完整性”窗體中的“下一步(N)”按鈕,打開(kāi)“指定數(shù)據(jù)庫(kù)備份計(jì)劃”窗體。因?yàn)閳D書(shū)館開(kāi)館時(shí)間為8:00——12:00和14:00——21:00,所以我在“調(diào)度”中設(shè)為每天12:30開(kāi)始備份和21:30開(kāi)始備份,這樣做,即提高了數(shù)據(jù)庫(kù)備份的效率,又不會(huì)影響到文獻(xiàn)系統(tǒng)的正常使用。
對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份,則必須選定“作為維護(hù)計(jì)劃的一部分來(lái)備份數(shù)據(jù)庫(kù)[A]”復(fù)選框,指定存儲(chǔ)備份文件的位置:磁盤(pán)。設(shè)定“調(diào)度”后單擊“下一步(N)”按鈕則顯示“指定備份磁盤(pán)目錄”窗體(如圖6)。
在圖6中,指定存儲(chǔ)備份文件的目錄備份文件擴(kuò)展名,因?yàn)槲乙4孀罱?周的備份,所以設(shè)置備份計(jì)劃自動(dòng)地刪除早于1周的備份文件。設(shè)定后,單擊“下一步(N)”按鈕則顯示“指定事務(wù)日志備份計(jì)劃”窗體。
步驟5:指定“事務(wù)日志備份計(jì)劃”的過(guò)程與步驟4的過(guò)程完全相同,只是在設(shè)定“調(diào)度”上稍有差別(因?yàn)槲业囊笫菙?shù)據(jù)庫(kù)每天備份一次,事務(wù)日志每1小時(shí)備份一次)。
步驟6:對(duì)事務(wù)日志的備份計(jì)劃全部設(shè)定后,單擊“下一步(N)”按鈕則顯示“要生成的報(bào)表”窗體。在此窗體中可以指定用于存放整個(gè)備份計(jì)劃執(zhí)行過(guò)程中的日志的目錄。
步驟7:完成步驟6后,單擊“下一步(N)”按鈕則顯示“維護(hù)計(jì)劃歷史紀(jì)錄”窗體。
在此窗體中可以指定如何存儲(chǔ)此維護(hù)計(jì)劃的歷史紀(jì)錄(是存放在“本地服務(wù)器”上,還是在“遠(yuǎn)程服務(wù)器”上),而且通過(guò)指定表中的行數(shù)可以限定歷史紀(jì)錄的存儲(chǔ)大小。
步驟8:完成步驟7后,單擊“下一步(N)”按鈕則顯示“正在完成數(shù)據(jù)庫(kù)維護(hù)計(jì)劃向?qū)А贝绑w(如圖7)。
在此窗體中自定義一個(gè)“計(jì)劃名”為“tsgdb備份”。
步驟9:完成步驟8后,單擊“完成”按鈕,則顯示“維護(hù)計(jì)劃已創(chuàng)建成功。”的提示框,再單擊 “確定”按鈕即成功地設(shè)定了文獻(xiàn)系統(tǒng)數(shù)據(jù)庫(kù)維護(hù)計(jì)劃。
2.4 啟動(dòng)SQL Server 2000代理以便執(zhí)行“作業(yè)”
完成第三步后,還需啟動(dòng)SQL Server 2000 Agent(代理),以便執(zhí)行“數(shù)據(jù)庫(kù)維護(hù)計(jì)劃”作業(yè)。
與展開(kāi)SQL Server 2000“數(shù)據(jù)庫(kù)維護(hù)計(jì)劃”的步驟一樣,在“管理”項(xiàng)目中,可以發(fā)現(xiàn)存在一個(gè)“SQL Server 代理”。
2.5 檢查結(jié)果
經(jīng)過(guò)上述步驟后,文獻(xiàn)系統(tǒng)數(shù)據(jù)庫(kù)的備份計(jì)劃就建立起來(lái)了。可以通過(guò)“資源管理器”來(lái)檢查備份目錄下是否存在相應(yīng)地備份文件。
通過(guò)以上操作,已經(jīng)實(shí)現(xiàn)了在服務(wù)器上保留最近一周的備份數(shù)據(jù)了,為了防止服務(wù)器本身硬件故障等情況對(duì)備份數(shù)據(jù)造成破壞,我又通過(guò)編寫(xiě)腳本實(shí)現(xiàn)了備份數(shù)據(jù)的異地(機(jī))存放。具體如下:
3 編寫(xiě)腳本
新建文件名為cptsgdb.txt的文本文件,在其中編輯以下內(nèi)容(如圖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
說(shuō)明:
172.16.0.8是數(shù)據(jù)庫(kù)服務(wù)器,DB_bk為服務(wù)器上存放備份數(shù)據(jù)的目錄,一定要先將其共享。
· net use \\\\172.16.0.8\\DB_bkPASSWD_for_tsg /user:tsg
以用戶(hù)tsg訪問(wèn)DB_bk目錄,PASSWD_for_tsg是用戶(hù)tsg的密碼。
· REM start copy 此為注釋行
· cd C:\\WINDOWS\\system32 切換當(dāng)前目錄到system32
· xcopy.exe \\\\172.16.0.8\sg\\DB_back\\*.* g:\\ /e/h/y/d
將服務(wù)器上的備份數(shù)據(jù)拷貝到本地g盤(pán)中。參數(shù)含義:
/e復(fù)制目錄和子目錄,包括空的。
/h也復(fù)制隱藏和系統(tǒng)文件。
/y禁止提示以確認(rèn)改寫(xiě)一個(gè)。
/d只復(fù)制那些源時(shí)間 比目標(biāo)時(shí)間新的文件。
編輯完成后保存文件,將文件后綴改為.bat,這樣就生成了一個(gè)批處理文件,我們使用windows自帶的“任務(wù)計(jì)劃”來(lái)調(diào)度它,實(shí)現(xiàn)數(shù)據(jù)在兩臺(tái)計(jì)算機(jī)之間的自動(dòng)定時(shí)copy。
4 結(jié)論
這樣對(duì)數(shù)據(jù)庫(kù)的異地備份的實(shí)現(xiàn),這樣我們就能有效防止軟硬件損壞、人為操作錯(cuò)誤等對(duì)數(shù)據(jù)庫(kù)造成破壞,來(lái)保障數(shù)據(jù)內(nèi)容。
參考文獻(xiàn):
[1] 薩師煊,王珊.數(shù)據(jù)庫(kù)系統(tǒng)概論[M].北京:高等教育出版社,2004:247-248.
[2] 張家愛(ài).基于日志的數(shù)據(jù)恢復(fù)及其在SQLSERVER中的實(shí)現(xiàn)[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2009(1).
[3] 趙松濤.SQL SERVER2000系統(tǒng)管理與應(yīng)用開(kāi)發(fā)[M].北京:人民郵電出版社,2006:18-20.
[4] 蘇國(guó)磊.利用RMAN實(shí)現(xiàn)Oracle數(shù)據(jù)庫(kù)的備份與恢復(fù)[J].電腦知識(shí)與技術(shù),2007(2).
[5] 賈代平,吳麗娟.Oracle DBA核心技術(shù)解析[M].北京:電子工業(yè)出版社,2006:136-137.