伺服器資料恢復-誤操作導致mysql資料庫資料丟失的資料恢復案例

北亞資料恢復發表於2023-12-27

雲伺服器資料恢復環境:

華為ECS雲伺服器,linux作業系統,mysql資料庫(innodb引擎)。作為網站伺服器使用。


雲伺服器故障:

在執行mysql資料庫版本更新測試時,誤將本應該在測試庫上執行的sql指令碼執行在生產庫上了,生產庫上的部分表被truncate,部分表內有少量資料被delete。

需要恢復被truncate的表以及被少量資料被delete的表。


雲伺服器資料恢復過程:

1、ECS雲伺服器內有其他業務仍在執行,先對mysql資料庫的data目錄所在分割槽進行備份。

2、由於需要恢復的表內不存在大欄位型別值,也沒有myisam引擎的表需要恢復,所以只需要掃描資料段並下載恢復資料所必需的資料庫段碎片即可。innodb引擎的mysql資料庫表的資料恢復必須依賴表結構資訊,mysql的表結構資訊儲存於對應表名的.frm檔案內。本案例mysql資料庫中的.frm檔案完好,直接下載需要恢復的表對應的.frm檔案。

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

4、在下載的資料段檔案內提取對應於各表的資料頁,解析對應表的.frm檔案獲取該表的表結構資訊,透過表結構資訊獲取底層資料分配規則。按照底層資料分配規則拆分資料段內二進位制資料,針對不同型別進行字元展示轉換(各類整型、浮點型、時間型等),完成資料段到sql語句的轉換。

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

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

7、由於直接從底層抓取出的記錄可能存在主鍵重複(引擎在儲存時產生的臨時記錄)、記錄重複(緩衝段)以及亂碼(掃描資料段時出現特徵值匹配成功但不屬於該表的資料段)等情況。北亞企安資料恢復工程師人工處理存在異常的提取記錄,直到所有資料都沒有問題。

8、交由使用者方工程師驗證資料。經過使用者方的多方驗證,確認被truncate的表完整恢復,被delete記錄的表中資料完整恢復。本次ECS雲伺服器資料恢復工作完成。


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

相關文章