通过frm和ibd批量恢复mysql

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/b1.txt

打开新生成的1.txt

用notepad++提取文件名

剪切或复制书签行

粘贴到新的文档

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

处理.frm转换命令

mysqlfrm--server=root:root

localhost:文件路径\\\1.frm文件路径\\sql\\\1.sql--diagnostic--port=--user=

\1将被替换成表名

多条命令就好了,替换文件路径

全选复制,找到安装的mysql工具的文件夹,命令符里右击

命令就自动执行了

生成了文件,打开看看

我们需要数据库创建代码已经生成

但一个表一个表的恢复比较麻烦,合成一个文件,再处理一下

还是命令提示符:copy*.sql1.sql

打开1.sql

删除多余的注释

删除错误提示语句

行尾加上ROW_FORMAT=COMPACT;

复制表名,去phpmyadmin里建一个数据库

把处理好的语句粘贴进来

执行表结构就建好了

处理命令:altertable`\1`discardtablespace;

执行生成的命令

执行成功,

找到数据文件夹

这里已经有新的frm,把原有的.ibd文件张贴进来

生成命令:altertable`\1`importtablespace;可以在先前的命令上直接替换

执行命令

OK,完成了看看成果吧




转载请注明:http://www.aierlanlan.com/grrz/4568.html