声明下Percona Data Recovery Tool for InnoDB工具的问题!(带遇到问题的说明)

首先呢,请各位注意此工具的适用范围:

1)本次应用的恢复工具仅适用与innodb存储引擎,Myisam不支持

2)Truncate tabe 不能恢复

3)Drop table 想也别想了

恢复原理:

对于INNODB存储引擎而言,DELETE操作,不是真正删除物理文件上的行,而是给删除的行添加了一个删除的标记,我们利用此工具找到那些标注了删除标记的行,然后将其存放到一个文本中去,最后通过load data恢复数据;而truncate操作,是直接将数据行清空,并非添加删除标记(查看物理文件,执行truncate的表的ibd文件会缩小,而执行了DELETE的表,甚至比之前大)

正文开始:

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

好吧,总是需要先安装一些依赖包啥的

yum -y install ncurses-devel.x86_64

不安此包,会报错的,啥错,忘记写进来了

rpm -ivh glibc-static-2.17-55.el7.x86_64.rpm --force --nodeps ()

不安此包:看看啥报错:

gcc -DHAVE_OFFSET64_T -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -Wall -O3 -g -I include -I mysql-source/include -I mysql-source/innobase/include -static -lrt -o page_parser page_parser.c lib/tables_dict.o lib/libut.a

/usr/bin/ld: cannot find -lrt

collect2: ld 返回 1

make: *** [page_parser] 错误 1

2、正式配置安装

cd percona-data-recovery-tool-for-innodb-0.5/mysql-source/

./configure

cd ..

make

[[email protected] percona-data-recovery-tool-for-innodb-0.5]# make

gcc -I include -I mysql-source/include -I mysql-source/innobase/include -o innochecksum innochecksum.c

gcc  -o ibdconnect ibdconnect.c

最后,没什么ERROR报错信息,就是正常的

3、OK,准备工作已经完成,来恢复你的数据

1)从服务器的层面提取你误删的数据

[[email protected] percona-data-recovery-tool-for-innodb-0.5]# ./page_parser -5 -f /var/lib/mysql/test/site_ksteam.ibd

[[email protected] percona-data-recovery-tool-for-innodb-0.5]# ls

check_data.c          create_defs.pl  ibdconnect    incrementalupdate.c  INSTALL   mysql-source   pages-1494339302  split_dump.pl

constraints_parser    docs            ibdconnect.c  innochecksum         lib       page_parser    pages-1494339674  tables_dict.c

[[email protected] percona-data-recovery-tool-for-innodb-0.5]# ls pages-1494339302/FIL_PAGE_INDEX/

0-2475  0-2476  0-2477

在FIL_PAGE_INDEX目录下会生成主键和索引,数据最小的是主键,后面的依次是每个列的索引,如0-2475是site_ksteam表的主键,0-2476是表的索引

2)生成site_ksteam表的表结构:

[[email protected]]# ./create_defs.pl --host localhost --port 3306 --user root --password 123456 --db test --table site_ksteam > include/table_defs.h  正常情况下没有任何的报错

3)还得再次执行make命令

[[email protected] percona-data-recovery-tool-for-innodb-0.5]# make

gcc -DHAVE_OFFSET64_T -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -Wall -O3 -g -I include -I mysql-source/include -I mysql-source/innobase/include -static -lrt -o page_parser page_parser.c lib/tables_dict.o lib/libut.a

最后是这条信息,就是正常的

4)将查找到的数据保存到/tmp/site_ksteam.txt文件

[[email protected]percona-data-recovery-tool-for-innodb-0.5]# ./constraints_parser -D -5 -f pages-1494339674/FIL_PAGE_INDEX/0-2351/ > /tmp/site_ksteam.txt  -D 恢复删除的行;-5表的文件格式,默认Compact;

-f 指定site_ksteam表的主键目录

LOAD DATA INFILE ‘/com/percona-data-recovery-tool-for-innodb-0.5/dumps/default/site_ksteam‘ REPLACE INTO TABLE `site_ksteam` FIELDS TERMINATED BY ‘\t‘ OPTIONALLY ENCLOSED BY ‘"‘ LINES STARTING BY ‘site_ksteam\t‘ (id, catid, typeid, title, style, thumb, keywords, description, posids, url, listorder, status, sysadd, islink, username, inputtime, updatetime, contact, titles, level, cimage, bimage, language, subject);

5)连接Mysql,将数据导入表中

mysql> LOAD DATA INFILE ‘/tmp/site_ksteam.txt‘ REPLACE INTO TABLE `site_ksteam` FIELDS TERMINATED BY ‘\t‘ OPTIONALLY ENCLOSED BY ‘"‘ LINES STARTING BY ‘site_ksteam\t‘ (id, catid, typeid, title, style, thumb, keywords, description, posids, url, listorder, status, sysadd, islink, username, inputtime, updatetime, contact, titles, level, cimage, bimage, language, subject);

最后呢,还是想吐槽下,开始搞这个工具的时候,网上的资料,呵呵,人云亦云的,也不说中间可能遇到啥问题,怎么解决,最最重要的是, 此工具对在线运行的数据库进行恢复操作,会出现数据丢失现象!!!

到底是我哪里没理解到,还是本是如此,欢迎留言!

时间: 2024-11-05 18:46:54

声明下Percona Data Recovery Tool for InnoDB工具的问题!(带遇到问题的说明)的相关文章

Percona Data Recovery Tool for InnoDB--mysql innodb引擎表非常规修复工具

如果线上的MySQL生产数据库的数据被误删除,然后DBA去会恢复数据的时候,发现该数据库没有做备份.binlog也没有开启的话.还有其他手段去尽力去恢复数据吗? percona公司提供了一个非常规的修复工具,可以去修复表数据.当然这个工具是有限制的: 1.仅针对innodb引擎的表 2.表的row_format必须是REDUNDANT或者COMPACT,一般建议为COMPACT.而mysql5.7.8以上默认为Dynamic,这个要特别注意. 3.一旦发生误操作,需要尽快停止对事故表的写入,将i

10 Best Data Recovery Software Of 2018 For Free

Recuva:**** Recuva (pronounced "recover") is a freeware Windows utility to restore files that have been accidentally deleted from your computer. Using Recuva, you can restore files that have been accidentally deleted from the computer, a USB dri

转:主流数据恢复软件——EasyRecovery/Ashampoo Undeleter/Wise Data Recovery/Recuva/Undelete 360

转自:Baidu 空间 2012-10-05 13:57 主流数据恢复软件--EasyRecovery/Ashampoo Undeleter/Wise Data Recovery/Recuva/Undelete 360 Ontrack EasyRecovery 10 Enterprise 简体中文版(有什么问题可以看看最后) 软件版本:10.0.2.3 软件语言:简体中文 捆绑插件:无 软件性质:已注册 软件下载:下载地址1/ 下载地址2 作为一款企业级的数据恢复软件,Ontrack EasyR

数据恢复(Data recovery)

定义数据恢复: 当存储介质出现损伤或由于人员误操作.操作系统故障本身故障所造成的数据不可见,无法读取.丢失. 工程师通过特殊的手段读取却在正常状态下不可见,不可读,无法读的数据. 数据恢复(Data recovery)是指通过技术手段,将保存在台式机硬盘.笔记本硬盘.服务器硬盘.存储磁带库.移动硬盘.U盘.数码存储卡.Mp3等等设备上丢失的电子数据进行抢救和恢复的技术. 原理: 现实中很多人不知道删除.格式化等硬盘操作丢失的数据可以恢复,以为删除.格式化. 后数据就不存在了.事实上,上述剪刀男的

XIV(5)-- Data Recovery Protection (XDRP)

和大多数存储系统一样,XIV也提供多地容灾的解决方案.XIV Data Recovery Protection (XDRP)有三种实现方式, Synchronous Mirroring; ASynchronous Mirroring; Data Migration.除此之外,当然也支持Flashcopy,VolumeCopy 一.Synchronous Mirroring XDRP是在两个或多个XIV系统之间做real-time copy,支持 Fiber Channel 或iSCSI link

Data Recovery Advisor (DRA)

数据恢复指导Data Recovery Advisor (DRA)的适用场景:Data Recovery Advisor 是11g 新特性,是Oracle 顾问程序架构的一部分,它会在遇到错误时自动收集有关故障信息.如果主动运行Data Recovery Advisor,通常可以在用户查询或备份操作检查到故障前检测和修复故障.Data Recovery Advisor 可以主动检测到诸如块受损的相对较小的错误,也可以检测到导致数据库无法成功启动的错误,如缺少联机重做日志文件,数据文件等.Data

My journey introducing the data build tool (dbt) in project’s analytical stacks

转自:https://www.lantrns.co/my-journey-introducing-the-data-build-tool-dbt-in-projects-analytical-stacks/ Not sure I remember how, but I had the good luck a few weeks ago to stumble upon posts from Tristan Handy where he mentioned a tool his team built

Gnu Linux下文件的字符编码及转换工具

/*********************************************************************  * Author  : Samson  * Date    : 07/03/2014  * Test platform:  *              3.11.0-12-generic #19-Ubuntu  *              GNU bash, version 4.2.45  * ****************************

分析下自己写的SQL Server同步工具的性能和缺陷

分析下自己写的SQL Server同步工具的性能和缺陷 1. C#同步SQL Server数据库Schema 2. C#同步SQL Server数据库中的数据--数据库同步工具[同步新数据] 通过测试我写的同步程序,得出结论: 1.程序第一次调用SQLBulkCopy会耗时较长 2.同步程序放在目标机器在耗时方面相对少些 测试数据: declare @varI varchar(200) set @varI=0 while(@varI<100000) begin set @[email prote