Mysql ibd文件恢复注意问题
- 创建数据库(随意创建)
- 创建数据表(备注:表结构要和要恢复的表结构一致,row_format要和ibd文件的row_format一致,否则,会提示两者不一致。 当前row_format=dynamic)
备注:创建表时候的row_format和表属性的不一致,基于innodb是,要把row_format设置成dynamic时,需要修改mysql的全局配置,直接在myql命令中修改:set global innodb_file_format=Barracuda;
开始恢复
1、恢复第一步: 在新库创建表
可以在之前库里执行 语句查看之前表结构。
show create table 表名字;
注意表结构和之前表结构一样。
2、恢复第二步:移除表空间
alter table 表名字 DISCARD TABLESPACE;
3、恢复第三步:拷贝ibd文件至目标位置
-- 使用sql查询数据目录
show global variables like '%datadir%';
将备份的ibd文件,放到mysql->data->创建的数据库名称->,将ibd拷贝到此目录下。
4、恢复第四步:重新导入表空间
alter table 表名字 IMPORT TABLESPACE;
5、当执行到上一步完成后,我们发现数据库中的数据已经完全恢复过来了
报错解析
1、 可能你会出现这个报错,> 1813 - Tablespace ‘/monitor_measure’ exists.
出现这个问题的原因是上传得idb文件没有权限。
解决问题
chown mysql:mysql monitor_measure.ibd