我正在尝试在PMA中还原数据库,但是只能访问frm和ibd文件,而不能访问我了解您需要的ib_log文件。

我知道我可能无法恢复数据库数据,但是可以从frm文件恢复表的结构吗?

最佳答案

我仅从.frm.idb文件还原了该表。

获取SQL查询以创建表

如果您已经知道表的架构,则可以跳过此步骤。

  • 首先,安装MySQL Utilities
    然后,您可以在命令提示符(cmd)中使用mysqlfrm命令。
  • 其次,使用.frm命令从mysqlfrm文件中获取SQL查询:
    mysqlfrm --diagnostic <path>/example_table.frm
    

  • 然后,您可以获取SQL查询以创建相同的结构化表。
    像这样:
    CREATE TABLE `example_table` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(150) NOT NULL,
      `photo_url` varchar(150) NOT NULL,
      `password` varchar(600) NOT NULL,
      `active` smallint(6) NOT NULL,
      `plan` int(11) NOT NULL,
    PRIMARY KEY `PRIMARY` (`id`)
    ) ENGINE=InnoDB;
    

    创建表

    使用上面的SQL查询创建表。

    如果旧数据仍然存在,则可能必须先删除相应的数据库和表。确保您已备份数据文件。

    恢复数据

    运行此查询以删除新的表数据:
    ALTER TABLE example_table DISCARD TABLESPACE;
    

    这将删除新的.frm文件和(新的,空的).idb文件之间的连接。同样,删除文件夹中的.idb文件。

    然后,将旧的.idb文件放入新文件夹,例如:
    cp backup/example_table.ibd <path>/example_table.idb
    

    确保.ibd用户可以读取mysql文件,例如通过运行文件夹中的chown -R mysql:mysql *.ibd

    运行此查询以导入旧数据:
    ALTER TABLE example_table IMPORT TABLESPACE;
    

    这将从.idb文件导入数据,并将恢复数据。

    关于mysql - 从frm和ibd文件还原表结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26868956/

    10-11 22:27
    查看更多