亲测,不清楚表结构的情况下,从.frm和.ibd文件中恢复数据,导入MySQL数据库成功。

亲测,不清楚表结构的情况下,从.frm和.ibd文件中恢复数据,导入MySQL数据库成功。

废话不说,直接上手。

前言:.frm 表结构

​ .ibd 数据文件和索引

任务说明:比如我们手上有bilibili.frm和bilibili.ibd文件,我们不知道表结构,但是我们想要恢复数据。

简略步骤

  1. 建立一个数据库

  2. 恢复表结构,并建表。

  3. 恢复数据

    1. 解除.frm文件和生成的.ibd文件的关联
    2. 重启数据库
    3. 将需要恢复的.ibd文件覆盖原有的.ibd文件。(覆盖说明应该是同名)
    4. 讲表和和生成的.ibd文件的关联
    5. 数据恢复。

详细步骤:

  1. 为了恢复表结构(知道表结构直接跳到第5步),我们需要下载mysql-utilities-1.6.5。地址:https://downloads.mysql.com/archives/utilities/

  2. 直接双击安装上述软件安装包安装。

  3. 运行该软件。

  4. 恢复表结构 。执行语句 mysqlfrm --diagnostic 路径/xxx.frm 路径就是文件位置

    1. 比如我们执行 mysqlfrm --diagnostic 路径/bilibili.frm 就能得到建表语句,删除语句中涉及到的文件路径。
  5. 至此,我们已经恢复了表结构,开始恢复数据。

    恢复数据下面几步:

    1. 执行建表语句,建表。
    2. 会发现数据库安装目录下data/数据库名/下面生成了一个文件bilibili001546.ibd文件(假设是这个文件名)
    3. 恢复表数据需要首先将原先的.ibd文件与原先的.frm文件解除绑定,具体就是在控制台执行下面命令:
      1. use databasename(数据库名) 比如:use hehe;
      2. alter table tablename(表名) discard tablespace; 比如 alter table bilibili discard tablespace;
    4. 接着执行net stop mysql停掉服务,将需要恢复的bilibili.ibd文件覆盖这个新建的hehe数据库的bilibili表的物理文件bilibili001546.ibd(记得一定要改成对应的名字,比如这里就不是bilibili.ibd,而是bilibili001546.ibd),执行net start mysql开启服务。
    5. 将复制过来的****.ibd文件与***.frm文件发生联系。具体执行下面命令:
      alter table tablename(表名) import tablespace;
    6. 数据恢复成功。

注意点:

  1. 你想要恢复的表名要和你之前的表名一样,一般来讲,.frm文件的名字就是表名。
  2. 恢复表结构时得到了建表语句,记得语句中的路径,同时执行建表后,会在你的数据库安装目标 的data/数据库名/下生成一个.ibd文件,将需要恢复的.ibd文件覆盖掉这个文件,可能名字不一样,一定要改成生成的.ibd文件的名字!!!!!一定要改成生成的.ibd文件的名字!!!!!一定要改成生成的.ibd文件的名字!!!!!因为是覆盖,而不是删除再复制进去!!!
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值