InnoDB 类型MySql恢复表结构与数据
前提:保存了需要恢复数据库的文件.frm和.ibd文件
条件:InnoDB类型的
恢复表结构
1.新建一个数据库--新建一个表,表名和列数和需要恢复数据库相同
2.停止mysql服务器servicemysqlstop,
3.在/usr/local/mysql/my.cnf里面添加innodb_force_recovery=6
4.将需要恢复的表.frm格式文件覆盖/usr/local/mysql/data/数据库下的.frm格式文件
5.启动mysql服务器servicemysqlstart
6.停掉数据库服务servicemysqlstop,将my.cnf里面的innodb_force_recovery=6注释掉
7.启动mysql服务器servicemysqlstart
恢复数据
1.先恢复表结构
2.执行altertable`user`discardtablespace;执行完之后,数据库目录下的user.ibd文件就没了
3.把你备份的ibd放到消失的user.ibd文件那里
4.给这个文件加权限chown-Rmysql:mysqldata所有者为mysql
5.执行altertable`user`importtablespace;执行完,表数据就可读了,这时候会丢失一些诸如表行记录数等存在系统表里的信息
备注:如果遇到外键约束,在语句前加上SETFOREIGN_KEY_CHECKS=0;完成后记得改为1