环境介绍:
mysql 独立存储空间,采用innodb引擎。
恢复分为两部分:数据结构和数据
我们可以拿到的文件只有数据库中的.idb 和.frm 文件,并没有ibdata 以及ib_logfile文件
第一、首先恢复数据结构
搭建相同的数据库环境,新建test数据库,新建一张表,表名和我们要恢复的表的名称一样;例如tbl_user

-- create table songlyric(id int);   //新建tbl_user表
-- 随后我们停止mysql服务,将备份出来的frm去覆盖新生成frm文件;同时修改my.ini文件配置innodb_force_recovery = 6;
-- 启动mysql服务,进入相应数据库 desc tbl_user; 会报错如下:ERROR 1146 (42S02):Table 'test.tbl_user' doesn't exsit--  查看mysql报错日志 会看到错误信息[Warning] InnoDB: Table test/tbl_user     contains 1 user defined columns in InnoDB,but 6 columns in Mysql.原因在于 要恢复的表中有6个字段,而我们创建的表只有一个字段。解决方案:停止mysql 服务 注释my.ini 配置文件中的innodb_force_recovery = 6,否则 你直接去删除表的话,会报错 read-only相关错误。删除后我们在重新创建6个字段的新表create table tbl_user(id int,id1 int,id2 int,id3 int,id4 int,id5 int);随之去掉配置文件的注释,重启 为确保万一 重新覆盖frm文件,完成后查看desc tbl_user;
----------desc tbl_user;CREATE TABLE `tbl_user` (`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '自增主键',`user_name` varchar(50) DEFAULT NULL COMMENT '用户账号',`password` varchar(32) DEFAULT NULL COMMENT '用户密码',`pass` varchar(50) DEFAULT NULL COMMENT '密码--非加密',`display_name` varchar(50) DEFAULT NULL COMMENT '显示名称,联系人',`profile_photo` varchar(512) DEFAULT NULL COMMENT '用户头像',PRIMARY KEY (`id`),UNIQUE KEY `user_name` (`user_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表' ROW_FORMAT=COMPACT;   //这里本身是没有的 ,后面恢复数据需要加上的

这里数据结构已恢复成功了,我们只需重建新表即可。


第二、恢复数据
恢复表数据需要首先将原先的.ibd文件与原先的.frm文件解除绑定,具体就是在控制台执行下面命令:

alter table tbl_user discard tablespace;
接着执行net stop mysql停掉服务,将需要恢复的tbl_user.ibd文件覆盖这个新建的huifu数据库的tbl_user表的物理文件tbl_user.ibd,
执行net start mysql开启服务。
将复制过来的tbl_user.ibd文件与tbl_user.frm文件发生联系。具体执行下面命令:
alter table tbl_user import tablespace; 这时候通过navicat查看数据表,你会发现数据已经成功恢复啦啦啦。
----------
在数据库下根据之前的建表语句创建表
alter table tbl_user import tablespace;
如果报错11:01:37    ALTER TABLE tbl import TABLESPACE    Error Code: 1808. Schema mismatch (Table has ROW_TYPE_DYNAMIC row format, .ibd file has ROW_TYPE_COMPACT row format.)    0.172 sec
则在建表语句后加上  ROW_FORMAT=COMPACT
这就是为什么在数据结构恢复后,建新表的时候加上ROW_FORMAT=COMPACT的原因

至此,数据恢复工作已经完成,感受就是数据库一定要有备份,否则出了问题很麻烦。虽然这次发生的情况是测试环境,但还是一个教训。
后面会尝试写个脚本自动回复,对于表数量小还好说,大的话 就不行了

针对mysql 5.7.20 数据恢复相关推荐

  1. Mysql价格降低20%应该怎么写_mysql优化20条原则

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...

  2. Asterisk针对Mysql的extconfig.conf配置

    Asterisk针对Mysql的extconfig.conf配置,这其中涉及到的表的structure [setting] sipusers => mysql,general,sip_buddi ...

  3. mysql 性能优化 20 条建议

    MySQL性能优化的最佳20+条经验 2009年11月27日陈皓发表评论阅读评论100,946 人阅读     今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库 ...

  4. python查询mysql数据库_python针对mysql数据库的连接、查询、更新、删除操作示例...

    本文实例讲述了python针对mysql数据库的连接.查询.更新.删除操作.分享给大家供大家参考,具体如下: 连接 一 代码 import pymysql # 打开数据库连接 db = pymysql ...

  5. mysql向表中插中文显示,针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决jav...

    针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决jav 针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决:java.sql.SQLException: Incorrect ...

  6. Mysql价格降低20%应该怎么写_mysql优化建议20条

    当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这 ...

  7. mysql 8.0.20修改不区分大小写

    mysql 8.0.20修改不区分大小写 针对linux 已完成安装的mysql 打开mysql配置文件 vim /etc/my.cnf 在尾部追加一行 lower_case_table_names= ...

  8. Centos6.0 64位MySQL 5.5.20 CMake 安装部署

    Centos6.0 64位下 MySQL 5.5.20 CMake 安装部署 一.下载所需软件 linux用 wget 下载需要的软件,保存到目录 /usr/local/src 下 wget ftp: ...

  9. linux mysql 5.7.20_linux MySQL 5.7.20安装教程

    安装MySQL 5.7.20 shell> cd /usr/local shell> groupadd mysql shell> useradd -g mysql mysql she ...

最新文章

  1. tomcat配置manager
  2. Git超实用总结,再也不怕记忆力不好了
  3. Config Sharepoint 2013 Workflow PowerShell Cmdlet
  4. Vim的一些使用技巧
  5. Linux 设备驱动开发 —— platform 设备驱动
  6. 区分关联、依赖和聚集关系
  7. python julian date_Python 的内嵌time模板翻译及说明
  8. 杭电 2015 偶数求和
  9. python3打包成exe运行 无法定位程度输入点_Pyinstaller递归错误解决方案
  10. 【2019-06-26】改变的开始
  11. 【包邮免费送】Python 全栈知识图谱
  12. 黑客雇佣组织开发出新型的Windows 隐秘后门
  13. 语音识别人工智能解决方案
  14. 计算机网络(第七版)思维导图
  15. vnc远程控制linux端口5901,VNC远程控制Linux
  16. zjnu 1779 KRUŽNICE(线段树成段更新+离散化)
  17. 移远BC28_opencpu方案_pin脚分配
  18. OnePlus一加手机:测试
  19. Quartus II下载器件库(新)
  20. 综述:重复经颅磁刺激rTMS对静息态功能连接的影响

热门文章

  1. 7.3国服人口最多的服务器,实时人口普查#71:恶魔猎手数据实装 成人口最多职业...
  2. laravel 图片上传
  3. C/C++:Ubuntu20.04报错:无法打开mysql/mysql.h
  4. 封面你来定,给《新程序员·云原生和全面数字化时代》选封面啦
  5. 6.29在网上看到的关于魔戒掉入火山后的恶搞
  6. 设计师2大必备HTML动画工具
  7. 刀剑封魔录java_刀剑封魔录之剑仙奇侠传
  8. python语言的编程模式是什么意思_编程语言Python,可以用来干什么
  9. [如何书写优雅的代码]有意义的命名
  10. “口袋小食” web 商城项目-栏目简介