前提条件
新开一个实例 ,只适合独立表空间结构
数据库版本要一样,用的是独立表空间
有问题要重新测试,删除数据,初始化库,已测试N遍才成功的
友情连接:http://blog.csdn.net/hi__study/article/details/53489672
http://www.linuxidc.com/Linux/2012-02/54122.htm
1、新建一个一样的数据库名称
2、新建一个一样的表结构 (可以随机新建一张表,然后将要还原的表覆盖,想改my.cnf里面的
innodb_force_recovery = 6
) ,重启数据库,查看表信息 desc xxxx,有信息说明是对的
3、导出表结构
/usr/local/mysql-test-3307/mysql_3307/bin/mysqldump --opt -d bobing2016 -S /tmp/mysql_3307.sock -uroot -ptest > /home/baiys/user.sql ,查看user.sql信息
4、查看新创建表的ibd文件中的表空间ID vim -b xxx.ibd 输入:%!xxd (红色部分)
5、进入数据库,删除刚才新建的表,再通过要恢复的表的结构建一样的表
6、关闭数据库
7、查看要恢复的表的ibd的表空间地址 vim -b xxx.ibd ,查看 :%!xxd ,查看第三行,3和5,把要恢复的表的ibd空间修改成为刚才新的表的空间,覆盖新的表的ibd ,%!xxd -r 再保存退出
8、打开数据库,如果有问题可将
innodb_force_recovery = 6开启,测试没问题刚恢复成功