使用Percona Data Recovery Tool for InnoDB恢复数据
2014-03-23 00:00
871 查看
昨晚收到一则求助,一个用户的本地数据库的重要数据由于误操作被删除,需要进行紧急恢复,用户的数据库日常并没有进行过任何备份,binlog也没有开启,所以从备份和binlog入手已经成为不可能,咨询了丁奇,发了一篇percona的文章给我,顿时感觉有希望,于是到percona的官网上下载了恢复工具:
一.安装:
二.解析ibd文件: 此过程会将表的idb文件解析为很多的page,innodb的page分为两大部分,一部分一级索引部分(primary key),另一部分为二级索引部分(secondary key),所以解析出来的idb包括了主键数据和索引数据两大部分(如果该表有多个二级索引,则会生成多个文件)
三.生成表定义: 由于该工具在解析数据pages的时候,需要获得该table的表结构定义,所以需要执行如下命令:
四.开始恢复pages中删除的数据: 在重新编译工具后,执行如下命令:
五. 总结: 1). 该恢复工具只支持innodb存储引擎,文件的格式需要为:Compact 2). 数据被误删除后,需要尽快将保护现场,停止数据库,把idb文件拷贝出来,防止ibd文件写入数据被覆盖(笔者恢复的一个表中,由于数据删除后,表中仍有大量写入,导致大部分数据没有恢复出来); 3). 千叮嘱万嘱咐,数据库的备份重于泰山; 转自:http://ourmysql.com/archives/1299 参考文档:http://www.mysqlperformanceblog.com/2012/02/20/how-to-recover-deleted-rows-from-an-innodb-tablespace/
一.安装:
# 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 # tar -xvf percona-data-recovery-tool-for-innodb-0.5.tar.gz # ./configure # make # make install
二.解析ibd文件: 此过程会将表的idb文件解析为很多的page,innodb的page分为两大部分,一部分一级索引部分(primary key),另一部分为二级索引部分(secondary key),所以解析出来的idb包括了主键数据和索引数据两大部分(如果该表有多个二级索引,则会生成多个文件)
# ./page_parser -5 -f t_bibasic_storage.ibd参数解释: -5:代表 row format为Compact -f:代表要解析的文件 结果如下: pages-1377707810/FIL_PAGE_INDEX 0-161 0-325 0-463 0-464 0-465 可以看到t_bibasic_storage.ibd解析出来5个文件(161为主键索引的index_id,325,463,464,465为二级索引的index_id,该id可以通过开启innodb_table_monitor知晓)
三.生成表定义: 由于该工具在解析数据pages的时候,需要获得该table的表结构定义,所以需要执行如下命令:
# ./create_defs.pl -host xxxx -port 3306 -user root -password xxx -db didb -table t_bibasic_storage >include/table_defs.h上面的命令会将t_bibasic_storage表的表结构定义传入到table_defs.h中,在生成了表结构定义后,重新make该恢复工具: # make
四.开始恢复pages中删除的数据: 在重新编译工具后,执行如下命令:
# ./constraints_parser -5 -D -f pages-1377707810/FIL_PAGE_INDEX/0-161 >/tmp/t_bibasic_salessend.sql参数: -5 -f的参数和page_parser相同; -D:该参数的含义为代表恢复删除的数据页; 恢复完成后生成如下语句和文件: LOAD DATA INFILE ‘/tmp/t_bibasic_proinfo.dmp’ REPLACE INTO TABLE `t_bibasic_proinfo` FIELDS TERMINATED BY ‘\t’ OPTIONALLY ENCLOSED BY ‘”‘ LINES STARTING BY ‘t_bibasic_proinfo\t’ (id, procode, skuoid, skucode, skuname, catatt, dutydepoid, dutydepname, seasonatt, brandatt, prostatus, choosedate, syear, smonth, sday, created, unioncomcode); /tmp/t_bibasic_salessend.sql 该文件就是我们需要load data的文本文件;
五. 总结: 1). 该恢复工具只支持innodb存储引擎,文件的格式需要为:Compact 2). 数据被误删除后,需要尽快将保护现场,停止数据库,把idb文件拷贝出来,防止ibd文件写入数据被覆盖(笔者恢复的一个表中,由于数据删除后,表中仍有大量写入,导致大部分数据没有恢复出来); 3). 千叮嘱万嘱咐,数据库的备份重于泰山; 转自:http://ourmysql.com/archives/1299 参考文档:http://www.mysqlperformanceblog.com/2012/02/20/how-to-recover-deleted-rows-from-an-innodb-tablespace/
相关文章推荐
- 使用Percona Data Recovery Tool for InnoDB恢复数据
- 使用Percona Data Recovery Tool for InnoDB恢复数据
- Percona Data Recovery Tool for InnoDB工具恢复单表的案例
- Percona Data Recovery Tool for InnoDB工具恢复单表的案例
- percona-data-recovery-tool-for-innodb-0.5工具修复丢失数据
- 如何使用Percona Data Recovery Tool恢复mysql 被delete的数据
- 使用Percona Data Recovery Tool for InnoDB恢复数据
- 声明下Percona Data Recovery Tool for InnoDB工具的问题!(带遇到问题的说明)
- Magoshare Data Recovery for Mac(数据恢复软件) v2.0破解版
- Card Data Recovery for Mac(卡数据恢复软件) v4.2.0.0最新破解版
- M3 Data Recovery for Mac (数据恢复软件)无需注册 v5.2破解版
- Percona Data Recovery Tool 单表恢复
- 使用alter tablespace create datafile恢复丢失的数据文件
- 使用innodb_data_file_path修改数据文件位置,发生The server quit without updating PID file错误的解决原因及方法。
- 使用EasyRecovery Pro 6.04恢复RAW格式硬盘的数据实战
- 8.5.5 Bulk Data Loading for InnoDB Tables 批量数据加载
- Data Recovery Advisor(数据恢复顾问)
- MS SQL Server数据库修复利器—D-Recovery For MS SQL Server数据恢复软件
- linux数据恢复软件--蓝梦软件BestRecoveryForLinux
- 主流数据恢复软件——EasyRecovery/Ashampoo Undeleter/Wise Data Recovery/Recuva/Undelete 360