MySQL只有数据库.ibd文件,如何恢复这个数据库?

最标准恢复方法

假设:

  • 数据库名:shop

  • 表名:product


一、先安装相同版本 MySQL

尽量和原来:

  • 完全相同版本

  • 相同发行版


二、创建同结构空表

必须结构完全一致。

CREATE DATABASE shop;
USE shop;
CREATE TABLE product (
    ...
) ENGINE=InnoDB;

字段必须:

  • 顺序一致

  • 类型一致

  • 索引一致

否则恢复失败。


三、删除新生成的 ibd

停止 MySQL 后:

删除:

product.ibd

保留:

product.frm

四、执行 discard tablespace

启动 MySQL:

ALTER TABLE product DISCARD TABLESPACE;

这一步会让 MySQL 丢弃当前表空间。


五、拷贝旧 ibd

把你的旧:

product.ibd

复制到数据库目录。

例如:

/var/lib/mysql/shop/

并修改权限:

chown mysql:mysql product.ibd

六、导入表空间

ALTER TABLE product IMPORT TABLESPACE;

成功的话数据就恢复了。