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。

推薦閱讀: