MySQL8.0+版本 ibd数据恢复
MySQL崩了
我在使用PHPstudy的时候,不知道怎么回事就把MySQL搞崩了。尝试了很多种办法也没有用。最终只能初始化MySQL,通过ibd文件来将数据恢复了!
MySQL没有.frm文件
.frm文件:这是表结构定义文件,包含表的元数据信息,例如列名、数据类型和约束等。每个表都有一个对应的.frm文件。
.ibd文件:这是InnoDB存储引擎的数据文件,包含表的实际数据和索引。每个InnoDB表都有一个对应的.ibd文件。在MySQL 5.7之前,每个InnoDB表通常都有一个单独的.ibd文件。
看了很多篇文章,都说可以用frm文件+idb文件来恢复数据。
但是我在我的MySQL数据目录下找了很多遍都没有找到frm文件!!!
原因是因为MySQL8.0之后就不存在frm文件了
解决办法
1.备份MySQL数据文件(一定要备份)
不知道数据文件在哪里的,可以通过MySQL安装目录下的my.ini文件中看到对应的数据文件存放位置。
2.备份好数据文件之后,将数据文件删除,下面将重新对mysql进行初始化。
通过管理员的方式打开CMD,进入到MySQL安装目录下的bin目录
//windwos管理员运行
mysqld --initialize --console //初始化MySQL服务
msyqld --install //注册
net start mysql //启动mysql
依次执行上面的代码之后,会发现MySQL产生了一个新的数据文件。
3.停掉MySQL服务
直接windows搜索框搜索服务
找到MySQL服务,把它停掉
4.恢复数据
打开前面第一步备份好的数据文件,依次将ibdata1、ib_buffer_pool、mysql.ibd、auto.cnf这四个文件拖到新的MySQL数据目录下覆盖。
再将要恢复的表的数据文件拖进去即可。(表的数据文件是以表名作文件夹的,直接整个文件夹拖过去就可以)
5.重启MySQL服务
依次按照第二步的操作。将MySQL服务启动起来
6.通过数据库管理工具查看恢复的表的数据
大功告成!