在有备份的前提下,优先使用备份进行恢复,执行binlog文件 进行增量恢复. 如果没有对应备份,表仍然后坏块,则需要进行异常恢复操作;

解决步骤如下:

0. 首先查看mysql是否正常可访问,如果可以访问,直接登录  

1. 首先查询错误日志 mysql.err

2. 尝试innodb_force_recovery 1 ~ 6 进行启动MySQL,直到能成功启动为止,mysqldump导出对应表结构和数据  

3. 依据MySQL.err中出错space_id 找到对应表或索引  

4. 手动移除 有问题的表 frm 和ibd文件 到别的路径

5. 调整innodb_force_recovery=1 启动MySQL, 会提示对应表找不到  

6. 切分有问题的idb文件 65536字节大小的文件 重名为对应ibd文件,拷贝回 frm文件  

7. 调整innodb_force_recovery=3 进行启动处理.  

8. 尝试重新导入对应ibd文件 alter table xxxx discard tablespace;  alter table xxxx import tablespace;如果添加失败,先获取对应定义语句,然后进行重建  

9. 执行第二步 导出的数据   

10.注释innodb_force_recovery 重启MySQL