MySQL Server 使用两种类型的数据库存储引擎 – InnoDB 和 MyISAM。当使用InnoDB存储引擎时,MySQL服务器将数据和索引存储在.ibdata文件中,表模式存储在.frm文件中。如果 InnoDB 表损坏,您可以轻松地从 .ibdata 和 .frm 文件恢复 InnoDB MySQL 表的数据,而不是恢复完整的数据库备份。在本文中,我们将讨论如何从 MySQL 服务器中的 .ibdata 和 .frm 文件恢复数据。
从 ibdata 和 frm 文件恢复 InnoDB 表的逐步过程
以下是从 MySQL 服务器中的 .frm 和 .ibdata 文件恢复 InnoDB 表数据的分步过程:
-
您需要首先创建一个新的 MySQL 数据库。为此,请登录 PhpMyAdmin,单击“数据库”选项,输入数据库名称(例如“客户端”),然后单击“创建”。
-
接下来,转到 XAMPP 安装的文件夹检查新创建的数据库。默认位置是 C:xamppmysqldata。
-
当你打开新数据库时,你会发现它不包含任何表。要创建表,您需要表的架构。如果您有更新的备份文件,那么您可以获得数据库的架构和名称。您可以使用相同的名称来创建表。但如果您没有备份,则可以使用 .frm 文件来提取表的架构。在线提供各种可靠的实用程序可以帮助您提取表架构。
-
现在使用相同的架构在新创建的数据库中创建表。
-
创建表后,它会自动在数据库文件夹中创建新的 .frm 和 .ibd 文件。
-
接下来,转到 XAMPP 安装文件夹并删除 .ibd 文件。
-
然后,复制原始 .ibd 文件并将其粘贴到新数据库中。
-
在复制原始 .ibd 文件之前,执行以下查询:
ALTER TABLE table_name DISCARD TABLESPACE;
注意:DISCARD TABLESPACE 命令将断开 MySQL 表和表空间之间的链接,从而有助于防止不一致和其他问题。 -
接下来,使用以下命令恢复 MySQL 表和表空间之间的链接:
ALTER TABLE 表名 IMPORT TABLESPACE;
注意:您可以使用 .frm 和 .ibd 文件一次从单个表恢复数据。如果您需要恢复多个表,那么将花费大量时间,因为您需要手动执行每个表的所有步骤。
恢复 InnoDB MySQL 表的替代解决方案
要快速、轻松地从 MySQL Server 数据库一次恢复多个 InnoDB 表,您可以使用专业的 MySQL 数据库恢复工具。 Stellar RepAIr for MySQL 就是这样一种易于使用的工具,它可以从损坏的 MySQL 数据库中恢复 InnoDB 表和其他数据,例如主键、视图、触发器等。该工具具有丰富的交互式用户界面,可帮助您通过几个简单的步骤快速执行修复和恢复操作。
Stellar Repair for MySQL 的主要特点
以下是 Stellar Repair for MySQL 的一些关键功能:
-
支持 MySQL Server 8.0.36 及更低版本
-
支持所有 MariaDB 版本直至 11.3.2
-
恢复 MySQL 数据库中的所有数据,包括删除的记录和分区表
-
完全精确地修复 MySQL 表
-
在保存之前提供修复数据的增强预览
-
允许一次修复多个数据库
-
允许您以多种格式保存修复的 MySQL 数据库,如 MySQL、MariaDB、SQL 脚本、CSV、HTML 和 XLS
-
兼容Windows和Linux操作系统,包括CentOS 7(64位)/ Red Hat Enterprise Linux 7(64位)和Ubuntu 16.04(32位和64位)/ Ubuntu 18.04和19.10(64 位)
结论
上面,我们解释了从 ibdata 和 .frm 文件恢复 InnoDB MySQL 表数据的详细分步过程。但是,这不适合恢复多个表,因为您需要为每个表手动执行所有步骤。或者,您可以使用专业的 MySQL 数据库恢复工具,例如 Stellar Repair for MySQL,它可以帮助您从损坏的数据库文件中完全完整地提取所有对象,包括表、主键、视图、触发器等。该工具支持修复使用 InnoDB 和 MyISAM 存储引擎创建的数据库。它旨在解决 MySQL 数据库中各种与损坏相关的错误。 Stellar Repair for MySQL 还提供免费演示版本,允许扫描数据库文件并预览可恢复的数据。