1.找到数据库文件位置:/var/lib/mysql/,将需要恢复的数据的frm、idb文件拷贝出来
2.找到数据库配置文件位置:/etc/mysql/my.cnf
*以下举例为book表
获取表结构:
1.创建一个相同名称相同字段数的表;
2.关闭数据库服务:service mysql stop
3.用拷贝出来的的book.frm覆盖新表的book.frm
4.修改数据库配置文件my.cnf:innodb_force_recovery = 6
5.启动数据库服务:service mysql start
6.进入mysql,使用:desc book查看该表结构
恢复数据:
1.修改数据库配置文件my.cnf:innodb_force_recovery = 0
2.重启数据库服务:service mysql restart
3.执行mysql命令:alter table book discard tablespace;
4.将之前拷贝出来的book.ibd 放入对应的位置;
5.给book.ibd修改权限:chown mysql:mysql book.ibd
6.执行mysql命令:alter table book import tablespace;
7.查看book表,数据恢复成功。
*注意
1.恢复数据执行mysql命令:alter table book discard tablespace;时报错:ERROR 1015 (HY000): Can't lock file (errno: 165 - Table is read only)
将之前设置的innodb_force_recovery = 6 改为 innodb_force_recovery = 0 重启服务
2.恢复数据执行mysql命令:alter table book import tablespace;时报错:Tablespace is missing for table `book`.`book`.
book.ibd未修改权限,执行chown mysql:mysql book.ibd