mysql 5.6 使用idb文件恢复表数据 数据错乱

Eternalc 2022-11-02 23:02:28

数据库版本:mysql 5.6

背景:数据库表被误删,从服务器上找到半个月前的data文件下的备份,有完整的.frm、.idb文件,没有开启/bin/log

使用备份的create table 脚本恢复了对应的表结构,然后使用.idb文件进行恢复,步骤同网上教程参考:https://www.cnblogs.com/mybk/p/15438596.html

create table (...) ENGINE=InnoDB ROW_FORMAT = Dynamic DEFAULT CHARSET=utf8mb4;

alter table xxx discard tablespace;

alter table xxx import tablespace;

导入无报错,但是导入后查看数据,数据错乱,大体:字段内容错位、数字型变负数,中文字段出现部分乱码

 

 同事本地尝试单表,曾经有成功过,后面就没有办法正常导入。唯一成功的一次,验证了数据是正确的:

 求助各路高人,我们恢复的步骤里,是什么细节点没有做到?求指点!

 

...全文
170 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eternalc 2022-11-03
  • 打赏
  • 举报
回复

算自问自答了,解决了。表结构语句的问题,用frm看里生成的表结构,缺失了主键、以及唯一索引设置,导致导入的数据不对,补上主键和唯一索引后,重建表,就正常了。

从根源上,应该是我们没有使用工具从frm文件里恢复表结构导致的

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧