【Mysql5.7根据frm和ibd文件恢复数据
本文介绍了MySQL数据库表结构和数据恢复的完整步骤。若表结构未知,需进行1-7步操作:修改配置文件启用恢复模式、查看错误日志、替换frm文件、重启服务并重建对应字段数的表结构。已知表结构则直接执行第8步替换frm文件恢复结构。数据恢复部分需注释恢复参数,通过替换ibd文件并结合discard/import tablespace命令完成数据导入。整个流程涉及文件权限修改、服务重启等关键操作,需注意
注意必读:
如果您不知道恢复这个表的表结构,那么就需要操作下面:第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;。
此时数据已经恢复成功。

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