如何通过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

文章作者: 若海; 原文链接: https://www.rehiy.com/post/582/; 转载需声明来自技术写真 - 若海

添加新评论