56,677
社区成员
发帖
与我相关
我的任务
分享
数据库版本: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;
导入无报错,但是导入后查看数据,数据错乱,大体:字段内容错位、数字型变负数,中文字段出现部分乱码
同事本地尝试单表,曾经有成功过,后面就没有办法正常导入。唯一成功的一次,验证了数据是正确的:
求助各路高人,我们恢复的步骤里,是什么细节点没有做到?求指点!
算自问自答了,解决了。表结构语句的问题,用frm看里生成的表结构,缺失了主键、以及唯一索引设置,导致导入的数据不对,补上主键和唯一索引后,重建表,就正常了。
从根源上,应该是我们没有使用工具从frm文件里恢复表结构导致的