數(shù)據(jù)庫(kù)的備份恢復(fù)原理
文章出處:http://m.overnightmodel.com 作者:開(kāi)發(fā)部 人氣: 發(fā)表時(shí)間:2013年11月11日
關(guān)于數(shù)據(jù)庫(kù)的備份恢復(fù)原理,大家多少都比較熟悉了。但是,你目前做的數(shù)據(jù)庫(kù)備份有多可靠?你可以安心睡覺(jué)了嗎?如果答案是肯定的,那就不用多花時(shí)間看下文了,如果覺(jué)得還不夠安心,總擔(dān)心數(shù)據(jù)庫(kù)哪一天壞了修不好,那么請(qǐng)接著看:
1、我有RAID,還需要做數(shù)據(jù)庫(kù)備份嗎?需要。有了RAID,萬(wàn)一部份磁盤(pán)損壞,可以修復(fù)數(shù)據(jù)庫(kù),有的情況下數(shù)據(jù)庫(kù)甚至可以繼續(xù)使用。但是,如果哪一天,你的同事不小心刪除了一條重要的記錄,怎么辦?RAID是無(wú)能為力的。你需要合適的備份策略,把那條被誤刪的數(shù)據(jù)恢復(fù)出來(lái)。所以有了RAID,仍需要做備份集群,磁盤(pán)鏡像同理。
2、如果你只做全備份,那么受限于全備份的大小和備份時(shí)間,不可能常做。而且只有全備份,不能將數(shù)據(jù)庫(kù)恢復(fù)至某個(gè)時(shí)間點(diǎn)。所以,我們需要全備份+日志備份。比如每天一個(gè)全備份,每隔1小時(shí)或若干分鐘一個(gè)日志備份。說(shuō)到差異備份,因?yàn)槲④浀牟町悅浞萦涗浀氖巧弦淮稳珎浞菀詠?lái)發(fā)生的變化,所以,如果數(shù)據(jù)庫(kù)的改動(dòng)很頻繁的話,沒(méi)過(guò)多久,差異備份就會(huì)和全備份的大小接近,因此這種情況下就不合適了。因此,全備份+日志備份的方案適合絕大多數(shù)的用戶。
3、如果你僅在數(shù)據(jù)庫(kù)本地做備份,萬(wàn)一磁盤(pán)損壞,或者整個(gè)服務(wù)器硬件損壞,備份也就沒(méi)了,就沒(méi)法恢復(fù)數(shù)據(jù)庫(kù)。因此,你需要把備份文件傳送至另一個(gè)物理硬件上。大多數(shù)用戶不用磁帶機(jī),因此不考慮。一般,我們需要另一臺(tái)廉價(jià)的服務(wù)器或者PC來(lái)存放數(shù)據(jù)庫(kù)的備份,來(lái)防止硬件損壞造成的備份丟失。
4、你可以在數(shù)據(jù)庫(kù)服務(wù)器本地做完備份,然后使用某些方式將備份文件傳送至備機(jī)。你是在備份完成后就馬上穿送的嗎?其實(shí)可以考慮將傳送備份的腳本用T-SQL語(yǔ)句來(lái)寫(xiě)。
5、備份文件傳送至備機(jī)后,就可以高枕無(wú)憂了嗎?不。作為DBA的你還需要檢查備機(jī)上的備份文件是否能將數(shù)據(jù)庫(kù)恢復(fù)至最新,如果采用日志備份,會(huì)不會(huì)因?yàn)閬G失某一個(gè)日志備份文件而導(dǎo)致數(shù)據(jù)庫(kù)不能恢復(fù)至最新?如何檢查日志備份文件之間存在斷檔?
6、為了將數(shù)據(jù)庫(kù)盡可能的恢復(fù)到最新,你可能會(huì)每隔10分鐘(甚至1分鐘)執(zhí)行一次日志備份,那么萬(wàn)一數(shù)據(jù)庫(kù)壞了,在恢復(fù)的時(shí)候,手動(dòng)恢復(fù)成百上千個(gè)日志文件,是不是不太現(xiàn)實(shí)?
7、如果你所在公司有很多的數(shù)據(jù)庫(kù)服務(wù)器(就像我所在的公司),而且磁盤(pán)空間有限,那么你不得不經(jīng)常登錄服務(wù)器來(lái)刪除舊的備份文件,如果哪天忘了,或者五一十一長(zhǎng)假,磁盤(pán)空間用完了,就麻煩了。
8、數(shù)據(jù)庫(kù)在備份的時(shí)候,并不會(huì)檢查數(shù)據(jù)頁(yè)面的完整性,如果數(shù)據(jù)頁(yè)壞了,備份作業(yè)仍會(huì)執(zhí)行,而且不會(huì)報(bào)錯(cuò),等到你發(fā)現(xiàn)數(shù)據(jù)頁(yè)有錯(cuò)誤的時(shí)候,你也很可能已經(jīng)因?yàn)榇疟P(pán)空間不足,而刪除了早期的備份,而此時(shí)剩下的那些備份可能都是包含損壞的數(shù)據(jù)頁(yè),如果損壞的數(shù)據(jù)頁(yè)是某個(gè)表的表頭的話,那這個(gè)表你就再也沒(méi)辦法恢復(fù)了。
9、所以你需要定期執(zhí)行DBCC檢查,來(lái)盡早發(fā)現(xiàn)數(shù)據(jù)庫(kù)頁(yè)面的完整性。在未作完DBCC檢查之前,你不能刪除舊的備份,以防止新的備份存在問(wèn)題。所以,刪除備份文件的工作變的有些麻煩。
10、你可能知道SQL Server提供了數(shù)據(jù)庫(kù)維護(hù)計(jì)劃。沒(méi)錯(cuò),使用它可以定期做備份,執(zhí)行DBCC檢查,但這一切僅限于本機(jī)操作。為了使數(shù)據(jù)庫(kù)可靠,你還是需要自己把本地備份傳送至備機(jī)。
綜上,你的備份做好了嗎?檢查了嗎?刪除舊的備份是不是花去你很多時(shí)間,特別是在網(wǎng)絡(luò)條件不好的時(shí)候?如果數(shù)據(jù)庫(kù)備份文件的傳送在某一時(shí)刻停止了,你多久才能發(fā)現(xiàn)?公司值晚班的同事有權(quán)限檢查數(shù)據(jù)庫(kù)的備份情況嗎?