【資料庫資料恢復】華為雲ECS網站伺服器mysql資料庫資料恢復案例

北亞資料恢復發表於2023-01-17

資料庫資料恢復環境:

華為雲ECS,linux作業系統;

mysql資料庫,例項內資料表預設儲存引擎為innodb。


資料庫故障:

在執行資料庫版本更新測試時,使用者誤將本應在測試庫測試的sql指令碼執行在生產庫中,導致部分表被truncate,部分表內少

量資料被delete。


資料庫恢復過程:


1、由於該ECS內有其他業務在正常執行中,為避免被truncate表的底層資料不被破壞,首先映象備份mysql資料庫data目錄

所在分割槽。



2、由於需要恢復的被truncate表不存在大欄位型別值和myisam引擎表,資料恢復工程師使用工具掃描資料段並下載恢復數

據所必需的mysql資料庫段碎片。由於innodb引擎表的資料恢復必須依賴表結構資訊,mysql的表結構資訊儲存於對應表名

的.frm檔案內。經過檢測發現在本案例中的.frm檔案完好,可直接使用。下載需要的表對應的.frm檔案。



3、讀取資料段內系統表資訊,獲取需要恢復的表在系統表內的註冊資訊。


4、在下載完成的資料段檔案內提取對應於各表的資料頁,解析對應表的.frm檔案獲取到該表的表結構資訊。透過表結構資訊

獲取到底層資料分配規則,按照規則拆分資料段內二進位制資料並對不同型別進行字元展示轉換(各類整型、浮點型、時間型

等),完成資料段到sql語句的轉換。


5、恢復被delete資料的表,過程和恢復truncate表的類似,不同點在於解析資料時需要提取被標註為“delete”的記錄。


6、根據解析出的表結構資訊在環境中的mysql例項內建立表,並將恢復出的資料匯入。




7、由於直接從底層抓取出的記錄可能存在主鍵不唯一(引擎在儲存時產生的臨時記錄)和記錄重複(緩衝段)以及亂碼(掃

描資料段時出現特徵值匹配成功但不屬於該表的資料段)等情況,提取出的記錄可能存在異常,需要北亞企安資料恢復工程師

手動處理。


8、開啟遠端桌面,由使用者驗證資料的準確性和完整度。經過反覆驗證,truncate表和delete記錄的表都完整恢復。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2932442/,如需轉載,請註明出處,否則將追究法律責任。

相關文章