如何通过ibd和frm文件恢复 MySQL 数据表
确保有数据文件
在开始之前,请确保有 ibd 文件(包含表数据)和 frm 文件(包含表结构,如果有原始建表语句可忽略)的备份。
创建数据库和表
在 MySQL 中创建一个新的数据库,然后在该数据库中创建与备份文件结构相同的表。
如果有原始建表语句,可直接使用;否则,需要使用 mysqlfrm
工具从 frm 文件中提取创建表的 SQL 语句。
解除表空间绑定
在新创建的表上执行 ALTER TABLE <表名> DISCARD TABLESPACE;
命令,这将删除新创建的空 ibd 文件。
复制 ibd 文件
将备份的 ibd 文件复制到新数据库的相应目录下。确保文件权限正确,通常需要将文件的所有权更改为 MySQL 用户。
绑定表空间
执行 ALTER TABLE <表名> IMPORT TABLESPACE;
命令,这将告诉 MySQL 使用复制的 ibd 文件而不是原来的文件。
参考文献
https://dev.mysql.com/doc/refman/8.0/en/innodb-troubleshooting-datadict.html