伺服器資料恢復—雲伺服器mysql資料庫表資料被delete的資料恢復案例

北亞資料恢復發表於2023-11-07

雲伺服器資料恢復環境:

阿里雲ECS網站伺服器,linux作業系統+mysql資料庫。


雲伺服器故障:

在執行資料庫版本更新測試時,在生產庫誤執行了本來應該在測試庫執行的sql指令碼,導致生產庫部分表被truncate,還有部分表內的少量資料被delete。該例項內資料表均採用innodb作為預設儲存引擎。


雲伺服器資料恢復過程:

1、由於使用者ECS內還有其他業務在執行,為避免被truncate表的底層資料被破壞,首先將mysql資料庫的data目錄所在分割槽備份。

2、需要恢復的十多個表內不存在大欄位型別值和myisam引擎表,直接掃描資料段並下載恢復所必需的資料庫段碎片。由於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-2993302/,如需轉載,請註明出處,否則將追究法律責任。

相關文章