寫在前面
最近一直在整理數(shù)據(jù)庫(kù)最佳實(shí)踐的東西,我也會(huì)將各種文章建議,同步到博客園,希望能夠幫助更多的人了解數(shù)據(jù)庫(kù),輕松玩轉(zhuǎn)數(shù)據(jù)庫(kù),同時(shí)也減輕運(yùn)維人員的工作壓力,畢竟熟能生巧,熟練既是效率。
數(shù)據(jù)庫(kù)備份老生常談的話題,一搜索數(shù)據(jù)庫(kù)備份可能上千上萬(wàn)篇,那么為什么還要寫一篇?因?yàn)橹匾?!而往往卻不能引起運(yùn)維人員的重視。上周還幫助一個(gè)客戶恢復(fù)了數(shù)據(jù),原因是斷電,啟動(dòng)服務(wù)器后發(fā)現(xiàn)磁盤損壞,重要的系統(tǒng)頁(yè)大面積損壞。使用常規(guī)數(shù)據(jù)庫(kù)恢復(fù)手段全無(wú)用,使用第三方恢復(fù)工具也只能恢復(fù)部分?jǐn)?shù)據(jù),根本無(wú)法滿足業(yè)務(wù)的正常運(yùn)轉(zhuǎn),數(shù)據(jù)是企業(yè)的命根子,丟了,找不回來(lái)怎么辦? 難道要經(jīng)歷一次這樣的洗禮才能體會(huì)到備份的重要性么?
數(shù)據(jù)庫(kù)備份是個(gè)很重的話題,太多東西無(wú)法寫在同一篇文章中,另外這是一篇大量文字的掃盲文章,不足之處希望大家多多包涵。
一些名詞
完整數(shù)據(jù)庫(kù)備份:完整數(shù)據(jù)庫(kù)備份就是復(fù)制數(shù)據(jù)庫(kù)里的所有信息,通過(guò)單個(gè)完整備份,就能將數(shù)據(jù)庫(kù)恢復(fù)到某個(gè)時(shí)間點(diǎn)的狀態(tài)。
注:由于數(shù)據(jù)庫(kù)備份是一個(gè)在線的操作,一個(gè)大的完整數(shù)據(jù)庫(kù)備份可能需要一個(gè)小時(shí)甚至更長(zhǎng)的時(shí)間,數(shù)據(jù)庫(kù)在這段時(shí)間里還會(huì)發(fā)生變化,所以完整數(shù)據(jù)庫(kù)備份還要對(duì)部分事務(wù)日志進(jìn)行備份,以便能夠恢復(fù)數(shù)據(jù)庫(kù)到一個(gè)事務(wù)一致的狀態(tài)。
文件備份:文件備份指?jìng)浞菀粋€(gè)或多個(gè)文件或文件組中的所有數(shù)據(jù)。
注:在完整恢復(fù)模式下,一整套完整文件備份和涵蓋所有文件備份的日志備份合起來(lái)等同于完整數(shù)據(jù)庫(kù)備份。
使用文件備份能夠只還原損壞的文件,而不用還原數(shù)據(jù)庫(kù)的其余部分,從而可加快恢復(fù)速度。例如,如果數(shù)據(jù)庫(kù)由位于不同磁盤上的若干個(gè)文件組成,在其中一個(gè)磁盤發(fā)生故障時(shí),只需還原這個(gè)故障磁盤上的文件的備份,其他磁盤上的文件無(wú)須還原,這樣會(huì)縮短還原時(shí)間。
部分備份:部分備份與完整數(shù)據(jù)庫(kù)備份類似,但是部分備份默認(rèn)只包含數(shù)據(jù)庫(kù)可讀寫部分,數(shù)據(jù)庫(kù)的只讀文件將不會(huì)被備份。
注:因?yàn)橹蛔x部分是不會(huì)發(fā)生變動(dòng)的,總是去備份它有點(diǎn)浪費(fèi)時(shí)間與精力所以部分備份在希望不備份只讀文件組時(shí)非常有用。部分備份可以說(shuō)是數(shù)據(jù)庫(kù)備份和文件備份之間的一個(gè)中間類型。如果一個(gè)數(shù)據(jù)庫(kù)里沒(méi)有只讀文件,那么部分備份和數(shù)據(jù)庫(kù)備份就沒(méi)什么差別。
差異備份:差異備份要求數(shù)據(jù)庫(kù)之前做過(guò)一次完整備份。差異備份僅捕獲自該次完整備份后發(fā)生更改的數(shù)據(jù),這個(gè)完整備份被稱為差異備份的“基準(zhǔn)”。差異備份僅包括建立差異基準(zhǔn)后更改的數(shù)據(jù)。差異備份比差異基準(zhǔn)更小且更快,便于執(zhí)行頻繁備份,從而降低了數(shù)據(jù)丟失的風(fēng)險(xiǎn)。
日志備份:數(shù)據(jù)備份集中精力于數(shù)據(jù)文件的備份。對(duì)于日志文件,相應(yīng)地有事務(wù)日志備份。每個(gè)日志備份包括創(chuàng)建備份時(shí)處于活動(dòng)狀態(tài)的部分事務(wù)日志,以及先前日志備份中未備份的所有日志記錄。不間斷的日志備份序列包含數(shù)據(jù)庫(kù)的完整(即連續(xù)不斷的)日志鏈。在完整恢復(fù)模式下(或者在大容量日志恢復(fù)模式下的某些時(shí)候),連續(xù)不斷的日志鏈可以將數(shù)據(jù)庫(kù)還原到任意時(shí)間點(diǎn)。
尾日志備份:“結(jié)尾日志備份”捕獲尚未備份的任何日志記錄(“結(jié)尾日志”),以防丟失所做的工作并確保日志鏈完好無(wú)損。 在將 SQL Server 數(shù)據(jù)庫(kù)恢復(fù)到其最近一個(gè)時(shí)間點(diǎn)之前,必須先備份數(shù)據(jù)庫(kù)的事務(wù)日志。 結(jié)尾日志備份將是數(shù)據(jù)庫(kù)還原計(jì)劃中相關(guān)的最后一個(gè)備份。
注意:并非所有還原方案都要求執(zhí)行結(jié)尾日志備份。 如果恢復(fù)點(diǎn)包含在較早的日志備份中,則無(wú)需結(jié)尾日志備份。 此外,如果您準(zhǔn)備移動(dòng)或替換(覆蓋)數(shù)據(jù)庫(kù),并且在最新備份后不需要將該數(shù)據(jù)庫(kù)還原到某一時(shí)間點(diǎn),則不需要結(jié)尾日志備份。
僅復(fù)制備份(Copy-Only):獨(dú)立于常規(guī)SQL Server備份序列的SQL Server備份。通常,進(jìn)行備份會(huì)更改數(shù)據(jù)庫(kù)并影響其后備份的還原序列。但是,有時(shí)在不影響數(shù)據(jù)庫(kù)全部備份和還原過(guò)程的情況下,為特殊目的而進(jìn)行備份還是有用的。為實(shí)現(xiàn)此目的,SQL Server引人了下列兩種僅復(fù)制備份
(1)僅復(fù)制完整備份
僅復(fù)制完整備份也備份整個(gè)數(shù)據(jù)庫(kù)的內(nèi)容。它和正常的完整備份的區(qū)別是,做完了以后差異備份的基準(zhǔn)不會(huì)變,因此不影響差異備份序列。
(2)僅復(fù)制日志備份
僅復(fù)制日志備份只備份當(dāng)前日志文件里現(xiàn)有的內(nèi)容,但是不會(huì)清空日志文件里備份下的日志。因此,下次再做正常日志備