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文件了,按照网上的做法分如下两步来进行:一.找回表结构,二.找回数 ...
随机推荐
- Cesium应用篇:3控件(3)SelectionIndicator& InfoBox
假设这样一个场景,用户在Cesium球上加载了一个GeoJson文件(DataSource),里面是全美国所有州的Geometry信息(Entity),叠加到球面后,你自然会有一种冲动,点击某一个州, ...
- (二十)WebGIS中图层树功能的设计和实现
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 在GIS的桌面工具中,比如arcgis desktop或者S ...
- WIFI网络操作
WIFI网卡状态(不可用状态值为1,正在关闭值为0,可用状态值为3,正在打开值为2) WIFI网卡状态是由一系列的整型常量表示,这一系列的整型常量都存储于WifiManager的类中 1.WIFI_S ...
- SQL Server基础之存储过程
简单来说,存储过程就是一条或者多条sql语句的集合,可视为批处理文件,但是其作用不仅限于批处理.本篇主要介绍变量的使用,存储过程和存储函数的创建,调用,查看,修改以及删除操作. 一:存储过程概述 ...
- STM32Cube Uart_DMA测试工程
1.打开软件,新建工程,选择芯片信号,这里选择 2.USART1使能选择"Asynchronous"模式: 3.配置"RCC",High ...
- # ASP.NET Core依赖注入解读&使用Autofac替代实现
标签: 依赖注入 Autofac ASPNETCore ASP.NET Core依赖注入解读&使用Autofac替代实现 1. 前言 2. ASP.NET Core 中的DI方式 3. Aut ...
- WCF服务自我寄宿 Windows服务
WCF寄宿有自我寄宿跟IIS寄宿 服务代码: [ServiceContract] ---服务契约 public interface ICustomerService { [OperationContr ...
- Android Studio实现APK的更新、下载、安装
先不讲那么多看效果图: 下面来讲解一些更新CODE,原理大家都知道,不废话,直接上代码.里面有一些是我自己做的测试例子,所以大家可以直接删掉就好了 第一个:activity_main.xml < ...
- Git避免输入用户名和密码
1. 在系统盘/用户/用户名目录下新建名为 _netrc 的文件: 2. 修改 _netrc 文件内容为“ machine git.mangning.comlogin xxxpassword xxx ...
- ffmpeg实现dxva2硬件加速
这几天在做dxva2硬件加速,找不到什么资料,翻译了一下微软的两篇相关文档.这是第二篇,记录用ffmpeg实现dxva2. 第一篇翻译的Direct3D device manager,链接:http: ...