文件修复

如何从。frm和。ibd文件恢复数据

简介:在某些情况下(如MySQL服务器崩溃、硬件故障或其他)导致数据库损坏和数据丢失,您可以从. frm和. ibd文件中恢复数据。它还建议使用专门的MySQL修复工具来从损坏的数据文件中恢复数据库和所有数据。

免费下载
免费下载
目录表

从。frm和。ibd文件中恢复数据的步骤
  • 创建MySQL数据库并重新创建表
  • 查找表模式
  • 重新创建数据库表
  • 删除新的。ibd文件
  • 复制旧的。ibd文件
  • 导入表空间
  • 从。frm和。ibd文件恢复数据的更好选择

    使用InnoDB存储引擎时,MySQL Server使用。frm文件存储表模式,使用。ibd文件存储MySQL数据库的数据和索引。在意外删除数据或MySQL数据库损坏的情况下,可以从. frm和. ibd文件恢复数据。

    如果您有一个模式备份,您可以使用在线可用的实用程序从. frm文件中提取模式。

    从。frm和。ibd文件恢复数据的步骤

    步骤1 -创建MySQL数据库并重新创建表

    注意:这里我们将使用phpMyAdmin来创建MySQL数据库。

    • 登录到phpMyAdmin。
    • 输入数据库名称(例如employee)并单击Create。这将创建一个名为employee的数据库。

    phpMyAdmin面板

    • 导航到MySQL数据库所在的路径,您可以看到新添加的数据库。但是,数据库将没有任何. frm和. ibd文件。在我们的例子中,数据库可以在C:\xampp\mysql\data中找到,但路径可能会根据您用来访问mysql数据库的web工具而有所不同。

    mysql-database-path

    • 打开' employee '数据库,您可以看到其中没有表。

    mysql表

    步骤2 -查找表模式

    注意:如果表模式可用,则跳到下一步。

    如果你没有表格模式,下载MySQL公用事业。由Oracle发布的MySQL实用程序包含一组脚本,可以轻松地执行一些常见的DBA任务。Mysqlfrm是实用程序中的工具之一,您可以使用它来恢复表结构。

    下载工具后,执行如下命令查找数据库模式。

    mysql。——诊断路径文件名

    这个命令一个字节一个字节地从.frm文件中读取所有信息,而不需要MySQL实例。

    注意:虽然此方法对于从损坏的. frm文件中检索数据很有用,但它可能无法恢复所有数据。要恢复排序规则或字符集,您需要运行以下命令从.FRM文件中恢复信息:

    Mysqlfrm——server=root@127.0.0.1——port 3307 ./filename.frm

    步骤3 -重新创建数据库表

    在新创建的数据库(在本例中为employee)中,使用步骤2中生成的脚本创建一个新表。执行该脚本将在数据库数据文件夹中创建一个新的. frm和. ibd文件。

    步骤4 -删除新的。ibd文件

    删除“。ibd”文件。

    删除表空间

    该命令断开MySQL和表空间之间的链接,以删除. ibd文件。

    步骤5 -复制旧的。ibd文件

    现在,将原始的. ibd文件复制到新数据库中。

    步骤6—导入表空间

    通过执行以下命令恢复MySQL表和表空间之间的链接:

    导入表空间

    这些步骤将帮助您从. frm和. ibd文件中恢复数据。但是,它也有一定的缺点:

    • 您需要手动执行每个表的所有步骤来恢复MySQL数据库;这可能会花费很多时间。
    • 使用mysqlfrom提取CREATE TABLE定义可能导致模式不匹配。
    • mysqlfromm无法检索AI数字序列和FK约束。

    从。frm和。ibd文件恢复数据的更好选择

    使用专业的MySQL修复工具,如Stellar repair for MySQL,提供了一个更容易的选择,以最小的停机时间恢复数据库和所有数据。此外,该软件可以在不修改表模式的情况下恢复数据。frm和。ibd文件。您可以通过下载软件的演示版本来验证保存前的数据。

    免费下载


    常见问题解答

    Q.当试图删除。ibd文件时,我得到一个错误“此操作无法完成,因为文件在…”请帮我修一下。

    A.如果你试图删除的. ibd文件已经在使用,你会得到这样的错误。要修复该错误,请关闭MySQL服务,删除该文件,然后重新启动MySQL服务。

    问:我用mysqlfrom工具恢复了一个表的CREATE TABLE语句。通过执行CREATE语句,我能够重新创建表结构,删除. ibd文件,并复制旧的. ibd文件。但是,当尝试导入表空间时,表模式不匹配。我能做什么来解决这个问题?

    A.在CREATE TABLE查询的末尾添加“ROW_FORMAT=compact”来解决这个问题。

    进步
    75% 很多人觉得这篇文章很有帮助

    • 我们符合iso 27001标准
    • 我们符合iso 9001标准
    • NIST
    • HIPAA验证