More  

小編的世界 優質文選 資料

通過.frm 和.ibd 批量恢複mysql數據


2020年8月26日 - 資料小編 賈碼農 
   

mysql創建表時ENGINE=InnoDB和MyISAM生成的數據文件是不一樣的

InnoDB生成.frm和.ibd兩個文件,直接複制到新的數據庫目錄,是找不到表的,

MyISAM生成.frm 和.MYD 還有.MYI三個文件,直接就複制就能用了。

要恢複.frm和.idb需要安裝工具。

1、mysql-utilities-1.6.5-winx64.msi

2、vcredist_x64.exe

3、phpstudy_pro 為本地測試用

4、notepad++ 編輯和替換很方便

下載、安裝。

安裝後,找到mysql-utilities 安裝的目錄

我們會用到mysqlfrm的命令,返回上層目錄,按住shift 右擊

配置mysql運行環境

把 .frm文件名提取出來,這裏我用命令提示符

在文件夾上按shift右擊,打開命令提示符

輸入:dir /t /b >1.txt

打開新生成的1.txt

用notepad++提取文件名

剪切或複制書簽行

粘貼到新的文檔

去掉擴展名備用,(可能要用三遍,保存好)

處理.frm轉換命令

mysqlfrm --server=root:root@localhost:3306 文件路徑\1.frm > 文件路徑\sql\1.sql --diagnostic --port=3307 --user=

1將被替換成表名

多條命令就好了,替換 文件路徑

全選複制,找到安裝的mysql工具的文件夾,命令符裏右擊

命令就自動執行了

生成了文件,打開看看

我們需要數據庫創建代碼已經生成

但一個表一個表的恢複比較麻煩,合成一個文件,再處理一下

還是命令提示符:copy *.sql 1.sql

打開1.sql

刪除多餘的注釋

刪除錯誤提示語句

行尾 加上 ROW_FORMAT=COMPACT;

複制表名,去phpmyadmin裏建一個數據庫

把處理好的語句粘貼進來

執行表結構就建好了

處理命令:alter table `1` discard tablespace;

執行生成的命令

執行成功,

找到數據文件夾

這裏已經有新的frm,把原有的.ibd文件張貼進來

生成命令:alter table `1` import tablespace;可以在先前的命令上直接替換

執行命令

OK,完成了看看成果吧

  大家在看