當前位置:
首頁 > 知識 > MYSQL INNODB引擎下:根據.frm和.ibd文件恢復表結構和數據

MYSQL INNODB引擎下:根據.frm和.ibd文件恢復表結構和數據

MYSQL INNODB引擎下:根據.frm和.ibd文件恢復表結構和數據

記錄通過.frm和.ibd文件恢複數據到本地

.frm文件:保存了每個表的元數據,包括表結構的定義等;

.ibd文件:InnoDB引擎開啟了獨立表空間(my.ini中配置innodb_file_per_table = 1)產生的存放該表的數據和索引的文件。

以actclss表為例,結構如下

MYSQL INNODB引擎下:根據.frm和.ibd文件恢復表結構和數據

1、安裝相同版本的mysql;

2、找回表結構(若有表結構,直接導入表即可)

  • 建立同名的表(InnoDB),隨意一個欄位即可

MYSQL INNODB引擎下:根據.frm和.ibd文件恢復表結構和數據

  • 關閉mysql服務,用需要恢復的.frm文件覆蓋新生成的.frm文件。接著修改my.ini配置innodb_force_recovery = 6進入恢復模式。啟動mysql。

MYSQL INNODB引擎下:根據.frm和.ibd文件恢復表結構和數據

  • 啟動mysql,desc actcalss。我這裡直接出現了表結構。若沒有,查詢日誌,會提示該表列數。注釋innodb_force_recovery = 6,建立相同列數的表。重複以上步驟,會得到表結構。

  • 導出結構,刪除表,導入表結構。

3、.ibd文件包含tablespace id,所以需要修改恢複數據.ibd文件的tablespace id和新建立的相同。可使用winHex(編輯16進位)。打開新建的.ibd文件,得到tablespace id。

MYSQL INNODB引擎下:根據.frm和.ibd文件恢復表結構和數據

4、打開需恢復的.ibd文件,修改為 00 03。

5、停止mysql服務,保證innodb_force_recovery = 6。替換.ibd文件。啟動mysql。數據和結構都恢復了。可以導出數據和結構。

注意:

1、數據量大時,查詢時mysql會異常停止服務,可修改my.ini配置或使用程序分批導出;

2、.ibd文件過大時,winHex修改文件後無法保存,此時可使用linux的vim進行16進位編輯和保存。

  • vim actcalss.ibd -b 二進位的方式打開 (文件過大時,需耐心等待一會兒)

MYSQL INNODB引擎下:根據.frm和.ibd文件恢復表結構和數據

  • 在vim模式下,輸入 :%!xxd 進行16進位編輯

MYSQL INNODB引擎下:根據.frm和.ibd文件恢復表結構和數據

  • 編輯完後,使用 :%!xxd -r 轉換為二進位

  • :wq!保存即可


· 學IT,就來中公優就業:http://www.ujiuye.com/

· 2017年【中公教育】特別推出2017年就業促進計劃,500萬就業基金助你成為IT達人

詳情請戳http://www.ujiuye.com/zt/jycj/?wt.bd=bgz

· 什麼?海量IT學習資料白給你都不要?別想了,加群搶:584539956

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT優就業 的精彩文章:

Docker入門之四搭建私有倉庫
.NET十年回顧
用 Python 擼一個區塊鏈
簡單說明CGI是什麼

TAG:IT優就業 |