iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >binlog2sql如何实现MySQL误操作的恢复
  • 456
分享到

binlog2sql如何实现MySQL误操作的恢复

2024-04-02 19:04:59 456人浏览 泡泡鱼
摘要

小编给大家分享一下binlog2sql如何实现Mysql误操作的恢复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!对于mysql

小编给大家分享一下binlog2sql如何实现Mysql误操作的恢复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

对于mysql数据库中的误操作删除数据的恢复问题,可以使用基于MySQL中binlog做到类似于闪回或者生成反向操作的SQL语句来实现,是MySQL中一个非常实用的功能。

原理不难理解,基于MySQL的row格式的binlog中,记录历史的增删改SQL信息,基于此解析出来对应的SQL语句(回滚的话就是反向的SQL语句)。

在格式为binlog格式为row的日志模式下,binlog中的内容记录了数据库中曾经执行的增删改信息,都是包含了反向信息的比如执行delete from table where pk_id = 1;按照主键来删除一条记录

对应的binlog中的sql语句为:

delete from table where pk_id = 1 and name = ‘xxx’ and other_column = ‘xxx’;

where条件不仅仅是原始语句的Id,而且还包括中这一行所有的字段的信息的update操作也同理,不但记录了update操作,同时记录了update记录在更新之前的每一个字段的值。这样就可以利用这个日志来生成反向操作信息。 

如下是利用mysqlbinlog 工具解析出来的一个MySQL中典型的binlog日志文件的部分内容,可以清楚地看到执行过的sql语句的信息。

说到这里,对于MySQL中基于binlog的一些应用,比如复制或者数据库还原,其实就是重复执行某个数据库上的历史执行过的增删改SQL语句来实现的。

题外话:MySQL的binlog作用记录事务语句的作用上,基本上等同于SQLServer的的事务日志。但是SQL Server的事务日志正的二进制内容的,微软官方也没有提供解析的方法,而MySQL中完全可以通过mysqlbinlog 来解析出来这个日志中的内容。

如下是通过MySQL自带的mysqlbinlog工具解析出来的binlog日志文件中的信息,可以看到其中的SQL语句信息。

binlog2sql如何实现MySQL误操作的恢复

知道了binlog中的内容,就可以基于这个binlog来实现各种实用的功能,典型的就是误删数据的还原操作,比如苏家小萝卜同学就自己用python搞定这个解析功能。

类似功能比较知名的还有大众点评网DBA自己写的binlog2sql工具,也是久闻大名,终于有机会尝试了。

binlog2sql需要语句pip安装,所以需要先安装pip

pip 安装参考:

https://www.cnblogs.com/technologylife/p/5870576.html

binlog2sql如何实现MySQL误操作的恢复

binlog2sql如何实现MySQL误操作的恢复

binlog2sql下载以及安装:

Https://GitHub.com/danfenGCao/binlog2sql

binlog2sql如何实现MySQL误操作的恢复

完成了binlog2sql之后,就可以使用它来实现数据的还原操作了,如下模拟一个误操作的恢复

在开启了binlog,日志格式为row的测试数据下,对于测试表test_01,分别执行以下sql语句:

insert into test_01 values (1,'aaa');  insert into test_01 values (2,'bbb');  insert into test_01 values (3,'vvv');  --以下误操作,更新了全部数据  update test_01 set name = 'xxx';

通过show master logs;找到当前的binlog文件,对应的sql语句的执行就存储在当前这个binlog中,binlog2sql的目标就是这个文件

binlog2sql如何实现MySQL误操作的恢复

参考下图,可以发现

执行:Python binlog2sql.py -h227.0.0.1 -P3306 -uroot -p’root’ -ddb01 -t test_01 –start-file=’binlog.000021′ (更多参数以及使用方式参考下文链接),通过binlog2sql来解析当前的binlog文件,解析出来的SQL语句就是正常SQL语句的执行(insert insert insert update(3行记录))

执行:python binlog2sql.py -h227.0.0.1 -P3306 -uroot -p’root’ -ddb01 -t test_01 –start-file=’binlog.000021′ -B,通过-B参数生成反向的操作信息

加参数-B解析出来的SQL语句与上面的SQL语句刚好相反,包括顺序,也即以倒序的方式生成反向的操作

原始操作是insert insert insert update update update,反向的操作就是upfate update update delete delete delete,这样一来,可以根据具体的情况,截取生成的反向的sql语句,进行误操作的还原。

以上操作注意安装的binlog2sql的路径问题,如果路径不对,找不到binlog2sql.py,上述命令也就无法执行

binlog2sql如何实现MySQL误操作的恢复

以上是“binlog2sql如何实现MySQL误操作的恢复”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: binlog2sql如何实现MySQL误操作的恢复

本文链接: https://www.lsjlt.com/news/64952.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • binlog2sql如何实现MySQL误操作的恢复
    小编给大家分享一下binlog2sql如何实现MySQL误操作的恢复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!对于MySQL...
    99+
    2024-04-02
  • MySQL如何恢复误操作
    这篇文章给大家分享的是有关MySQL如何恢复误操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。常用的恢复方式2.1 利用备份恢复  使用这种方式的前提必须有最近的备份...
    99+
    2024-04-02
  • MySQL误操作后如何快速恢复数据
    本篇内容主要讲解“MySQL误操作后如何快速恢复数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL误操作后如何快速恢复数据”吧! 传统解法 ...
    99+
    2024-04-02
  • Mysql update误操作怎么恢复
    这篇文章主要讲解了“Mysql update误操作怎么恢复”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mysql update误操作怎么恢复”吧...
    99+
    2024-04-02
  • mysql如何恢复误删的数据
    如果在MySQL数据库中误删了数据,可以通过以下几种方法来尝试恢复数据:1. 使用备份文件:如果你有数据库的备份文件,可以将备份文件...
    99+
    2023-08-11
    mysql
  • mysql procedure误删除如何恢复
    如果您在 MySQL 中错误地删除了一个存储过程,有几种方法可以尝试恢复它: 使用回滚操作:如果您在删除存储过程之前启用了二进制...
    99+
    2024-04-09
    mysql
  • RMAN如何实现完全恢复错误
    这篇文章主要为大家展示了“RMAN如何实现完全恢复错误”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“RMAN如何实现完全恢复错误”这篇文章吧。RMAN恢复案例:...
    99+
    2024-04-02
  • MySQL误删数据如何恢复
    如果在 MySQL 中误删了数据,可以通过以下几种方式进行数据恢复: 从备份中恢复数据:如果你有数据库的备份文件,可以将备份中的...
    99+
    2023-10-27
    MySQL
  • SQLServer数据库误操作恢复的方法
    目录前言一、恢复数据实例1.创建初始数据2.保证数据恢复的前提条件3.模拟不小心误操作4.开始恢复二、恢复数据原理1.数据库文件类型2.使用bak恢复数据原理总结参考前言 在日常开发...
    99+
    2023-01-30
    SQLServer数据库恢复 SQLServer 恢复
  • 如何撤销误操作的MySQL执行操作?
    如何撤销误操作的MySQL执行操作?https://www.yzktw.com.cn/post/543114.html MySQL是一种广泛使用的关系型数据库管理系统,它具有强大的功能和灵活的可扩展性。但是,当我们在MySQL中执行某些操...
    99+
    2023-09-13
    mysql 数据库 服务器
  • MySQL如何实现备份与恢复
    小编给大家分享一下MySQL如何实现备份与恢复,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 实验环境:RHEL5.8 ,SElinux关闭,MySQL是tar包初始化安装版本5.5.2...
    99+
    2024-04-02
  • mysql数据误删除如何恢复
    如果MySQL数据误删除,可以尝试以下方法恢复:1. 使用备份:如果你有定期备份数据库,可以通过将备份文件还原到误删除之前的状态来恢...
    99+
    2023-10-09
    mysql
  • MySQL中如何实现随机恢复
    这篇文章给大家介绍MySQL中如何实现随机恢复,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1)数据库参数配置不规范,/etc/my.cnf和/data/mysql_xxx/my.cn...
    99+
    2024-04-02
  • Oracle怎么恢复误操作删除掉的表
    本篇内容主要讲解“Oracle怎么恢复误操作删除掉的表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle怎么恢复误操作删除掉的表”吧! ...
    99+
    2024-04-02
  • mysql如何实现split操作?
    在 MySQL 中并没有内置的 split() 函数,但可以通过自定义函数或存储过程来实现字符串分割。以下是几种实现方法: 自定义函数 fn_split(): DROP FUNCTION IF EXISTS f...
    99+
    2023-08-20
    后端
  • Mysql结合备份+binlog恢复误删除操作数据的方法
    小编给大家分享一下Mysql结合备份+binlog恢复误删除操作数据的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!结合备份...
    99+
    2024-04-02
  • H5如何实现复制操作
    小编给大家分享一下H5如何实现复制操作,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 一开始,在 ...
    99+
    2024-04-02
  • JavaScript撤销恢复操作的实现方法详解
    目录前言一、初期设想二、如何收集状态1.通信尝试2.如何通信三、管理者与执行者1.数据驱动2.管理者3.执行者前言 这是一个基于原生JavaScript+Three.js的系统, 我...
    99+
    2023-02-22
    JS撤销恢复操作 JS撤销操作 JS恢复操作
  • 使用python脚本实现mysql误操作
    1.简介在oracle数据库中,当一个误操作被提交后,我们可以通过oracle提供的闪回功能将表闪回至误操作之前的状态。mysql中没有原生的flushback功能,DBA误操作时,传统的恢复方式是利用全备+二进制日志前滚进行恢复。今天给大...
    99+
    2023-01-31
    脚本 操作 python
  • 【MySQL】MySQL中如何实现分页操作
    MySQL中的分页操作 一、 背景 什么是分页,就是查询时候数据量太大,一次性返回所有查询结果既耗费网络资源、又降低了查询效率,用户也不可能一下子看完成千上万条数据。所以分页的技术就应运而生。分页可以...
    99+
    2023-09-17
    mysql 数据库 sql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作