mysql如何根据.frm.ibd如何修复innodb数据表

Posted ?SHCm4

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql如何根据.frm.ibd如何修复innodb数据表相关的知识,希望对你有一定的参考价值。

首先博主描述下自己的血泪史,我是在升级阿里云服务器的内核时,搞忘数据备份,导致mysql数据丢失,幸亏在当时升级之前复制了mysql的数据文件。

**两种引擎数据结构介绍:**

**innodb**数据表的源文件分两部分组成:**.frm   .ibd ;**

**mysiam**数据表的源文件分三部分组成:**.frm   .myd    .myi;**

> **inndob恢复方法:**
> 
> **1、**你首先要有 .frm,.ibd的文件。
> 
> **2、**在mysql中建一张表,要与你需要恢复的数据表,表结构需要完全一致。
> 
> **3、**先删除表数据,在mysql中运行: alter table `表名` discard tablespace ; 此时新建表的.ibd文件就被删除了。
> 
> **4、**关闭mysql。
> 
> **5、**将原数据的.ibd复制到对应的位置,mysql/data/db_name 数据库 文件夹 下。
> 
> **6、**加载 刚复制过来的ibd文件,在mysql表中运行: alter table `表名` import tablespace ; 此时.idb文件就被加载上了。
> 
> **7、**可以去查看数据表是否恢复了。
> 
> **8、**值得注意的是,如果你的数据表数据量比较大,那么很有可能在你加载ibd文件的过程中,mysql就死了。

> **mysiam恢复方法:** 
> 
> **1、**mysiam的恢复方法非常简单。
> 
> **2、**首先你需要有 .frm   .myd    .myi 三个文件,.frm(表结构)、.myd(数据)、.myi(表索引),将这三个文件复制到mysql/data/db_name 数据库 文件夹 下。
> 
> **3、**无需任何操作,打开你对应的数据库刷新,就可以看到数据表。

**参考链接:**

 **https://www.cnblogs.com/qinshuipo/p/10431575.html**

**https://www.cnblogs.com/moyui/articles/12493953.html** 

以上是关于mysql如何根据.frm.ibd如何修复innodb数据表的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 通过frm&ibd 恢复数据

Mysql 通过frm&ibd 恢复数据

Mysql 通过frm&ibd 恢复数据

RDS中的.frm和.ibd文件转换为sql文件

利用.frm.ibd恢复数据

记一次MySQL数据库恢复(附方案)