奧推網

選單
文化

儲存崩潰MySQL資料庫恢復案例

RAID5磁碟陣列,由於未知的原因導致儲存忽然崩潰無法啟動,RAID5陣列中的虛擬機器全部丟失,其中3臺虛擬機器為重要資料,需要主要針對該3臺虛擬機器進行資料恢復。

經客戶描述故障過程為:第一塊硬碟掉線後系統啟動熱備盤進行替換,第二塊硬碟掉線時RAID5處於降級狀態,第三塊硬碟掉線導致RAID陣列崩潰。下面看看北亞工程師是如何進行操作的吧!

一、

分析儲存底層次結構

工程師透過與客戶的溝通及對RAID陣列的分析得出故障儲存的底層結構為若干物理磁碟組成一個儲存池,劃分了多個LUN,需要進行資料恢復的為LUN1,其中包含重點恢復的3臺虛擬機器。

在對陣列進行分析重組時發現使用者原儲存中的RAID5陣列共缺失2塊硬碟,熱備盤已經啟用。這種情況下通常無法透過校驗直接獲取丟失盤的資料,所以只能使用磁碟同等大小的全0映象進行重組。

二、

透過重組的RAID陣列提取LUN

透過對儲存結構的進一步分析我們可以獲取到儲存劃分的MAP塊,進而對各個LUN的資料塊指標進行解析,透過編寫資料提取程式、提取LUN碎片。提取完成後進行碎片拼接,組成完整LUN。

三、提取虛擬機器內檔案。

工程師根據目前來看,此故障情況匯出虛擬機器後啟動,因作業系統被破壞虛擬機器應該會無法啟動。匯出虛擬機器後嘗試啟動,同預想相同,作業系統被破壞虛擬機器無法啟動。由於虛擬機器無法啟動,只能對虛擬機器內的檔案進行提取,但多數檔案破壞嚴重,只有少數檔案可用,只好繼續制定其他資料恢復方案。

四、透過分析資料庫頁提取資料

本次資料恢復的虛擬機器內有mysql資料庫,可以利用資料庫底層儲存的特殊性進行資料頁掃描,提取資料。(這一步有個小插曲,虛擬機器啟用快照,父盤和快照檔案都被損壞的情況下常規合併操作無法完成,使用本公司自主研發VMFS快照合併程式進行快照合併。)

五、

獲取mysql資料頁並分析

根據mysql資料頁特徵進行資料頁掃描並匯出(innodb引擎可以使用此方案,myisam因為沒有“資料頁”概念所以不可用),分析系統表獲取各使用者表資訊,根據各個表的id進行資料頁分割。

六、

提取表結構、提取記錄

因為資料庫使用時間已久,表結構也曾多次變更,加上系統表在儲存損壞後也有部分資料丟失,記錄提取過程遇到很大阻力。首先獲取最初版本資料庫各個表的表結構:合併快照前的父盤因為寫入較早,使用第一塊掉線盤進行校驗獲取到這個檔案的完整資料,然後提取出其中資料庫各個表的表結構,之後客戶方提供了最新版的資料庫建表指令碼。

分別使用兩組不同表結構對資料記錄進行提取並匯入恢復環境中的mysql資料庫內,然後剔除各個表中因為表結構變更造成的亂碼資料,最後將兩組資料分別匯出為。sql檔案。

七、

資料驗證

因為兩個版本的資料庫表結構不同,所以聯絡了客戶方的應用工程師進行除錯。除錯完成後匯入平臺,平臺除錯成功,本次資料恢復成功。

【北京北亞資料恢復中心】地址:北京市海淀區溫泉鎮中關村創客小鎮16號221電話:4006-505-646