首页 数据库 mysql教程 无全量备份、未开启binlog日志,利用percona工具恢复delete的数

无全量备份、未开启binlog日志,利用percona工具恢复delete的数

Jun 07, 2016 pm 02:52 PM
binlog 使用 备份 开启 日志

当我们忘记做全量备份时,并且没有开启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
登录后复制

650) this.width=650;" style="max-width:90%" title="1.jpg" alt="wKioL1QWjBbQtR24AAcTs4jETjo710.jpg" />

650) this.width=650;" style="max-width:90%" title="2.jpg" alt="wKioL1QWjBfQ5v4eAAMOU75u5yE417.jpg" />


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

650) this.width=650;" title="3.jpg" alt="wKioL1QWjNeRc1gzAAGi--J2QzM705.jpg" />

650) this.width=650;" title="5.jpg" alt="wKiom1QWjUXSIuLRAAjqU2V4Rmk266.jpg" />


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

650) this.width=650;" title="4.jpg" alt="wKioL1QWjcfTyYIVAACR8hnJJ78355.jpg" />

在这里,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
登录后复制

650) this.width=650;" title="6.jpg" alt="wKiom1QWj3nzmDC0AAUbkA6b0jc746.jpg" />


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命令查看)

650) this.width=650;" title="7.jpg" alt="wKioL1QWkRiDTihIAAI9NJg8fOQ199.jpg" />

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


执行完毕,如下图:

650) this.width=650;" title="8.jpg" alt="wKiom1QWknDBeZOHAAIWMrwbsBE715.jpg" />

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


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

650) this.width=650;" title="9.jpg" alt="wKioL1QWkuHwSGz6AARoxsVwT9s990.jpg" />



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);
登录后复制

wKioL1QWk57TtLghAAFSBQvfbic614.jpg


总结:

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



本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

dlss怎么开启?dlss开启攻略 dlss怎么开启?dlss开启攻略 Mar 13, 2024 pm 07:34 PM

  NVIDIA中有一个dlss功能,用户开启dlss后可以大大提高游戏帧数,因此有不少小伙伴都在问小编dlss怎么打开。首先要保证显卡支持dlss,游戏支持dlss,就可以在游戏中开启了。下面就来看看具体的教程。  答:dlss一般都需要在游戏中开。  开启dlss要满足设备和游戏的条件才可以。  dlss就是“光线追踪效果”,大家可以进入游戏的设置。  然后进入“图像或者图形”设置。  随后找到“光线追踪光照”点击打开即可。  d

是否需要启用GPU硬件加速? 是否需要启用GPU硬件加速? Feb 26, 2024 pm 08:45 PM

硬件加速GPU有必要开吗?随着科技的不断发展与进步,GPU(GraphicsProcessingUnit)作为计算机图形处理的核心组件,扮演着至关重要的角色。然而,一些用户或许对于是否需要开启硬件加速功能持有疑问。本文将探讨硬件加速GPU的必要性,以及开启硬件加速对计算机性能和使用体验的影响。首先,我们需要了解硬件加速GPU的工作原理。GPU是一种专门用

如何在 PHP 中使用 MySQL 备份和还原? 如何在 PHP 中使用 MySQL 备份和还原? Jun 03, 2024 pm 12:19 PM

在PHP中备份和还原MySQL数据库可通过以下步骤实现:备份数据库:使用mysqldump命令转储数据库为SQL文件。还原数据库:使用mysql命令从SQL文件还原数据库。

hosts文件删了怎么恢复 hosts文件删了怎么恢复 Feb 22, 2024 pm 10:48 PM

标题:hosts文件删除后如何恢复摘要:hosts文件是操作系统中非常重要的一个文件,用于将域名映射到IP地址。如果不小心将hosts文件删除了,可能会导致上网无法访问特定网站或者其他网络问题。本文将介绍如何在Windows和Mac操作系统中恢复被误删的hosts文件。正文:一、Windows操作系统中恢复hosts文件Windows操作系统中的hosts文

如何安装、卸载、重置Windows服务器备份 如何安装、卸载、重置Windows服务器备份 Mar 06, 2024 am 10:37 AM

WindowsServerBackup是WindowsServer操作系统自带的一个功能,旨在帮助用户保护重要数据和系统配置,并为中小型和企业级企业提供完整的备份和恢复解决方案。只有运行Server2022及更高版本的用户才能使用这一功能。在本文中,我们将介绍如何安装、卸载或重置WindowsServerBackup。如何重置Windows服务器备份如果您的服务器备份遇到问题,备份所需时间过长,或无法访问已存储的文件,那么您可以考虑重新设置WindowsServer备份设置。要重置Windows

高德地图实时路况怎么开启 高德地图实时路况怎么开启 Feb 28, 2024 pm 07:22 PM

高德地图软件以其卓越的功能,为用户的出行提供了极大的便利。其中,实时路况功能备受用户好评,因为它能够帮助用户更准确地了解道路状况,避免拥堵,选择最佳路线。那么子安啊才能开启高德地图的实时路况情况呢,想要了解的用户们就快来下文中跟着小编的这篇教程攻略一起详细了解一下吧!高德地图实时路况怎么开启答案:【高德地图】-【图层】-【路况】。具体步骤:1、首先打开高德地图软件,进入到首页中我们可以看到右上角的有通知、图层、反馈按钮,在这里点击【图层】;2、然后点击过后会弹出一个对话框,在这里我们点击【路况】

ghost怎么备份系统-ghost备份教程 ghost怎么备份系统-ghost备份教程 Mar 06, 2024 pm 04:30 PM

近期有很多小伙伴咨询小编ghost怎么备份系统,接下来就让我们一起学习一下ghost备份系统的方法教程,希望可以帮助到大家。1、运行Ghost后,单击“OK”,如图所示。2、依次单击“Local”→“Partition”→“ToImage”(意为:本地→分区→到镜像文件),如图所示。3、出现选择本地硬盘窗口,单击要备份的分区所在硬盘,再单击“OK”,如图所示。4、出现选择源分区窗口(源分区就是你要备份的那个分区),单击系统所在的分区(通常为1区,一定要弄准),再单击“OK”,如图所示。5、此时弹

教你华为手机开启双微信功能! 教你华为手机开启双微信功能! Mar 22, 2024 pm 03:15 PM

在现代社会中,手机已经成为人们生活中不可或缺的工具。智能手机的功能越来越强大,满足了人们日常生活、工作和娱乐的各种需求。而对于一些需要同时使用多个微信账号的用户来说,开启双微信功能就显得尤为重要。本文将教你如何在华为手机上开启双微信功能,让你能够方便地管理多个微信账号。首先,华为手机自带的EMUI系统已经在系统级别上支持双微信功能,因此只需按照以下步骤进行设

See all articles