【北亞資料庫資料恢復】誤操作導致資料丟失的華為雲mysql資料恢復案例

北亞資料恢復發表於2022-03-28

資料庫資料恢復環境:


華為雲ECS網站伺服器,linux作業系統;

Mysql資料庫版本號5.6,資料表採用innodb作為儲存引擎。



故障:


在執行資料庫版本更新測試時,錯誤地將本應在測試庫執行的sql指令碼執行於生產庫,導致其中8個表被truncate,4個表的

少量資料被delete。DBA聯絡北亞資料恢復中心要求恢復被truncate的8個表以及部分資料被delete的4個表的資料。


資料庫資料恢復流程:


1、由於使用者ECS內有其他業務仍在執行,為保證被truncate表的底層資料不被破壞,北亞資料恢復工程師首先對mysql的

data目錄所在分割槽進行備份。


2、由於需要進行資料恢復的12個表內沒有大欄位型別值和myisam引擎表,北亞資料恢復工程師只需要下載獲取到資料庫

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

應表名的.frm檔案內。在本次資料恢復案例中frm檔案完好可直接使用。北亞資料恢復工程師下載需要進行資料恢復的資料

庫表對應的frm檔案。


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


4、恢復被truncate的表。在下載完成的資料段檔案內提取對應於各表的資料頁,解析對應表的frm檔案獲取到該表的表結

構資訊。通過表結構資訊獲取到底層資料分配規則,北亞資料恢復工程師按照規則拆分資料段內二進位制資料並對不同型別

資料進行字元展示轉換(各類整形、浮點型、時間型等),完成資料段到sql語句的轉換。


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

的記錄。


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


7、資料清洗。由於直接從底層抓取出的記錄可能存在主鍵不唯一(引擎在儲存時產生的臨時記錄)和記錄重複(緩衝段)

以及亂碼(掃描資料段時出現特徵值匹配成功但不屬於該表的資料段)等情況,北亞資料恢復工程師對提取出的存在異常

的記錄進行人工處理。


8、資料驗證。開啟遠端桌面,由使用者親自進行資料驗證。經過使用者親自驗證,被truncate和delete的表恢復出來的資料完

整可用。


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

相關文章