无全量备份、未开启binlog日志,利用percona工具恢复
delete的数据
今天,利用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://http://www.doczj.com/doc/a7755a3681c758f5f71f6779.html/percona-data-recovery-tool-for-innodb /trunk/release-0.5/+download/percona-data-recovery-tool-for-innodb-0. 5.tar.gz
二、全表删除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