早上看了一個貼子,是一個哥們推廣自己一個智能的數據庫備份系統,他總結了數據庫備份過程中所有可能出錯的情況,可以借鑒。如果你做DBA時間不長,對數據庫的備份有些擔心,希望能找到一種讓你放心的備份方案,那麼本文絕對適合你。
關於數據庫的備份恢復原理,大家多少都比較熟悉了。但是,你目前做的數據庫備份有多可靠?你可以安心睡覺了嗎?如果答案是肯定的,那就不用多花時間看下文了,如果覺得還不夠安心,總擔心數據庫哪一天壞了修不好,那麼請接著看:
1、我有RAID,還需要做數據庫備份嗎?需要。有了RAID,萬一部份磁盤損壞,可以修復數據庫,有的情況下數據庫甚至可以繼續使用。但是,如果哪一天,你的同事不小心刪除了一條重要的記錄,怎麼辦?RAID是無能為力的。你需要合適的備份策略,把那條被誤刪的數據恢復出來。所以有了RAID,仍需要做備份集群,磁盤鏡像同理。
2、如果你只做全備份,那麼受限於全備份的大小和備份時間,不可能常做。而且只有全備份,不能將數據庫恢復至某個時間點。所以,我們需要全備份+日志備份。比如每天一個全備份,每隔1小時或若干分鐘一個日志備份。說到差異備份,因為微軟的差異備份記錄的是上一次全備份以來發生的變化,所以,如果數據庫的改動很頻繁的話,沒過多久,差異備份就會和全備份的大小接近,因此這種情況下就不合適了。因此,全備份+日志備份的方案適合絕大多數的用戶。
3、如果你僅在數據庫本地做備份,萬一磁盤損壞,或者整個服務器硬件損壞,備份也就沒了,就沒法恢復數據庫。因此,你需要把備份文件傳送至另一個物理硬件上。大多數用戶不用磁帶機,因此不考慮。一般,我們需要另一台廉價的服務器或者PC來存放數據庫的備份,來防止硬件損壞造成的備份丟失。
4、你可以在數據庫服務器本地做完備份,然後使用某些方式將備份文件傳送至備機。你是在備份完成後就馬上穿送的嗎?其實可以考慮將傳送備份的腳本用T-SQL語句來寫。
5、備份文件傳送至備機後,就可以高枕無憂了嗎?不。作為DBA的你還需要檢查備機上的備份文件是否能將數據庫恢復至最新,如果采用日志備份,會不會因為丟失某一個日志備份文件而導致數據庫不能恢復至最新?如何檢查日志備份文件之間存在斷檔?
6、為了將數據庫盡可能的恢復到最新,你可能會每隔10分鐘(甚至1分鐘)執行一次日志備份,那麼萬一數據庫壞了,在恢復的時候,手動恢復成百上千個日志文件,是不是不太現實?
7、如果你所在公司有很多的數據庫服務器(就像我所在的公司),而且磁盤空間有限,那麼你不得不經常登錄服務器來刪除舊的備份文件,如果哪天忘了,或者五一十一長假,磁盤空間用完了,就麻煩了