mysql中ibd和frm文件_利用.ibd和.frm文件恢复mysql数据

起因

正常重启服务器,导致mysql数据丢失。没有备份,没有备份。所以看完数据库文件之后,都是 table_name.ibd和table_name.frm文件,就因此看看能否恢复。

数据小常识

.frm存放数据库的表结构

.ibd存放数据内容

恢复表结构

创建数据库。一定要注意字符集和排序规则和之前的数据库要一样。任意数据库名称,当前使用game_master

创建表。一定要和恢复的表名称是一样的,假设需要恢复的表是games

在执行上面的创建表语句之后,使用net stop mysql关闭数据库服务,然后用需要恢复的games.frm覆盖这个新建的game_master数据库的games表的物理文件games.frm,接着对配置文件(my.ini)设置innodb_force_recovery = 6,然后使用net start mysql启动服务,接着使用:desc games查看该表结构,会出现下面错误信息:

针对这个问题,我们可以通过查看mysql的日志文件来解决,查看mysql安装目录下的data文件夹里面.err结尾的文件,你会发现出现下面所示的错误信息:[Warning] InnoDB: Table wangyi/songlyric contains 1 user defined columns in InnoDB, but 6 columns in MySQL.原来是因为,我们要恢复的表有6个字段,而我们在创建表的时候只创建了1个字段。

解决方案:删除games表重新创建一个包含6个字段的表,具体这6个字段是什么不用管的。

你可能感兴趣的:(mysql中ibd和frm文件)