Mysq Innerdb引擎下的 .frm .ibd文件还原表结构、表数据

电脑因重装系统,导致本地mysql 表数据丢失。MyISAM引擎不多说,直接把三个文件复制到datadir 内即可。而innerdb表还原就让本菜鸡历经坎坷。解决方案如下:

1)因不知道原表结构,特地安装了mysql-utilities 实用工具,在其根目录下执行命令:

mysqlfrm --server=root:123@localhost:3306 xxxx.frm --port=3309 --user=root > ‘xxxx’.sql

localhost:3306为『mysql用户名:密码@数据库地址:端口』,xxxx.frm是你要恢复的表<此处注意,此处写文件全路径>,port=3309表示端口,注意如果你原数据库端口是3306,那这里就随便写一个其他未被占用的端口,这个端口不能跟原数据库端口相同,user=root表示以root用户运行,否则可能无权限读取你的xxxx.frm数据,‘xxxx’.sql是读取你frm接口后输出的sql语句。

mysqlfrm用法详情见:https://blog.csdn.net/anzhen0429/article/details/78007341

2、根据xxxx.sql里的语句见表,这样表结构就还原了

3、解除innerdb表与.ibd文件的绑定

ALTER TABLE `xxxx` DISCARD TABLESPACE;

xxxx为操作的表名
 

4、net stop mysql;//关闭mysql服务

5、将你之前的.ibd文件拷贝到相应数据下

6、net start mysql;//启动服务

7、绑定新的.ibd文件

ALTER TABLE xxxx IMPORT TABLESPACE; 

大功告成!此刻注意,如果是多张表需要还原,可写成脚本或写java代码批量操作。

你可能感兴趣的:(Mysq Innerdb引擎下的 .frm .ibd文件还原表结构、表数据)