接着聊聊如何从binlog文件恢复误delete的数据,模拟Oracle的闪回功能

这篇具有很好参考价值的文章主要介绍了接着聊聊如何从binlog文件恢复误delete的数据,模拟Oracle的闪回功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

看腻了文章就来听听视频演示吧:https://www.bilibili.com/video/BV1cV411A7iU/

delete忘加where条件(模拟Oracle闪回)

操作基本等同于上篇:再来谈谈如何从binlog文件恢复误update的数据,模拟Oracle的回滚功能
原理:binlog的ROW模式将记录的delete语句内容转换成insert语句
步骤

  1. 查找误操作的binlog文件内容
  2. binlog内容处理,转为可执行的SQL语句
  3. 执行SQL恢复达到回滚效果
mysql> select * from t_student;
+------+------+-------+-------+
| id   | name | class | score |
+------+------+-------+-------+
|    1 | a    |     1 | 66    |
|    2 | b    |     1 | 58    |
|    3 | c    |     2 | 86    |
|    4 | d    |     2 | 78    |
+------+------+-------+-------+
4 rows in set (0.00 sec)

# 模拟误删数据
delete from t_student where id>2;

mysql> select * from t_student;
+------+------+-------+-------+
| id   | name | class | score |
+------+------+-------+-------+
|    1 | a    |     1 | 66    |
|    2 | b    |     1 | 58    |
+------+------+-------+-------+
2 rows in set (0.00 sec)

binlog查找到误delete语句

[root@db01 data]# mysqlbinlog --no-defaults -v -v --base64-output=decode-rows mysql-bin.000013 | sed -n '/### DELETE FROM `mdb`.`t_student`/,/COMMIT/p' > deltbl_data.txt
[root@db01 data]# cat deltbl_data.txt 
### DELETE FROM `mdb`.`t_student`
### WHERE
###   @1=3 /* INT meta=0 nullable=1 is_null=0 */
###   @2='c' /* VARSTRING(54) meta=54 nullable=1 is_null=0 */
###   @3=2 /* INT meta=0 nullable=1 is_null=0 */
###   @4='86' /* VARSTRING(54) meta=54 nullable=1 is_null=0 */
### DELETE FROM `mdb`.`t_student`
### WHERE
###   @1=4 /* INT meta=0 nullable=1 is_null=0 */
###   @2='d' /* VARSTRING(54) meta=54 nullable=1 is_null=0 */
###   @3=2 /* INT meta=0 nullable=1 is_null=0 */
###   @4='78' /* VARSTRING(54) meta=54 nullable=1 is_null=0 */
# at 2508
#230910 11:44:32 server id 3306  end_log_pos 2539 CRC32 0x7be20ca3      Xid = 571
COMMIT/*!*/;

转换成标准SQL

[root@db01 data]# cat deltbl_data.txt | sed -n '/###/p' | sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;' | sed -r 's/(@4.*),/\1;/g' | sed 's/@[1-9]=//g' > instbl_data.sql
[root@db01 data]# cat instbl_data.sql 
INSERT INTO `mdb`.`t_student`
SELECT
  3 ,
  'c' ,
  2 ,
  '86' ;
INSERT INTO `mdb`.`t_student`
SELECT
  4 ,
  'd' ,
  2 ,
  '78' ;

恢复

mysql> select * from t_student;
+------+------+-------+-------+
| id   | name | class | score |
+------+------+-------+-------+
|    1 | a    |     1 | 66    |
|    2 | b    |     1 | 58    |
+------+------+-------+-------+
2 rows in set (0.00 sec)

mysql> source /mysqldata/data/instbl_data.sql
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select * from t_student;
+------+------+-------+-------+
| id   | name | class | score |
+------+------+-------+-------+
|    1 | a    |     1 | 66    |
|    2 | b    |     1 | 58    |
|    3 | c    |     2 | 86    |
|    4 | d    |     2 | 78    |
+------+------+-------+-------+
4 rows in set (0.00 sec)

MySQL的binlog系列和奇技操作:

先来聊聊MySQL的binlog文件解析
接着说说mysqlbinlog解析工具如何做数据恢复
再来谈谈如何从binlog文件恢复误update的数据,模拟Oracle的闪回功能
接着聊聊如何从binlog文件恢复误delete的数据,模拟Oracle的闪回功能
借用binlog2sql工具轻松解析MySQL的binlog文件,再现Oracle的闪回功能
再来介绍另一个binlog文件解析的第三方工具my2sql
顺带来聊聊MySQL误删ibdata数据文件的恢复
MySQL大表直接复制文件的copy方式文章来源地址https://www.toymoban.com/news/detail-728878.html

到了这里,关于接着聊聊如何从binlog文件恢复误delete的数据,模拟Oracle的闪回功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql通过binlog日志恢复误删数据

    log_bin为ON说明可以使用binlog恢复,如果为OFF说明没有开启binlog。 删除数据时间是在文件154与153之间,所以删除操作应在154文件中 mysqlbinlog命令解析日志存入新文件 mysqlbinlog 命令的参数说明 sz命令下载文件到本地 在文件中找到了detele语句 5、语句转换 把mysqllog-154.sql中的DELET

    2024年02月11日
    浏览(53)
  • pgsql delete 语句恢复数据

    从数据库角度恢复已删除的数据通常需要使用备份和恢复工具,例如 pg_dump、pg_restore 或 pg_basebackup。以下是一些可能有用的步骤: 确定删除数据的时间点 通过 PostgreSQL 中的 WAL 日志和 archived WAL 日志,找到删除数据时的时间点,也就是最后一个有效的备份后到删除数据前的时

    2024年02月16日
    浏览(55)
  • windows下mysql中binlog日志分析和数据恢复

    看到了是没有开启的。 不能通过命令的方式去打开,因为会提示说这个参数是 只读 的。如下图: 所以,打开mysql的配置文件,找到mysql的配置文件(和Linux下的文件名是不一样的,Linux是my.cnf),windows默认的在 C:ProgramDataMySQLMySQL Server 5.7my.ini 配置好之后,要 进行重启mysql服务

    2024年02月15日
    浏览(36)
  • mysql误删数据后,从binlog中进行恢复删除数据(拯救手残,不跑路)

    在一次数据维护过程中,对数据删除时没有提前备份数据,导致数据被删除后无法通过备份文件直接恢复。 数据如果在删除前提前备份好,那么直接从备份文件中恢复。 如果没有备份文件,则需要查看mysql数据库是否打开logbin日志。如果没有打开直接GG。如果恰好打开了的,

    2024年02月16日
    浏览(40)
  • 服务器数据恢复-reiserfs文件系统损坏如何恢复数据?

    服务器数据恢复环境: 一台IBM X系列服务器,4块SAS硬盘组建一组RAID5阵列,采用的reiserfs文件系统。服务器操作系统分区结构:boot分区+LVM卷+swap分区(按照前后顺序)。LVM卷中直接划分了一个reiserfs文件系统,作为根分区。   服务器故障: 服务器在运行过程中由于未知原因瘫

    2024年02月10日
    浏览(51)
  • OPPO 数据恢复:如何从 OPPO 手机恢复已删除的文件?

    Oppo 手机以其精美的外观和拍摄的精美照片和视频而闻名。如果您不小心丢失了 OPPO 手机中珍贵的照片、视频等重要文件,并且为如何找回而苦恼,那么您来对地方了。我们其实有很多OPPO数据恢复方案,现在最重要的是尽快尝试这些方法,防止丢失的数据被手机新生成的数据

    2024年02月16日
    浏览(68)
  • 服务器感染了.360勒索病毒,如何确保数据文件完整恢复?

    引言: 随着科技的不断进步,互联网的普及以及数字化生活的发展,网络安全问题也逐渐成为一个全球性的难题。其中,勒索病毒作为一种危害性极高的恶意软件,在近年来频频袭扰用户。本文91数据恢复将重点介绍 360 勒索病毒,包括如何解密被其加密的数据文件,以及如

    2024年02月12日
    浏览(46)
  • 服务器感染了.pings勒索病毒,如何确保数据文件完整恢复?

    导言: 随着科技的不断进步,网络犯罪也在不断演变。其中之一的.pings勒索病毒是一种危险的恶意软件,它能够加密用户的数据文件,并要求支付赎金以解密这些文件。在本文中,91数据恢复将介绍.pings勒索病毒,以及如何恢复被其加密的数据文件,并提供一些预防措施。

    2024年01月25日
    浏览(46)
  • 服务器感染了.mallox勒索病毒,如何确保数据文件完整恢复?

    尊敬的读者: 随着科技的进步,网络犯罪也在不断演进,.mallox勒索病毒作为其中的一种威胁已经引起了广泛关注。本文将深入介绍.mallox勒索病毒的特征、传播途径,详细解释如何有效恢复被加密的数据文件,并提供一系列预防措施,以保护系统免受.mallox及类似威胁的侵害。

    2024年02月20日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包