王東所在的社?;鹬行氖褂玫氖悄硣H品牌的集群服務(wù)器,運行Microsoft SQL 2005,連接到大約有3TB可用空間的存儲陣列上,構(gòu)成雙機(jī)熱備方案。該社保基金中心的數(shù)據(jù)庫包括大約1.5TB的數(shù)據(jù)和圖像文件,而且以每年300-500MB的數(shù)據(jù)量遞增。
社保基金中心的數(shù)據(jù)庫主要保存的由紙質(zhì)文件掃描得來的數(shù)字圖像文件。因為圖像文件對于磁盤空間的要求很高,所以數(shù)據(jù)庫中圖像文件的部分包括一個分割成文件組的分區(qū)表,以年為單位在文件組中作為一個單獨的分區(qū)來保存相應(yīng)的文件。
當(dāng)年的數(shù)據(jù)是一個讀/寫文件組,而一旦關(guān)閉,就標(biāo)記成只讀。然后整個數(shù)據(jù)庫使用文件組(部分的)備份,接著備份事務(wù)日志。這些數(shù)據(jù)庫備份文件再備份到磁帶上,并妥善保管在各處。分區(qū)表是SQL 2005的新功能,可以讓備份大型數(shù)據(jù)庫的操作變得更加簡便。因為在只讀文件組里的數(shù)據(jù)不會改變,就不需要像讀/寫文件組里的信息那樣經(jīng)常性地做備份了。
然而,這種靈活性增加了文件管理的復(fù)雜度。當(dāng)新的讀/寫文件組加入數(shù)據(jù)庫中時,這個文件組必須在同一時間作為另一個文件組進(jìn)行備份,同時還要備份事務(wù)日志,這樣才能完全恢復(fù)數(shù)據(jù)庫并上線使用。
問題的根源
去年六月,一個磁盤陣列處理器報錯了,王東給硬件的廠商打了一個電話,得到的建議是運行后臺校驗來修復(fù)RAID數(shù)據(jù),這個建議非常合理,但是實際操作中卻并沒有奏效。
要修復(fù)RAID數(shù)據(jù),首先必須先解除LUN綁定,然后重新綁定兩個損壞的LUNs。因此,王東必須把損壞的LUNs上存儲的數(shù)據(jù)庫文件組移動到另外一個準(zhǔn)備好的LUN上。這個步驟是修復(fù)RAID數(shù)據(jù)必不可少的步驟,然而無法挽回的損失也正是發(fā)生在這個步驟。
王東通過一臺遠(yuǎn)程計算機(jī)上進(jìn)行解除和重新綁定的操作,與此同時還有一個廠商工程師在幫助做相同的操作,在實際操作中,由于以前備份策略的設(shè)置的文檔已經(jīng)完全丟失,無論是王東還是廠商工程師都很難把LUN編號和服務(wù)器驅(qū)動器編號對應(yīng)起來,而且有些文件被錯誤的挪到了要重新綁定的LUNs上。兩個人最終勉強(qiáng)完成了重新綁定的工作,他們卻發(fā)現(xiàn)有一個重新綁定的LUN里面錯誤的包含了數(shù)據(jù)文件和SQL備份文件。
王東試圖從磁帶上恢復(fù)數(shù)據(jù)庫的備份文件,有一個重要的文件,對于社保基金中心的數(shù)據(jù)庫來說最主要的文件組(MDF),在正常的備份過程中被不經(jīng)意地忽視了,這個文件就沒有備份到磁帶上。而如果沒有這個文件,數(shù)據(jù)庫就不能恢復(fù)并正常工作。這個時候王東才意識到,要想從備份磁帶中把數(shù)據(jù)恢復(fù)完成,已經(jīng)徹底不可能了。而他們平時所依賴的數(shù)據(jù)備份系統(tǒng),在真正的問題來臨的時候,并不能保護(hù)數(shù)據(jù)安全。
王東在周末加班,使用以前手工備份的MDF文件把所有只讀的歷史文件都恢復(fù)了,也就是2000年至2005年的數(shù)據(jù),但是2006年的所有數(shù)據(jù)卻永遠(yuǎn)丟失了,因為即使有2006年當(dāng)前的備份和事務(wù)日志的備份,相對應(yīng)的MDF文件的備份也是需要的。為了盡快恢復(fù)業(yè)務(wù),系統(tǒng)先調(diào)用了一個沒有數(shù)據(jù)的2006年的文件組。2006年夏天,王東和他的同事們用了三個半月的時間把紙質(zhì)文檔重新進(jìn)行了掃描。
全新的備份架構(gòu)
這次意外的災(zāi)難給社保中心帶來不小的損失,社保中心也因此開始重視數(shù)據(jù)保護(hù)方面的投入和評估,并重新審視了以往的備份架構(gòu)。
以前,王東他們是文件組和日志每天都做備份,完全備份(包括所有的文件組)則是一個季度做一次。
現(xiàn)在,王東和他的同事對于如何從文件組備份成功恢復(fù)數(shù)據(jù)庫有何要求已經(jīng)相當(dāng)清楚了,其中有一些是MS SQL 2005的新功能。現(xiàn)在,王東增加了額外的磁盤到陣列中,保證有7TB的可用空間,恢復(fù)數(shù)據(jù)庫和執(zhí)行常規(guī)檢查的操作變得更加容易了,同時備份方案也變得更加完善和成熟。
現(xiàn)在該社?;鹬行陌才帕艘唤MIT人員每天都會檢查和驗證備份日志,每月都會檢查所有的數(shù)據(jù)庫性能、備份程序和腳本。循環(huán)備份的文件也會得到檢查,而且每一個預(yù)定的備份現(xiàn)在要三個人檢查才算完成。該社?;鹬行倪€執(zhí)行端到端的備份,并每季度保存一次,保證整個數(shù)據(jù)庫可以通過磁帶上保存的每季度的完全備份得到恢復(fù)。
該社?;鹬行牡氖鹿蕩Ыo我們的經(jīng)驗就是一定要保證備份/恢復(fù)的過程是有效的。沒有實時記錄一個重要的地址文件是該社?;鹬行膫浞莼謴?fù)失敗的關(guān)鍵,這樣的人為錯誤而造成的數(shù)據(jù)損失比我們想象的更為普遍,雖然一般并沒有這么大的損失量。
在意外刪除之后,人們使用備份、快照或其他方式來恢復(fù)數(shù)據(jù)的過程,就叫做數(shù)據(jù)恢復(fù)。然后我們通常就會發(fā)現(xiàn)備份、快照或檔案文件不起作用的情況,這就是向Ontrack這類恢復(fù)服務(wù)提供商尋求幫助的時候了,看看他們能不能幫你從服務(wù)器或者存儲陣列中恢復(fù)你想要的數(shù)據(jù)。
此外,整個故事還包括一個隱藏的信息:如果只依賴于RAID鏡像,本地或遠(yuǎn)程復(fù)制/鏡像,如果在一個地點有什么文件被刪除了,另一個地方的也同樣會被刪除。所以如果你只依賴于復(fù)制和鏡像,那么至少要使用常規(guī)快照作為補(bǔ)充,另外,盡快把這些快照備份到別的介質(zhì)上去。