mysql未开启binlog恢复_无全量备份、未开启binlog日志,利用percona工具恢复delete的数...
当我们忘记做全量备份时,并且没有开启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的数...相关推荐
- mysql没开启binlog恢复删除表_无全量备份、未开启binlog日志,利用percona工具恢复delete的数据...
当我们忘记做全量备份时,并且没有开启binlog,并执行了delete from sbtest; 数据全部丢失,要想恢复是很有难度的. 今天,利用Percona Data Recovery Tool ...
- mysql binlog增量备份脚本_实现mysqlldump+binlog日志全量备份和增量备份脚本
实现mysqlldump+binlog日志全量备份和增量备份脚本 #!/bin/bash ####################################################### ...
- mysql数据库异地恢复_数据库的异地备份恢复及恢复
文中多数参考网友,恢复未测试其他均已测试. 如需完整版内容留下邮箱我给你发 Mysql数据库异地备份 一. 简介 1.1 增量备份简介 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备 ...
- mysql增量备份具体步骤_记一次mysql全量备份、增量备份的学习过程
增量备份依赖于全量备份,因此首先要有全量备份,在全量备份的基础上,添加增量备份. 为了方便操作,我们先来做些准备工作.在客户端直接输入mysql.mysqldump.mysqladmin.mysqlb ...
- mysql 备份100G花费时间_利用xtrabackup 全量备份100G的数据恢复到单实例测试
利用xtrabackup 全量备份的mysql5.6.40实例的100G的数据恢复MySQL5.7.24实例上到单实例消耗的时间: 服务器的环境如下: dell r620 双颗CPU,单核心是12核心 ...
- mysql异机还原_MySQL innobackupex全量备份恢复
转自 http://blog.itpub.net/27099995/viewspace-1295099/ 先简单介绍一下这个工具:innobackupex innobackupex比xtarbacku ...
- MySQL定时备份(全量备份+增量备份)
MySQL 定时备份 参考 zone7_ 的 实战-MySQL定时备份系列文章 参考 zmcyu 的 mysql数据库的完整备份.差异备份.增量备份 更多binlog的学习参考马丁传奇的 MySQL的 ...
- mysql 定期备份_MySQL定时备份(全量备份+增量备份)
MySQL 定时备份 更多binlog的学习参考马丁传奇的 MySQL的binlog日志,这篇文章写得认真详细,如果看的认真的话,肯定能学的很好的. 如果查看binlog是出现语句加密的情况,参考 m ...
- 企业级MySQL数据库备份方案:增量备份、全量备份、逻辑备份
一份好的备份方案无非包括以下几点: 为什么需要备份? 备份的方式有哪些? 某几种备份方式的区别在哪? 备份实战操作概述 恢复实战操作概述 其它备注信息 那么,此文将从以上几个角度,结合一些实际的实战经 ...
最新文章
- 什么事情是你当了老板才知道的?
- export 和 export default 的区别
- 【BZOJ2797】[Poi2012]Squarks 暴力乱搞
- Django2.x中url路由的path()与re_path()参数解释(亲测)
- 【强烈推荐】《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题
- 微信小程序-路由方式
- 集成方法Ensemble Method(bagging, AdaBoost)
- LeetCode:917. 仅仅反转字母
- 种草笔记App放话:要让一万创作者月入过万
- 跨域请求的两种实现方式
- matlab55中值滤波,基于MATLAB的中值滤波算法实现
- Chevereto网站存放图像至相应二级分类文件夹
- python知识点大全-2
- wechat sdk java_使用java集成微信支付sdk。
- cad两直线相交画圆弧,CAD 两直线,怎么用圆弧连接?
- exoplayer的media2扩展
- 穿过网络防火墙监视的木马下载器(转)
- 石墨烯粉末, 是否导电?
- github如何上传代码到仓库(从本地上传代码到github)
- python数据分析及可视化(房产数据)