背景:因为机器损坏,数据库的索引文件什么的都损坏了。只留下了一个mysql的data目录…

此方法恢复数据的前提:建表用的innodb索引
 
备注:如果mysql的目录还都在,可以先尝试,将mysql下的目录都拷贝到一个新mysql目录下,启动看看能不能用,不能用后再尝试下面方法
 
mysql会有一个data目录存储表结构和表数据。下面的目录结构大概如下:
ib_logfile0
ib_logfile1
ibdata1
ibtmp1
xx数据库1
xx数据库2
 
每个数据库目录下面的表内容如下:
表1.frm
表1.ibd
表2.frm
表2.ibd
.frm文件:表结构文件
.ibd文件:表数据文件
 

下面为恢复数据方法

备注:这里假设要备注的库名为db1,表名为table1

1、先备份要恢复数据的表文件

table1.frm和table1.ibd文件
 
可以直接把原数据库的data目录整个拷贝过来,如果指定了data目录可以通过查看mysql的进程看到具体配置位置

2、新搭建一个mysql

我用的5.7,搭建在mac本地

3、将mysql下的log文件删除,不要保留和要备份的库相同的内容

如果你是完全新建的一个数据库,和原来的库表完全无关,可以忽略这步骤
 
rm -rf /usr/local/mysql/data/ib_logfile0
rm -rf /usr/local/mysql/data/ib_logfile1
rm -rf /usr/local/mysql/data/ibdata1
rm -rf /usr/local/mysql/data/btmp1
rm -rf /usr/local/mysql/data/db1

4、新建数据库

链接上mysql命令行
create database db1;
 

5、通过命令行新建原来的表,

注意,一定在建表命令后加【ROW_FORMAT=COMPACT】防止冲突

例如:
DROP TABLE IF EXISTS `table1`;
CREATE TABLE `table1` (
`name` varchar(200) NOT NULL DEFAULT '' COMMENT 'key值',
`value` varchar(500) DEFAULT NULL COMMENT 'value值',
`desc` varchar(500) DEFAULT NULL COMMENT '关于当前key的描述信息',
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
 
如果不记得表结构了,可以先参考下面的文章找回表结构,dump出sql结构后获得创建表的语句:

6、将新建的表DISCARD掉

命令行执行:
ALTER TABLE table1 DISCARD TABLESPACE;

7、将备份的源表数据文件.ibd拷贝过来

将.ibd文件放到新数据库的data目录下,覆盖刚创建表时新生成的.ibd文件
 
即/usr/local/mysql/data/db1/下

8、将拷贝过来的.ibd表数据导入进来

ALTER TABLE  `table1` IMPORT TABLESPACE;
 
然后数据就恢复啦~~
 
 

通过.ibd和.frm恢复mysql数据的更多相关文章

  1. 通过.frm和.ibd恢复mysql数据

    .frm文件:保存了每个表的元数据,包括表结构的定义等: .ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索 ...

  2. linux 通过scp 复制备份恢复mysql数据表

    最近客户有个需求,小弟对于运维的东西也是半瓶醋,所以就果断的摸索了下.折磨了一个晚上终于算是搞定了.因为是两个不同的服务器,本来想用ftp,无奈小弟不是很熟悉,所以就用了scp,但是scp有个问题就是 ...

  3. 使用xb文件恢复mysql数据

    1.安装工具Percona XtraBackup MySQL 5.6及之前的版本需要安装 Percona XtraBackup 2.3,安装指导请参见官方文档Percona XtraBackup 2. ...

  4. 实战演习:mysqlbinlog恢复bin-log数据

    mysqlbinlog恢复bin-log数据 Binlog日志即binary log,是二进制日志文件,有两个作用,一个是增量备份,另一个是主从复制,即从节点同步主节点数据时获取的即是bin-log, ...

  5. mysql中的data下的数据文件(.FRM、.MYD、.MYI)恢复为数据

    记一次mysql中的data文件操作经历 想拿到一个项目的最新的数据,做功能升级使用,备份一份数据同时也作为本地测试数据,文件有些大,我直接通过远程的phpmyadmin程序导出,不能愉快的玩耍,直接 ...

  6. Linux 文件系统引起的云盘文件系统异常导致 MySQL 数据页损坏事故恢复复盘

    事故的起因是因为当我访问某个数据库的某个表的时候,MySQL 立即出现崩溃并且去查看 MySQL 的错误日志出现类似信息 --09T05::.232564Z [ERROR] InnoDB: Space ...

  7. 烂泥:通过binlog恢复mysql备份之前的数据

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 上一篇文章,我们讲解了如何通过mysql的binlog日志恢复mysql数据库,文章连接为<烂泥:通过binlog恢复mysql数据库>.其 ...

  8. 如何通过Mysql的二进制日志恢复数据库数据

    经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响.所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlo ...

  9. Centos中MySQL数据的备份和恢复

    1.MySQL数据备份 MySQL在Centos备份中用到了mysqldump这个文件,首先得把它找出来: [root@instance-3snz20bz ~]# whereis mysqldump ...

随机推荐

  1. MapperScan和ComponentScan同时使用问题

    @MapperScan:1.首先了解@Mapper    在接口上添加了@Mapper,在编译之后就会生成相应的接口实现类.    不过需要在每个接口上面进行配置,为了简化开发,就有了 @Mapper ...

  2. qt5程序打包含qml

    Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行. 因此 Qt 官方开发环境里自带了一 ...

  3. Windows7环境下Excel2010中图片超链接默认打开程序修改

    在Windows7的环境下,打开Excel2010超链接图片,都是默认用IE打开.搜索了所有的中文网络,没有找到解决方案,且发现受此困扰的人不少.后来用纯英文搜索,终于找到解决方案并尝试成功. 1,操 ...

  4. (转)Windows 平台下解决httpd.exe: syntax error on line 39

    近来在研究PHP,结果为了Apache的安装伤神不已...小白我在安装后,启动Apache的服务虽然可以,不过,在Apache sevice monitor 中启动services时就会出现如下的问题 ...

  5. 操作系统实现线程的几种模式 和 java创建线程的3个方式

    操作系统实现线程的几种模式 和 java创建线程的3个方式  这是两个概念 在操作系统中,线程可以实现在用户模式下,也可以实现在内核模式下,也可以两者结合实现. 1.实现线程的三种方式: (1)继承t ...

  6. 软件推荐----数据库数据处理Navicat Premium

    一般情况下,企业对数据库的管控很严,通常管控分成以下: 对整台服务器管理权限,如:操作系统Administrator+SA 对单个数据库(Oracle的表空间)完全权限,如:SQL DB_Owner ...

  7. Android给控件添加默认点击效果

    Android控件点击效果 Android中Button控件是有点击效果的,但是像TextView.ImageView.各种Layout是没有点击效果的,给TextView设置点击事件后,加个点击效果 ...

  8. hashcode()和equals()

    一.equal()方法 Object类中equals()方法实现如下: public boolean equals(Object obj) { return (this == obj); } 通过该实 ...

  9. windows下nginx的安装及使用(转载)

    转载自:https://www.cnblogs.com/jiangwangxiang/p/8481661.html 1.下载nginx http://nginx.org/en/download.htm ...

  10. [论文阅读]Object detection at 200 Frames Per Second

    本文提出了一个有效且快速的目标检测器,该目标检测器得速度可以达到200+fps,在Pascal VOC-2007上的mAP比Tiny-Yolo-v2高出14. 本文从以下三个方面对网络进行改进. 网络 ...