mysql5.7利用.ibd恢复数据
首先,在MySQL命令行下执行如下命令可以查看MySQL中存放数据的位置:
show global variables like "%datadir%";
我这里的执行结果:
+---------------+---------------------------------------------+
| Variable_name | Value |
+---------------+---------------------------------------------+
| datadir | C:\ProgramData\MySQL\MySQL Server 5.7\Data\ |
+---------------+---------------------------------------------+
1 row in set, 1 warning (0.00 sec)
可以看到在我的电脑上MySQL的存放位置是C:\ProgramData\MySQL\MySQL Server 5.7\Data\。
不能直接删除.ibd文件,因为这样会导致MySQL服务重启失败。
所以需要按照如下操作以通过.ibd文件恢复数据表中的数据:
删除表空间:
ALTER TABLE <table_name> DISCARD TABLESPACE;
将.ibd文件放到指定位置
恢复表空间
ALTER TABLE <table_name> IMPORT TABLESPACE;
如果报错
1808 - Schema mismatch (Table has ROW_TYPE_COMPACT row format, .ibd file has ROW_TYPE_DYNAMIC row format.)
尝试使用
alter table tb_name row_format=DYNAMIC;
或者
alter table tb_name row_format=COMPACT;