MySQL frm+ibd文件还原data的办法【数据恢复】
MySQL frm+ibd文件还原data的办法【数据恢复】
此方法只适合innodb_file_per_table = 1
当误删除ibdata 该怎么办? 如下步骤即可恢复:
1、准备工作
1)准备一台纯洁的mysql环境【从启动到现在没有使用过INNODB的表结构的mysql环境】(当然也可以不用纯洁的,但是一定要保证表id 小于后续要恢复的表id);
2)备份frm、ibd文件;
2、通过frm恢复表结构
1)在测试库里新建任意一表,表结构随意,表名必须为:要恢复数据的表名【即为frm前缀名】
例如:CREATE TABLE five_monitor (id int(11) NOT NULL ) ENGINE=InnoDB ;
2)关闭mysql
3)用需要恢复的frm文件直接替换测试库刚新建的frm文件;
4)在配置文件里添加innodb_force_recovery = 6,然后启动;
5)show create table five_monitor;即能看到你需要的表结构信息了;
6)然后去掉innodb_force_recovery = 6 设置,重启mysql为下一步做准备;
3、通过ibd恢复表数据
1)查看表的space id(http://haildb.sourcearchive.com/ ... 0fil_8h_source.html 00118有说明)
a: hexdump -C five_monitor.ibd |head -n 3 |tail -n 1|awk '{print $6$7}‘
b: 通过以上结果到mysql里面去转成10进制:select conv('67c0',16,10);
说明space id为:26560
2)新建innodb表补充ibdata里面的table id
如果想看到ibd里面的数据,我们必须让space id 与刚启动的mysql ibdata里面的记录的表id一致;
新建一个表innodb,ibdata里面的表id就会+1,而刚才已经新建过表了,所以id已经+1了
故我们还需要新建26560-1(刚才新建的)-1(要恢复的表)=26558个表
for i in `seq 0 26557`; do mysql --user=××× ××××× -e "CREATE TABLE
iinser$i (id bigint(20) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id))
ENGINE=innodb "; done
3)导入要恢复的表
a:在另外一个测试库里按照第2步导出的表结构新建表;
b:alter table five_monitor discard tablespace;
c:cp 要恢复的ibd 到刚建的表的目录里,并修改mysql权限
d:alter table five_monitor import tablespace;
4)在配置文件里添加innodb_force_recovery = 6,然后启动;
这样你就能看到你想要的数据了。当然一定要通过dump 或者select * from into outfile把data导出;
MySQL frm+ibd文件还原data的办法【数据恢复】的更多相关文章
- mysql通过frm+ibd文件还原data
此方法只适合innodb_file_per_table = 1 当误删除ibdata 该怎么办? 如下步骤即可恢复: 1.准备工作 1)准备一台纯洁的mysql环境[从启动到现在没有 ...
- mysql 之 frm+ibd文件还原data
此方法只适合innodb_file_per_table = 1 当误删除ibdata 该怎么办? 如下步骤即可恢复: 1.准备工作 1)准备一台纯洁的mysql环境[从启动到现在 ...
- mysql frm的恢复,data里只有frm文件的恢复
mysql frm的恢复,data里只有frm文件的恢复 mysql frm的恢复,data里只有frm文件的恢复,换了系统,装了windows2003,重装最新5.4版的mysql,把原来的一个数据 ...
- mysql ibd 文件还原数据
-- 这里要还原的表名为 test_table -- 1建库,并选中库,库名随意 -- 2查看InnoDB 引擎独立表空间是否开启 SHOW VARIABLES LIKE '%per_table%' ...
- MySQL 通过.frm文件和.ibd文件实现InnoDB引擎的数据恢复
起因是这样的,公司的领导表示说服务器崩了,修理好之后,只剩下数据库目录下的物理文件(即.frm文件与.ibd文件).然后,整了一份压缩包给我,叫我瞅一下能不能把数据恢复出来.我当场愣了一下,这都啥文件 ...
- MySQL从.ibd文件中恢复数据
首先,在MySQL命令行下执行如下命令可以查看MySQL中存放数据的位置: show global variables like "%datadir%"; 我这里的执行结果: +- ...
- mysql恢复ibd文件
1.将原表删除,包括ibd和frm文件 2.重新创建表结构. 3.丢弃表空间 alter table tableName discard tablespace; 4.将要恢复的ibd文件拷贝到数据库目 ...
- 使用innobackupex进行mysql的差异备份还原和延迟复制
使用innobackupex进行mysql的差异备份还原和延迟复制 背景: 有同事执行update语句没有添加where条件,导致大量脏数据,需要将这张表恢复到前一天 数据库上有备份,每周一次完整备份 ...
- MYSQL数据库根据data文件中的.frm和ibd文件恢复单表数据
数据库误操作,把表的字段删除了,关键是被删除的字段的数据很重要,现在想要恢复数据,下面说说是怎么操作的. 数据库只剩.frm和.ibd文件了,按照网上的做法分如下两步来进行:一.找回表结构,二.找回数 ...
随机推荐
- 整数压缩编码 ZigZag
在分析Avro源码时,发现Avro为了对int.long类型数据压缩,采用Protocol Buffers的ZigZag编码(Thrift也采用了ZigZag来压缩整数). 1. 补码编码 为了便于后 ...
- 在SQL Serve里停用行和页层级锁
今天我想谈下SQL Server里另一个非常有趣的话题:在SQL Server里停用行和页层级锁.在SQL Server里,每次你重建一个索引,你可以使用ALLOW_ROW_LOCKS 和ALLOW_ ...
- GitHub托管BootStrap资源汇总(持续更新中…)
Twitter BootStrap已经火过大江南北,对于无法依赖美工的程序员来说,这一成熟前卫的前端框架简直就一神器,轻轻松松地实现出专业的UI效果.GitHub上相关的的开源项目更是层出不穷,在此整 ...
- [Web API] Web API 2 深入系列(3) 激活HttpController
目录 HttpController 创建HttpController IAssembliesResolver IHttpControllerTypeResolver HttpControllerTyp ...
- 异步编程系列第05章 Await究竟做了什么?
p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...
- SQL Server 2005 数据库 可疑状态
KJDY数据库名称 ALTER DATABASE KJDY SET EMERGENCY ---修改数据库为 紧急模式 ALTER DATABASE KJDY SET SINGLE_USER ---单用 ...
- php实现设计模式之 单例模式
<?php /*单例模式:作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例.(创建型模式) * * */ class singleton{ pr ...
- ASP.NET MVC搭建项目后台UI框架—9、服务器端排序
ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NET M ...
- Sqlserver 中系统表sysobjects、syscolumns以及函数object_id
1.sysobjects 系统对象表. 保存当前数据库的对象,如约束.默认值.日志.规则.存储过程等 sysobjects 重要字段解释: sysObjects ( Name sysname, --o ...
- vs2012使用64位IIS EXPRESS调试
使用Visual Studio 2012开发网站或web应用程序时,可以使用两种web server.自带的development server和IIS EXPRESS.development ser ...