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










