[摘要] 備份與恢復(fù)是DBA的最重要任務(wù)之一。本文介紹了SQL Server中數(shù)據(jù)庫備份恢復(fù)方法,同時,就利用事務(wù)日志實現(xiàn)時點還原做了詳細討論,使數(shù)據(jù)的管理更加靈活。并給出了時點還原的實例。
[關(guān)鍵詞] SQL Server數(shù)據(jù)庫事務(wù)日志數(shù)據(jù)備份數(shù)據(jù)還原時點還原
一、備份與恢復(fù)概述
如今硬件既可靠又有冗余,好像就不需要備份了,但是硬件只能防止這個硬件出故障。導(dǎo)致數(shù)據(jù)丟失的還有其他原因,如由于用戶或管理員錯誤(即使數(shù)據(jù)庫專家也難免會損毀數(shù)據(jù)庫)、數(shù)據(jù)被破壞、惡意破壞數(shù)據(jù)或火災(zāi)之類的災(zāi)難是難以避免的。因此作為DBA最重要的任務(wù)之一就是要制定良好的備份、還原計劃。
1.備份類型
備份是DBA定期地將整個數(shù)據(jù)庫復(fù)制到磁帶或另一個磁盤上保存起來的過程。常用的數(shù)據(jù)備份類型有:完全數(shù)據(jù)庫備份、差異數(shù)據(jù)庫備份、事務(wù)日志備份、文件或文件組備份。一個通用的備份策略是:以較長的時間間隔執(zhí)行完全備份,以適中的時間間隔進行差異備份,并以較短的時間間隔進行事務(wù)日志備份。當數(shù)據(jù)遭到破壞后就可以利用備份來恢復(fù)或還原數(shù)據(jù)庫。
2.恢復(fù)模型
SQL Server2000中增加了恢復(fù)模型。三種恢復(fù)模型分別是:full(完全)、bulk_logged(批量登記)、simple(簡單)。
Full恢復(fù):這種恢復(fù)方式提供了最大的靈活性,用完全數(shù)據(jù)庫庫備份和事務(wù)日志備份組合實現(xiàn)。也可以進行差異備份和文件級備份。該恢復(fù)方式可以將數(shù)據(jù)庫恢復(fù)到特定時刻。
Bulk_logged恢復(fù):該模式也可以完全恢復(fù)數(shù)據(jù)庫,但如果事務(wù)日志文件包含批量操作,則不能夠恢復(fù)到特定時刻,而是需要恢復(fù)整個日志。
Simple恢復(fù):該模式是最基本的備份與恢復(fù)模型。只限于完全數(shù)據(jù)庫與差異備份數(shù)據(jù)庫的恢復(fù)。
數(shù)據(jù)庫是一個裝載數(shù)據(jù)庫的備份,然后應(yīng)用事務(wù)日志重建的過程。一個通用的恢復(fù)策略是:首先恢復(fù)完全備份的數(shù)據(jù),然后恢復(fù)差異備份數(shù)據(jù),最后根據(jù)事務(wù)日志備份進行恢復(fù)。
綜上所述,欲實現(xiàn)時點還原,即將數(shù)據(jù)恢復(fù)到某個特定的時刻,就必須設(shè)置恢復(fù)模式為full模式。
二、時點還原的實現(xiàn)
在許多應(yīng)用軟件(尤其大多數(shù)微軟的應(yīng)用軟件)中,如果有誤操作,系統(tǒng)給用戶提供了撤消操作,這樣給用戶的操作帶來很大方便,在DBMS中沒有提供撤消操作,比如用戶誤刪了表中數(shù)據(jù)或某個數(shù)據(jù)庫對象,是沒有撤消操作的;或者想查看過去任一時刻某公司數(shù)據(jù)情況等,只通過備份恢復(fù)功能是作不到的。但是我們可以利用事務(wù)日志的特性彌補這一缺陷。以下以xsda數(shù)據(jù)庫為例,說明時點還原的實現(xiàn)方法:
1.首先要進行一次完全備份(這里可以使用備份設(shè)備也可以使用備份文件進行備份)。
2.緊接著進行一次事務(wù)日志的備份。
3.以上兩步做好以后,就可以不定期的備份事務(wù)日志。
一定要保證事務(wù)日志的一致性,當需要進行時點還原時,首先恢復(fù)完全備份的數(shù)據(jù)庫,然后再逐次恢復(fù)日志,如下圖所示(在企業(yè)管理器中實現(xiàn)):
選中時點還原選項后,右邊邊文本框即被激活,輸入時點后,確定,數(shù)據(jù)庫即被恢復(fù)到指定時刻。
也可以用Transact-SQL實現(xiàn),具體操作如下:
Restore databasexsglfromxsdatabackup with file=1 ,norecovery
//xsdatabackup為完全備份的數(shù)據(jù)庫
Go
Restore log xsgl from with file=1 ,norecovery
// xsrzbackup1為第一次進行的日志備份
Go
Restore log xsgl from xsrzbackup2 with file=3 recovery,stop at=’December 13, 2006 08:00 AM’
//xsrzbackup2為第二次進行的日志備份
注意:在還原過程中一定要注意事務(wù)日志備份的連續(xù)性,不能有中斷,否則時點還原就會失敗。
三、小結(jié)
數(shù)據(jù)庫管理的最重要任務(wù)之一就是備份與還原,盡管SQL server提供了將備份與恢復(fù)自動化的工具與模型,但DBA仍然需要確定適當?shù)姆椒?,建立健壯的恢?fù)、還原計劃,一方面可以防止數(shù)據(jù)丟失,另一方面為數(shù)據(jù)處理提供靈活、方便的使用機制。