首先针对修复过程中产生的问题进行再修复:
1、通过 alter table expresspackage discard tablespace; 解除表结构文件 expresspackage.frm 和表数据文件 expresspackage.ibd 的绑定,会直接删除 data 文件夹下的 expresspackage.ibd 文件,这时候数据库重启数据库会一直失败,所以在此期间不能重启,除非一直重启保持短暂连接进行操作,解决方法:
1,1、再删除表结构文件,可以彻底删除这个表,就可以避免重启失败:drop table expresspackage;
Tips:数据库文件损坏,很可能是某一张表有问题,一般就是操作表,可以先尝试备份删除这张表,看看MySQL是否能正常启动
1.2、再关联一个表数据文件,可以完善表文件,就可以避免重启失败:alter table expresspackage import tablespace;
1.3、Tips:如果复制进来的表数据文件在data文件夹下,但是没有关联成功,也会产生这个问题,需要先手动删除表数据文件
通过 ibd 文件进行数据恢复教程:
1、通过 alter table expresspackage discard tablespace; 解除表结构文件 expresspackage.frm 和表数据文件 expresspackage.ibd 的绑定
2、将需要恢复的 expresspackage.ibd 文件拷贝到 data 文件夹下
3、通过 alter table expresspackage import tablespace; 关联表结构文件
4、
4、完成,可通过 navicat 查看数据了
二、整个数据库恢复(需要数据库结构一致,否则可能丢失现有数据)
参考文档:https://www.cnblogs.com/sky-cheng/p/12214208.html
以新建数据库接收恢复数据为例
1、新建数据库服务MySQL2,此时是空数据库,执行初始化,然后停止服务
2、将损坏数据库的data文件夹下的数据库文件夹和ibdata1文件拷贝到MySQL2的data文件夹下,覆盖ibdata1文件
3、如果遇到无法copy的文件,选择跳过,说明此文件是损坏文件
4、重启MySQL2,DOS界面进入数据库,执行drop table 删除此前发现的损坏表,再重启MySQL2,能正常启动
5、MySQL2已接收MySQL中指定数据库的所有正常表