寫在前面

最近一直在整理數(shù)據(jù)庫最佳實踐的東西,我也會將各種文章建議,同步到博客園,希望能夠幫助更多的人了解數(shù)據(jù)庫,輕松玩轉(zhuǎn)數(shù)據(jù)庫,同時也減輕運維人員的工作壓力,畢竟熟能生巧,熟練既是效率。

數(shù)據(jù)庫備份老生常談的話題,一搜索數(shù)據(jù)庫備份可能上千上萬篇,那么為什么還要寫一篇?因為重要!而往往卻不能引起運維人員的重視。上周還幫助一個客戶恢復了數(shù)據(jù),原因是斷電,啟動服務器后發(fā)現(xiàn)磁盤損壞,重要的系統(tǒng)頁大面積損壞。使用常規(guī)數(shù)據(jù)庫恢復手段全無用,使用第三方恢復工具也只能恢復部分數(shù)據(jù),根本無法滿足業(yè)務的正常運轉(zhuǎn),數(shù)據(jù)是企業(yè)的命根子,丟了,找不回來怎么辦? 難道要經(jīng)歷一次這樣的洗禮才能體會到備份的重要性么?

數(shù)據(jù)庫備份是個很重的話題,太多東西無法寫在同一篇文章中,另外這是一篇大量文字的掃盲文章,不足之處希望大家多多包涵。

一些名詞

完整數(shù)據(jù)庫備份:完整數(shù)據(jù)庫備份就是復制數(shù)據(jù)庫里的所有信息,通過單個完整備份,就能將數(shù)據(jù)庫恢復到某個時間點的狀態(tài)。

注:由于數(shù)據(jù)庫備份是一個在線的操作,一個大的完整數(shù)據(jù)庫備份可能需要一個小時甚至更長的時間,數(shù)據(jù)庫在這段時間里還會發(fā)生變化,所以完整數(shù)據(jù)庫備份還要對部分事務日志進行備份,以便能夠恢復數(shù)據(jù)庫到一個事務一致的狀態(tài)。

文件備份:文件備份指備份一個或多個文件或文件組中的所有數(shù)據(jù)。

注:在完整恢復模式下,一整套完整文件備份和涵蓋所有文件備份的日志備份合起來等同于完整數(shù)據(jù)庫備份。

使用文件備份能夠只還原損壞的文件,而不用還原數(shù)據(jù)庫的其余部分,從而可加快恢復速度。例如,如果數(shù)據(jù)庫由位于不同磁盤上的若干個文件組成,在其中一個磁盤發(fā)生故障時,只需還原這個故障磁盤上的文件的備份,其他磁盤上的文件無須還原,這樣會縮短還原時間。
部分備份:部分備份與完整數(shù)據(jù)庫備份類似,但是部分備份默認只包含數(shù)據(jù)庫可讀寫部分,數(shù)據(jù)庫的只讀文件將不會被備份。

注:因為只讀部分是不會發(fā)生變動的,總是去備份它有點浪費時間與精力所以部分備份在希望不備份只讀文件組時非常有用。部分備份可以說是數(shù)據(jù)庫備份和文件備份之間的一個中間類型。如果一個數(shù)據(jù)庫里沒有只讀文件,那么部分備份和數(shù)據(jù)庫備份就沒什么差別。

差異備份:差異備份要求數(shù)據(jù)庫之前做過一次完整備份。差異備份僅捕獲自該次完整備份后發(fā)生更改的數(shù)據(jù),這個完整備份被稱為差異備份的“基準”。差異備份僅包括建立差異基準后更改的數(shù)據(jù)。差異備份比差異基準更小且更快,便于執(zhí)行頻繁備份,從而降低了數(shù)據(jù)丟失的風險。

日志備份:數(shù)據(jù)備份集中精力于數(shù)據(jù)文件的備份。對于日志文件,相應地有事務日志備份。每個日志備份包括創(chuàng)建備份時處于活動狀態(tài)的部分事務日志,以及先前日志備份中未備份的所有日志記錄。不間斷的日志備份序列包含數(shù)據(jù)庫的完整(即連續(xù)不斷的)日志鏈。在完整恢復模式下(或者在大容量日志恢復模式下的某些時候),連續(xù)不斷的日志鏈可以將數(shù)據(jù)庫還原到任意時間點。

尾日志備份:“結(jié)尾日志備份”捕獲尚未備份的任何日志記錄(“結(jié)尾日志”),以防丟失所做的工作并確保日志鏈完好無損。 在將 SQL Server 數(shù)據(jù)庫恢復到其最近一個時間點之前,必須先備份數(shù)據(jù)庫的事務日志。 結(jié)尾日志備份將是數(shù)據(jù)庫還原計劃中相關(guān)的最后一個備份。

注意:并非所有還原方案都要求執(zhí)行結(jié)尾日志備份。 如果恢復點包含在較早的日志備份中,則無需結(jié)尾日志備份。 此外,如果您準備移動或替換(覆蓋)數(shù)據(jù)庫,并且在最新備份后不需要將該數(shù)據(jù)庫還原到某一時間點,則不需要結(jié)尾日志備份。

僅復制備份(Copy-Only):獨立于常規(guī)SQL Server備份序列的SQL Server備份。通常,進行備份會更改數(shù)據(jù)庫并影響其后備份的還原序列。但是,有時在不影響數(shù)據(jù)庫全部備份和還原過程的情況下,為特殊目的而進行備份還是有用的。為實現(xiàn)此目的,SQL Server引人了下列兩種僅復制備份
(1)僅復制完整備份
僅復制完整備份也備份整個數(shù)據(jù)庫的內(nèi)容。它和正常的完整備份的區(qū)別是,做完了以后差異備份的基準不會變,因此不影響差異備份序列。
(2)僅復制日志備份
僅復制日志備份只備份當前日志文件里現(xiàn)有的內(nèi)容,但是不會清空日志文件里備份下的日志。因此,下次再做正常日志備