作者:姚远

专注于 Oracle、MySQL 数据库多年,Oracle 10G 和 12C OCM,MySQL 5.6 ,5.7,8.0 OCP。现在鼎甲科技任顾问,为同事和客户提高数据库培训和技术支持服务。

本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

背景

很多时候因为 MySQL 数据库不能启动而造成数据无法访问,但应用的数据通常没有丢失,只是系统表空间等其它文件损坏了,或者遇到 MySQL 的 bug。这个时候如果没有备份,很多人就以为数据丢失了,但实际上大部分时候数据还是有救的。对于 MyISAM 引擎的表空间,直接把对应的数据文件拷贝到一个新的数据库就行了,数据就可以恢复了。对于 InnoDB 引擎的数据库表空间可以采用传输表空间的方式把数据救回来。

创建已经丢失的表结构

先要安装 mysql-utilities。

// RedHatyum -y install mysql-server mysql-utilities// Debianapt install mysql-utilities

使用 mysqlfrm 从 .frm 文件里面找回建表语句。

// 分析一个 .frm 文件生成建表的语句mysqlfrm --diagnostic /var/lib/mysql/test/t1.frm// 分析一个目录下的全部.frm文件生成建表语句root@username:~# mysqlfrm --diagnostic /var/lib/mysql/my_db/bk/ >createtb.sqlroot@username:~# grep "^CREATE TABLE" createtb.sql |wc -l124

可以看到一共生成了 124 个建表语句。

有很多时候也可以从其它库里面生成建表语句,如同一个应用的其它数据库或不同的测试环境,采用下面的 mysqldump 生成建表语句:

mysqldump --no-data --compact my_db>createtb.sql

登录 MySQL 生成表。

mysql> create database my_db;mysql> use my_dbDatabase changedmysql> source createtb.sqlQuery OK, 0 rows affected (0.07 sec)......

导入旧的数据文件

将新建的没有包括数据的 .ibd 文件抛弃

root@username:/var/lib/mysql/my_db# ll *.ibd|wc12411167941root@username:/var/lib/mysql/my_db# mysql -e "show tables from my_db" \| grep -v Tables_in_my_db \| while read a; do mysql -e "ALTER TABLE my_db.$a DISCARD TABLESPACE"; doneroot@username:/var/lib/mysql/my_db# ll *.ibd|wcls: cannot access '*.ibd': No such file or directory000

可以看到所有的 .idb 文件都已经被抛弃了。然后把旧的有数据的 .ibd 文件拷贝到这个 my_db 目录下面,别忘了把属主改过来:chown mysql. *,再把这些数据文件 import 到数据库中。

root@username:/var/lib/mysql/my_db# mysql -e "show tables from my_db" \| grep -v Tables_in_my_db \| while read a; \do mysql -e "ALTER TABLE my_db.$a import TABLESPACE"; done

导入完成后检查表

使用 mysqlcheck 对数据库 my_db 下的所有表进行检查:

root@username:/var/lib/mysql/my_db# mysqlcheck -c my_dbmy_db.cdp_backup_point OK......

所有的表都导入成功。

mysql只有frm_MySQL只有.frm和.ibd文件如何批量恢复InnoDB表-爱可生相关推荐

  1. mysql 还原 批量ibd_MySQL只有.frm和.ibd文件如何批量恢复InnoDB表-爱可生

    作者:姚远 专注于 Oracle.MySQL 数据库多年,Oracle 10G 和 12C OCM,MySQL 5.6 ,5.7,8.0 OCP.现在鼎甲科技任顾问,为同事和客户提高数据库培训和技术支 ...

  2. MySQL 5.7 通过frm和ibd文件恢复数据

    MySQL 5.7 通过解析frm和ibd文件恢复数据 .frm文件存储表结构 .ibd文件存储数据 以恢复表IP_PATENT_APPLICANT_LIST为例, 有待恢复表文件IP_PATENT_ ...

  3. 宝塔面板使用.frm与.ibd文件恢复Mysql数据

    写这篇文章我是非常不情愿的,我现在是在写这篇文章,但是同时我也在恢复我服务器数据库的数据,出这篇文章也是在我的意料之外,由于我正在这件事类,我就出一版这样的mysql.frm.ibd文件数据恢复教程, ...

  4. mysql innodb引擎丢失_【MySQL】InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据...

    注意!此方法只适用于innodb_file_per_table独立表空间的InnoDB实例. 此种方法可以恢复ibdata文件被误删.被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所 ...

  5. mysql怎么通过frm和ibd文件还原数据

    1.找回表结构,如果表结构没有丢失直接到下一步 a.先创建一个数据库,这个数据库必须是没有表和任何操作的. b.创建一个表结构,和要恢复的表名是一样的.表里的字段无所谓.一定要是innodb引擎的.C ...

  6. mysql innodb ibd_MySQL innodb引擎下根据.frm和.ibd文件恢复表结构和数据

    记录通过.frm和.ibd文件恢复数据到本地 .frm文件:保存了每个表的元数据,包括表结构的定义等: .ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per ...

  7. frm ibd文件导入mysql_Mariadb,Mysql如何根据.frm和.ibd文件来恢复数据和表结构

    废话不多说直接进入正题,Mariadb,Mysql根据.frm和.ibd文件来恢复数据和表结构,大体分为三个步骤: 1.创建表结构 2.导入表结构 3.恢复表数据 接下来,我们按照这三个步骤一步一步恢 ...

  8. mysql ibd frm文件_Mariadb,Mysql如何根据.frm和.ibd文件来恢复数据和表结构

    废话不多说直接进入正题,Mariadb,Mysql根据.frm和.ibd文件来恢复数据和表结构,大体分为三个步骤: 1.创建表结构 2.导入表结构 3.恢复表数据 接下来,我们按照这三个步骤一步一步恢 ...

  9. frm文件导入mysql5.7_使用frm,ibd文件恢复数据库文件,mysql5.7.31,centos7.5,20200813...

    使用frm,ibd文件恢复数据库文件共有3步,安装数据库,恢复表结构,恢复表数据 我实操的软件版本,mysql5.7.31,centos7.5,20200813,数据库展开597MB 一,安装数据库 ...

  10. MySQL数据恢复(通过.frm和.idb文件)

    转载自:https://www.2cto.com/database/201709/683413.html 今天吐血向大家分享下mysql通过.frm和.ibd文件恢复数据的方法,因为之前电脑换系统的原 ...

最新文章

  1. android 获取手机GSM/CDMA信号信息,并获得基站信息
  2. Python读取excel文件可读取xlsx格式和xls格式可直接读取超链接,读出为字典格式(列表套字典),处理合并单元格的问题
  3. Effective Java之EnumMap代替序数索引(三十三)
  4. 什么是51%算力攻击?——区块链系列学习笔记
  5. java中想要保留2位小数_java使double保留两位小数的多方法 java保留两位小数
  6. 【mac】vmware tools 在菜单上显示灰色无法安装的问题
  7. 猫眼娱乐上市首日破发 收盘价14.64港元
  8. 如何给小朋友解释单摆运动_法国教育学者:如何培养儿童的逻辑思维和时间观念...
  9. C++ STL源码剖析之哈希表
  10. python清空屏幕代码_python代码怎样清屏
  11. PID控制的现象与本质
  12. 加拿大-渥太华大学-轴承数据-不同转速
  13. java的cursor_JAVA中类 Cursor的定义.
  14. 海康威视OCR/表格识别开源
  15. 从零开始学MATLAB(一)MATLAB基础知识
  16. hazelcast java_Hazelcast
  17. MAP实现一个key,对应多个Value值。
  18. 求菲波那切数列第n项
  19. 机器人系统常用仿真软件介绍效果与评价指标
  20. 采坑系列:Waves MaxxAudio Pro无法正常启动,插入耳机窗口闪过,耳机没声音

热门文章

  1. 腾讯互娱推出 PGOS 提供 Serverless 游戏上云
  2. 历尽磨难,探索未来生活的2014年
  3. Web与小程序AR技术原理
  4. 树莓派如何接硬盘_树莓派3 挂载外接硬盘
  5. 关于“外接硬盘被写了保护的解决方法”
  6. 微信程序开发系列教程(四)使用微信API创建公众号自定义菜单
  7. C++ 逻辑与或非 逻辑与逻辑或 逻辑非
  8. C语言10.10,查找英文的星期几
  9. macOS的计时器:Clocker for Mac
  10. python如何翻译成中文的代码-Python实现中文数字转换为阿拉伯数字的方法示例