數據庫數據恢復環境:
mysql數據庫,實例內數據表默認存儲引擎為innodb。
數據庫故障:
在執行數據庫版本更新測試時,用戶誤將本應在測試庫測試的sql腳本執行在生產庫中,導致部分表被truncate,部分表內少量數據被delete。
數據庫恢復過程:
1、由于該ECS內有其他業務在正常運行中,為避免被truncate表的底層數據不被破壞,首先鏡像備份mysql數據庫data目錄所在分區。
北亞數據恢復——mysql數據恢復
2、由于需要恢復的被truncate表不存在大字段類型值和myisam引擎表,數據恢復工程師使用工具掃描數據段并下載恢復數據所必需的mysql數據庫段碎片。由于innodb引擎表的數據恢復必須依賴表結構信息,mysql的表結構信息存儲于對應表名的.frm文件內。經過檢測發現在本案例中的.frm文件完好,可直接使用。下載需要的表對應的.frm文件。
北亞數據恢復——mysql數據恢復
3、讀取數據段內系統表信息,獲取需要恢復的表在系統表內的注冊信息。
4、在下載完成的數據段文件內提取對應于各表的數據頁,解析對應表的.frm文件獲取到該表的表結構信息。通過表結構信息獲取到底層數據分配規則,按照規則拆分數據段內二進制數據并對不同類型進行字符展示轉換(各類整型、浮點型、時間型等),完成數據段到sql語句的轉換。
5、恢復被delete數據的表,過程和恢復truncate表的類似,不同點在于解析數據時需要提取被標注為“delete”的記錄。
6、根據解析出的表結構信息在環境中的mysql實例內創建表,并將恢復出的數據導入。
北亞數據恢復——mysql數據恢復
北亞數據恢復——mysql數據恢復
7、由于直接從底層抓取出的記錄可能存在主鍵不唯一(引擎在存儲時產生的臨時記錄)和記錄重復(緩沖段)以及亂碼(掃描數據段時出現特征值匹配成功但不屬于該表的數據段)等情況,提取出的記錄可能存在異常,需要北亞企安數據恢復工程師手動處理。
8、開啟遠程桌面,由用戶驗證數據的準確性和完整度。經過反復驗證,truncate表和delete記錄的表都完整恢復。
審核編輯:湯梓紅
-
數據恢復
+關注
關注
10文章
587瀏覽量
17665 -
數據庫
+關注
關注
7文章
3853瀏覽量
64749 -
華為云
+關注
關注
3文章
2698瀏覽量
17619
發布評論請先 登錄
相關推薦
評論