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数据表的主要内容,如果未能解决你的问题,请参考以下文章