環境部署與故障原因:
客戶本地服務器,操作系統爲windows2008 r2 。在當前環境內安裝有mysql5.6單實例,引擎類型爲innodb,表內數據存儲所使用表空間類型爲獨立表空間。未進行數據庫備份,未開啓binlog。由於人爲誤操作使用Delete命令進行刪除數據時未添加where子句進行篩選導致全表數據被刪除,刪除後未對該表進行任何操作。
恢復方案制定:
1、故障類型分類:在本案例中,由於未對生產環境進行備份也未開啓binlog日誌,無法直接還原數據庫,屬於典型表內mysql-delete數據誤刪除。
2、故障分析與可行性方案制定:對於mysql innodb誤刪除導致記錄丟失的恢復方案有三種,分別是備份還原、binlog還原和記錄深度解析。對於本案例前兩種方案不適用,只能使用記錄深度解析的方式進行恢復。此恢復方案恢復原理爲模擬innodb引擎記錄管理方式,根據表結構信息將二進制文件解析爲字符記錄。
數據恢復流程:
1、獲取數據文件:客戶將表結構文件及表數據文件(.ibd)通過網絡傳輸的方式發送到本公司郵箱,工程師下載文件。
2、使用恢復工具進行恢復:
在本案例中客戶提供了表結構腳本,可以使用本工具中的5+3功能進行恢復。
首先讀取表結構信息:
開始解析記錄:
本工具默認將記錄提取爲SQL備份格式,等待解析完畢後還原到數據庫查看結果(爲保障客戶隱私關鍵信息已打碼):
客戶驗收數據:
隨機挑選表內數據交由客戶驗證,並統計恢復記錄總數。客戶驗證後表示樣例數據正確,總數符合原表內記錄條數,恢復成功。