.frm是恢复表结构;.ibd是恢复表数据

(如果表结构是已知的,则可以直接跳过第一部分,从第二部分,恢复表数据开始看)

一、表结构恢复(.frm)

1.创建表,和要恢复的表同名(这里以tb_adm_info为例),字段随意,注意引擎要选择InnoDB(如果是利用建表工具,则在选项中可以看到引擎选择)

2.关闭mysql(我是去计算机管理里边关的),将要恢复的tb_adm_info.frm覆盖新创建的。

在mysql配置文件my.ini中添加下面语句:

innodb_force_recovery=6(只读模式)

然后重新启动mysql,通过desc tb_adm_info查看表的结构;然后报错如下图所示:

找不到数据表(这个先不用管它)

3.查看mysql文件目录下.err文件(在data文件里边)

找到报错信息:(刚刚自己创建的字段是1个,从报错信息可以看出,原表的字段是6个)

将mysql配置文件中innodb_force_recovery=6语句改为innodb_force_recovery=0或者删除掉(也就是把只读模式去掉),然后重新启动mysql 。删除(drop table tb_adm_info)刚刚创建的表并重新创建6个字段的表(仍需同名), 字段名仍随意,数量一致即可,注意引擎要选择InnoDB。

然后再关掉 mysql服务,重新添加只读模式参数(=6那个),覆盖.frm文件并重启,然后desc table就可以看到表结构啦

利用show create table tb_adm_info;来获取创建tb_adm_info的语句,保存起来待会要用

再次删除配置文件中的只读模式(=6那个),然后重启mysql,删除tb_adm_info表,利用前边show create table获取到的sql重新创建一下tb_adm_info表。

二、恢复表数据(.ibd)

1.恢复表数据需要首先将原先的.ibd文件与原先的.frm文件解除绑定,具体是执行下面命令:

alter table tb_adm_info discard tablespace;

此时可以看到data文件夹中的 tb_adm_info.ibd文件已经没了。

2.关闭数据库,将要恢复的tb_adm_info.ibd粘贴到data文件夹中,然后将其与 tb_adm_info.ifm进行绑定,具体是执行下面命令:(记得先打开mysql再去执行吼)

alter table tb_adm_info import tablespace;

此时如果出现以下错误信息:

这个错误信息是在数据库建表sql语句出错,就是恢复的数据与我们建立的表的row format不一致,我们重新将该表进行删除,然后待会在建表语句后加上ROW_FORMAT=COMPACT

首先在数据库中对该表进行删除操作,同时需要删除data文件里边的tb_adm_info.ibd,不删除,则会出现下边的错误。

重新执行sql语句

然后重复前面的操作,关闭mysql连接 --> 覆盖tb_adm_info.frm --> 连接mysql -->将.ibd与.frm进行解绑(alter table tb_adm_info discard tablespace;)--> 将要恢复的tb_adm_info.ibd粘贴到data文件夹 --> 绑定 (alter table tb_adm_info import tablespace;),最终数据恢复完成啦。

以上便是mysql根据.frm和.ibd文件恢复表结构和数据的整个流程了,哪里看不懂或者跟着操作出错或者文章哪里有写的不对的地方都可以评论留言吖~

mysql根据.frm和.ibd恢复数据相关推荐

  1. 利用.frm、.ibd恢复数据

    我们知道启用innodb_file_per_table选项后,单个表(InnoDB引擎)的数据和索引放入单独的文件中(.ibd),建表语句保存在.frm文件中 本文假设192.168.85.132,3 ...

  2. mysql frm和ibd怎么恢复数据库_mysql数据库通过frm和ibd恢复数据

    放在阿里云服务器上的一台Linux云服务器被挖矿了,一个开源系统demo演示网站被人上传违规信息,站点也被阿里云屏蔽了.准备迁移数据并重置服务器,匆忙之间拷贝了mysql/data目录下的数据文件就把 ...

  3. mysql ibd恢复数据_mysql文件损坏通过.ibd文件恢复数据

    前言: 笔者前两天云服务器上的mysql服务突然自己停止.报错日志一看出现自身bug导致服务启动不了. 当时和下面一样一脸懵逼.. 7fc84643f9023204c1ccf7f405e31f4c.j ...

  4. mysql没有开启binlog能恢复数据吗_神了!一个妹子 rm -rf 把公司整个数据库删没了......

    经历了两天不懈努力,终于恢复了一次误操作删除的生产服务器数据. 对本次事故过程和解决办法记录在此,警醒自己,也提示别人莫犯此错.也希望遇到问题的朋友能找到一丝灵感解决问题. 01事故背景 安排一个妹子 ...

  5. mysql没有开启binlog能恢复数据吗_一个妹纸rm -rf把公司整个数据库删没了...

    经历了两天不懈努力,终于恢复了一次误操作删除的生产服务器数据.对本次事故过程和解决办法记录在此,警醒自己,也提示别人莫犯此错.也希望遇到问题的朋友能找到一丝灵感解决问题. 事故背景 安排一个妹子在一台 ...

  6. mysql通过binlog日志来恢复数据

    简介 在生产的过程中有这么一个业务场景:比如我在2016-11-19 09:30:00 通过mysqldump的方式备份了数据库,但是在2016-11-19 10:30:00的时候数据库崩溃了,如果通 ...

  7. mysql数据库通过二进制 -【恢复数据记录】

    1.修改配置文件 vi /etc/my.cnflog-bin = binlog systemctl restart mysqld mysql -uroot -p123456 mysql> sho ...

  8. MySQL 5.6.26 通过frm ibd 恢复数据过程

    在A服务器上创建数据库yoon root(yoon)> show create table yoon\G *************************** 1. row ********* ...

  9. mysql从数据库误删.idb / .frm 文件,恢复数据方法

    MySQL 复制.idb / .frm 还原方式 1.主服务刷新日志 mysql> flush logs; 2.复制主服务器 /data/mysql/statistic 下全部文件到从服务器/d ...

最新文章

  1. 655. Print Binary Tree 解题报告(树)
  2. vue实现一个星级打分效果_五分钟用vue实现一个五星打分效果
  3. 小小的改进,逻辑运算
  4. Vmware中的centos虚拟机克隆之后没有eth0
  5. html手机端富文本,pc端富文本编辑的字符串在手机端适配
  6. 计算机快捷键屏幕保护是什么,电脑屏保快捷键.pptx
  7. ListView刷新时让Item不可点击
  8. 王道操作系统知识点总结
  9. MATLAB APP全局变量的使用
  10. 【python】只保留字符串中的英文字母
  11. FSR402电阻式薄膜压力传感器
  12. linux安装mysql deb_Ubuntu下通过deb的bundle文件安装MySQL
  13. facebook登陆接入
  14. 从html到pug模板,html 模板 pug
  15. lae界面开发工具入门之介绍十二--iOS系统如何编译打包?
  16. 数据库系统原理(BNU_党德鹏_慕课)超详细听课笔记
  17. 如何判断您是否需要新的iPhone电池
  18. 大家好,我是区块链本人。今天,我要给你们介绍我的家族。
  19. 神经网络基础05-注意力机制
  20. ChatGPT背后的经济账

热门文章

  1. ODL中RPC接口的restconf化原理
  2. 隐藏在教室里的“绝世高手”,直到毕业都没有发现?
  3. 30岁转行做平面设计合适吗?
  4. 颤抖吧!滴滴的绝地反击即将来袭
  5. cs有时说更新到10点,可登录游戏却是服务器维护中,绝地求生居然学起了CS?新开的游戏模式,中国玩家10年前就玩过!...
  6. 叔本华人生的智慧-没有真正的需求,就没有真正的乐趣
  7. 《机器学习实战》8.2 线性回归基础篇之预测鲍鱼年龄
  8. 大数据时代的商业智能
  9. Revit墙问题:系统自带幕墙偏移解决和墙翻模操作
  10. CubeSLAM: Monocular 3D Object SLAM 论文笔记