当我们忘记做全量备份时,并且没有开启binlog,并执行了 deletefromsbtest; 数据全部丢失,要想恢复是很有难度的。 今天,利用Percona Data Recovery Tool for InnoDB工具 (仅支持InnoDB,MyISAM不支持) ,可以找回被删除的数据。 原理:在InnoDB引擎,del

当我们忘记做全量备份时,并且没有开启binlog,并执行了delete from sbtest;

数据全部丢失,要想恢复是很有难度的。

今天,利用Percona Data Recovery Tool for InnoDB工具(仅支持InnoDB,MyISAM不支持),可以找回被删除的数据。

原理:在InnoDB引擎,delete删除操作,不是真正的删除物理文件上的行,而是增加一个删除的标记,我们都用过WORD吧?在修改字体的时候,有一个删除线的标记,如《MySQL 管理之道》,该工具利用这个特性,找回那些标注了删除线的数据,并存入到一个文本里,然后通过load data命令,批量插入到表里。

注:truncate不能恢复(truncate是直接清空数据行,并不是添加删除标记,你可以通过查看物理文件,执行了truncate操作,ibd文件变小,而执行了delete操作,ibd文件还跟之前的一样大),drop不能恢复(数据文件都没了,还怎么恢复?)。

一、安装Percona Data Recovery Tool for InnoDB工具

# wget https://launchpad.net/percona-data-recovery-tool-for-innodb/trunk/release-0.5/+download/percona-data-recovery-tool-for-innodb-0.5.tar.gz# cd percona-data-recovery-tool-for-innodb-0.5/mysql-source

# ./configure

# cd ..

# make

二、全表删除sbtest表delete from sbtest;

三、恢复

1、提取ibd物理文件,按照每页16K,单独存放。# cd percona-data-recovery-tool-for-innodb-0.5/

# ./page_parser -5 -f /usr/local/mysql-5.5.37/data/test/sbtest.ibd

会在当前目录生成一个pages-1410414511目录(后面的数字是变化的,在你的机器上会跟我的不同)

在FIL_PAGE_INDEX目录下面,会生成主键和索引,数据最小的是主键,后面依次是每个列的索引

在这里,0-28是sbtest表的主键(id),0-29是sbtest表的索引(k)。记住这个目录数字,后面我们需要通过这个目录恢复数据。

2、生成表结构# cd percona-data-recovery-tool-for-innodb-0.5/

# ./create_defs.pl --host localhost --port 3306 --user root --password 123456 --db test --table sbtest > include/table_defs.h

-- host 主机地址

-- port 端口

-- user 用户名

-- password 密码

-- db 数据库名

-- table 表名

3、再次执行make编译命令# cd percona-data-recovery-tool-for-innodb-0.5/

# make

4、恢复删除的数据# cd percona-data-recovery-tool-for-innodb-0.5/

# ./constraints_parser -D -5 -f pages-1410414511/FIL_PAGE_INDEX/0-28/ > /tmp/sbtest.txt

-D 恢复删除的行

-5 表的文件格式,默认是Compact

(不清楚的朋友,可以用show table status命令查看)

-f 指定生成sbtest表的主键目录

执行完毕,如下图:

会自动生成一个load data infile命令,请把这个复制下来,一会我们要导入数据。

在/tmp目录下,会生成sbtest.txt,我们就要用这个文件做恢复。

5、导入到表里LOAD DATA INFILE '/tmp/sbtest.txt' REPLACE INTO TABLE `sbtest` FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' LINES STARTING BY 'sbtest\t' (id, k, c, pad);

总结:

通过上述方法,顺利的完成了delete数据恢复。在数据被删除后,切记要备份ibd数据文件,一定不要覆盖,否则都是不能完成修复的。目前该工具不支持字符串set类型。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql未开启binlog恢复_无全量备份、未开启binlog日志,利用percona工具恢复delete的数...相关推荐

  1. mysql没开启binlog恢复删除表_无全量备份、未开启binlog日志,利用percona工具恢复delete的数据...

    当我们忘记做全量备份时,并且没有开启binlog,并执行了delete from sbtest; 数据全部丢失,要想恢复是很有难度的. 今天,利用Percona Data Recovery Tool ...

  2. mysql binlog增量备份脚本_实现mysqlldump+binlog日志全量备份和增量备份脚本

    实现mysqlldump+binlog日志全量备份和增量备份脚本 #!/bin/bash ####################################################### ...

  3. mysql数据库异地恢复_数据库的异地备份恢复及恢复

    文中多数参考网友,恢复未测试其他均已测试. 如需完整版内容留下邮箱我给你发 Mysql数据库异地备份 一. 简介 1.1 增量备份简介 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备 ...

  4. mysql增量备份具体步骤_记一次mysql全量备份、增量备份的学习过程

    增量备份依赖于全量备份,因此首先要有全量备份,在全量备份的基础上,添加增量备份. 为了方便操作,我们先来做些准备工作.在客户端直接输入mysql.mysqldump.mysqladmin.mysqlb ...

  5. mysql 备份100G花费时间_利用xtrabackup 全量备份100G的数据恢复到单实例测试

    利用xtrabackup 全量备份的mysql5.6.40实例的100G的数据恢复MySQL5.7.24实例上到单实例消耗的时间: 服务器的环境如下: dell r620 双颗CPU,单核心是12核心 ...

  6. mysql异机还原_MySQL innobackupex全量备份恢复

    转自 http://blog.itpub.net/27099995/viewspace-1295099/ 先简单介绍一下这个工具:innobackupex innobackupex比xtarbacku ...

  7. MySQL定时备份(全量备份+增量备份)

    MySQL 定时备份 参考 zone7_ 的 实战-MySQL定时备份系列文章 参考 zmcyu 的 mysql数据库的完整备份.差异备份.增量备份 更多binlog的学习参考马丁传奇的 MySQL的 ...

  8. mysql 定期备份_MySQL定时备份(全量备份+增量备份)

    MySQL 定时备份 更多binlog的学习参考马丁传奇的 MySQL的binlog日志,这篇文章写得认真详细,如果看的认真的话,肯定能学的很好的. 如果查看binlog是出现语句加密的情况,参考 m ...

  9. 企业级MySQL数据库备份方案:增量备份、全量备份、逻辑备份

    一份好的备份方案无非包括以下几点: 为什么需要备份? 备份的方式有哪些? 某几种备份方式的区别在哪? 备份实战操作概述 恢复实战操作概述 其它备注信息 那么,此文将从以上几个角度,结合一些实际的实战经 ...

最新文章

  1. 什么事情是你当了老板才知道的?
  2. export 和 export default 的区别
  3. 【BZOJ2797】[Poi2012]Squarks 暴力乱搞
  4. Django2.x中url路由的path()与re_path()参数解释(亲测)
  5. 【强烈推荐】《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题
  6. 微信小程序-路由方式
  7. 集成方法Ensemble Method(bagging, AdaBoost)
  8. LeetCode:917. 仅仅反转字母
  9. 种草笔记App放话:要让一万创作者月入过万
  10. 跨域请求的两种实现方式
  11. matlab55中值滤波,基于MATLAB的中值滤波算法实现
  12. Chevereto网站存放图像至相应二级分类文件夹
  13. python知识点大全-2
  14. wechat sdk java_使用java集成微信支付sdk。
  15. cad两直线相交画圆弧,CAD 两直线,怎么用圆弧连接?
  16. exoplayer的media2扩展
  17. 穿过网络防火墙监视的木马下载器(转)
  18. 石墨烯粉末, 是否导电?
  19. github如何上传代码到仓库(从本地上传代码到github)
  20. python数据分析及可视化(房产数据)

热门文章

  1. python串口控制8通道继电器方法笔记
  2. 程序员应了解的那些事(107)之图灵完备
  3. Synopsys Formality 2018操作流程
  4. 局域网内VSS无法连接的一个“恶心他妈给恶心开门”的问题
  5. java6安全设置_小米安全中心
  6. 计算机网络 路由器的端口ip,教您如何修改路由器LAN端口的IP地址
  7. 计算机视觉系列(七)——迁移学习
  8. RESTORE 还原数据库
  9. 荣耀v40pro和华为nova8pro哪个好?
  10. 模电数电EDA实验开发系统实验设备QY-MS301D