300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > mysql frm ibd 创建表_MySQL数据库实现从.frm文件和.ibd文件恢复数据表方法

mysql frm ibd 创建表_MySQL数据库实现从.frm文件和.ibd文件恢复数据表方法

时间:2024-03-11 18:23:33

相关推荐

mysql frm ibd 创建表_MySQL数据库实现从.frm文件和.ibd文件恢复数据表方法

MySQL中.frm文件:保存了每个表的元数据,包括表结构的定义等,该文件与数据库引擎无关。

MySQL中.ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索引的文件。

恢复表结构,在只有.frm文件发现创建的表不能打开。在有了表结构的SQL语句之后创建表,完全就不需要frm文件了,但是ibd文件里的数据还是不能直接覆盖数据库里。

数据表数据,在mysql5.7 下重新建表

这里用的Navicat工具,在表结构建好后,去MySQL 的data目录下找到对应数据库,发现frm文件和ibd文件。Navicat中可以看到表,但是数据是没有的,这里将ibd文件覆盖之后发现数据表不能打开,会报[Err] 1146 - Table 'users' doesn't exist。

ibd文件覆盖,需要先放弃表空间,在创建表结构的时候,需要在sql语句后加上 ROW_FORMAT=COMPACT;将表结构改为静态表。

然后在命令行放弃表空间;删除刚才新创建的ibd文件;mysql>ALTERTABLE产品DISCARDTABLESPACE;

之后将 ibd文件覆盖,重启MySQL服务,导入这个表空间;mysql>ALTERTABLE产品IMPORTTABLESPACE;

显示Query OK , 0 rows affected ,成功之后表数据就会在表中,在这中间可能会出现

将MySQL服务强行关闭的情况,停掉mysql服务后,然后在配置文件my.ini中修改innodb_force_recovery = 1,再启动服务。

进行上一步操作,等数据表数据完成后再删除掉。

至此,使用.frm和.ibd文件恢复数据库数据的结束。

注意:最好重新配置一个空的MySQL来进行恢复操作,这样不会影响到MySQL下别的数据库,本例中使用的是MySQL 5.6.39版。

本文由职坐标整理发布,欢迎关注职坐标MySQL频道,学习更多数据库知识!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。