注意必读:

如果您不知道恢复这个表的表结构,那么就需要操作下面:第1-7步。如果您已经知道了表结构,就是要恢复数据。操作第8步。

1.恢复表结构

第一步: 创建要数据库必须数据同恢复的数据库同名,再创建要恢复的表,字段随意。
第二步: vim /etc/my.conf 增加:innodb_force_recovery = 6
在这里插入图片描述

第三步: 查看日志
错误日志文件路径:
第1种方式:
一般位置在data数据目录下:;如何数据存储路径:如下图
在这里插入图片描述

如何查找错误日志:
在这里插入图片描述

第2种方式:
mysql> show variables like ‘log_error’;
±--------------±-----------------------------------+
| Variable_name | Value |
±--------------±-----------------------------------+
| log_error | /usr/local/mysql/data/localhost.err |
±--------------±-----------------------------------+
查看mysql数据库表的错误日志命令如下:
tail -f localhost.localdomain.err
第四步: 把要还原的frm表覆盖过来。
在这里插入图片描述

第五步: 给文件授权:chown mysql:mysql *
在这里插入图片描述

第六步: 重启mysql service mysql restart/service mysqld restart
第七步: 看控制台,点击表名:日志如下图:根据实际字段添加字段。
在这里插入图片描述
提示你老frm中有20个字段。所以我们比较麻烦:
1、删除test数据库中的login表
2、再新建一个login表,并且属性字段为20个,字段随意取名.
特殊情况说明:
重启后在naicat中查询表的时候看控制台就会输出如图真实字段数。 如果没有输出则有可能建的位数正好相等。
在这里插入图片描述

第八步: 再次拷贝frm文件覆盖新建表的frm,然后重启数据库
你会发觉,此时你的表结构已经恢复出来了。

2.恢复数据:

注释掉:增加的innodb_force_recovery=6
第一步:注释掉
在这里插入图片描述

第二步: 登录到数据库服务器中
Mysql -uroot -q密码
Use 数据库;
第三步: 执行命令:alter table 表名 discard tablespace;
去掉这个表的表空间。
第四步: 拷贝备份好的ibd文件,并覆盖新建的ibd,并修改权限(chown mysql:mysql *
)。
第五步: 执行导入表空间命令:alter table 表名import tablespace;。
此时数据已经恢复成功。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐