您正在使用 IPV4 [44.221.73.157] 访问本站,您本次已经查看了 1 页
用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
悟空收录网       [公益]保护绿色环境,构建和谐社会      

【腾讯云】2核2G4M云服务器新老同享99元/年,续费同价      
[公益] 地球是我家,绿化靠大家      
2024年 七夕节 056
2025年 高 考 357
2025年 元 旦 200
2025年 春 节 228
 
您现在的位置:首页 >> 数据库 >> 内容
本类新增
本类热门
利用frm和ibd文件恢复mysql表数据的详细过程
内容摘要: 问题总是遇到mysql服务意外断开之后导致mysql服务无法正常运行的情况,使用Navicat工具查看能够看到里面的库和表,但是无法获取数据记录,提示数据表不存在。这里记录一下用frm文件和ibd文件手动恢复数据表的过程。思路1、frm文件:存储数据表结构定义的文件,每个表对应一个frm文件。其中包含:表名、列名、主键、字符集等数据。可以使用命令SHOWCR......
问题

总是遇到mysql服务意外断开之后导致mysql服务无法正常运行的情况,使用Navicat工具查看能够看到里面的库和表,但是无法获取数据记录,提示数据表不存在。

这里记录一下用frm文件和ibd文件手动恢复数据表的过程。

思路

1、frm文件:

存储数据表结构定义的文件,每个表对应一个frm文件。

其中包含:表名、列名、主键、字符集等数据。

可以使用命令SHOWCREATETABLEtable_name;或者DESCRIBEtable_name;查看基于frm文件的表结构信息。

2、ibd文件:

存储表数据和索引的文件,每个使用InnoDB存储引擎的表,启用了独立标空间时,都会有一个对应的ibd文件。

其中包含:数据行记录、索引等数据。

3、由frm文件确认表结构,由ibd文件恢复表数据。

解决

这里以prj_idx表为例,记录手动处理的过程。

1、确保当前mysql服务正常运行,新建一个数据库

createdatabasetest;

2、创建prj_idx同名表,默认一个字段

createtable`prj_idx`(`id`int);

在这里插入图片描述

3、替换frm文件

1.断开mysql服务

2.使用要恢复的prj_idx.frm文件替换新创建的prj_idx.frm文件

3.启动mysql服务

在这里插入图片描述

4、查询表结构

rem刷新数据库表

flushtables;

rem查看表结构

showcreatetable`prj_idx`;

这时会提示错误:Table‘test.prj_idx’doesn’texist.

在这里插入图片描述

查看错误日志err文件,如果找不到错误日志位置,可以先查询:

showvariableslike'log_%';

在这里插入图片描述

查看错误日志,找到错误提示:

[Warning]InnoDB:tabletest/prj_idxcontains1userdefinedcolumns

inInnoDB,but16columnsinMySQL.

在这里插入图片描述

提示里面说明了prj_idx表中实际的字段数量。

5、删除prj_idx表,重新创建正确数量的任意字段的prj_idx表

这里只需要数量正确即可

draoptableifexists`prj_idx`;

createtable`prj_idx`(`id`int,`1`int,`2`int,`3`int,`4`int,`5`int,`6`int,`7`int,`8`int,`9`int,`10`int,`11`int,`12`int,`13`int,`14`int,`15`int);

6、重新替换frm文件,并查看表结构

1.断开mysql服务

2.使用要恢复的prj_idx.frm文件替换新创建的prj_idx.frm文件

3.启动mysql服务

4.刷新数据表

5.查看表结构

flushtables;

showcreatetable`prj_idx`;

这时就能够查看到prj_idx的表结构了:

在这里插入图片描述

7、使用表空间快速迁移ibd文件

丢弃表空间(删除ibd文件):

altertableprj_idxdiscardtablespace;

复制要恢复的prj_idx.ibd文件到对应的路径下

导入表空间:

altertableprj_idximporttablespace;

确认字符集、行格式、排序顺序等设置

再次打开prj_idx表,里面就已经有数据了

在这里插入图片描述

8、myd、myi文件

复制到对应路径下

重启mysql服务

ok,搞定!

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:MySQL8.0修改Root密码的方法步骤

 

下一篇:对SQL Server中敏感数据进行加密解密的操作方法

发布日期:2024/4/24
手机扫二维码直达本页
发布时间:20:54:08
点  击:15
录  入:齐天大圣
相关文章
Baidu
YiJiaCMS 7.5.1 build240527(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,Cloudflare提供加速防护
运行时间载入中.....