Mysql之如何根據.frm和.idb文件恢復表結構
根據.frm和.idb文件恢復表結構
.frm和.idb文件是Mysql數據庫使用InnoDB數據庫引擎時產生的兩個文件。
- ~表名.frm文件存儲的相關表的表結構、索引等元數據。
- ~表名.idb文件存儲的相關表中的數據記錄。
舉例:
admin.frm
文件存儲的是admin的表結構信息,例如id是int型,id是admin的主鍵等元數據信息。admin.idb
文件存儲的是admin表中的記錄信息。例如admin表中(1,張三)一條記錄信息。
如何根據.frm和.idb文件恢復表結構呢
第一步:下載安裝MYSQL Utilities工具
官方下載地址:https://downloads.mysql.com/archives/utilities/
如果安裝64位工具出現報錯時可以嘗試換成32位的工具。(親測有效)
第二步:使用.frm文件恢復表結構
首先,使用Win + R
快捷鍵打開DOS窗口,使用CD切換到.frm文件所在路徑。
例如:admin.frm文件在D:mysql-5.7.31-winx64/data/數據庫名文件中。
則需要 CD /d mysql-5.7.31-winx64/data/數據庫名文件夾中。
然後,使用mysqlfrm --diagnostic ./文件名.frm
命令來導出建表的sql語句
使用建表sql語句在Mysql數據庫中創建相應的表。
第三步:使用.idb文件恢復表中的記錄
首先,將剛才創建的表的表空間卸載(刪除.idb文件),執行完下面的這條命令之後將會自動刪除該表的.idb文件。
在Mysql中執行
alter table 表名 discard tablespace;
然後,將需要恢復的.idb文件拷貝到剛才創建的數據表的 表名.frm文件所在的文件夾中(一般是在數據安裝路徑\data\數據庫名 文件夾,在這個文件中可以看創建的表的.frm文件就對瞭)。
最後,使用下面的命令將復制的.idb文件導入到創建的表中。
在Mysql中執行
alter table 表名 import tablespace;
按照上面的就可以恢復表結構和數據瞭,完美收工嘍!
總結
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- mysql5.7.33誤刪除ibdata文件找回數據的方法
- Windows下mysql 8.0.29 winx64安裝配置方法圖文教程
- Mysql通過ibd文件恢復數據的詳細步驟
- Python全棧之學習MySQL(3)
- win10下安裝mysql8.0.23 及 “服務沒有響應控制功能”問題解決辦法