数据库逆向工程工具reverse_sql

reverse_sql 是一个用于解析和转换 MySQL 二进制日志(binlog)的工具。它可以将二进制日志文件中记录的数据库更改操作(如插入、更新、删除)转换为反向的 SQL 语句,以便对系统或人为产生的误操作进行数据回滚和恢复。
**ps:**二进制日志需要开启(一键脚本安装的MySQL默认开启)
SHOW VARIABLES LIKE ‘log_bin’;
image.png
**ps:**二进制日志需要为ROW格式(一键脚本安装的MySQL默认ROW)
SHOW VARIABLES LIKE ‘binlog_format’;
image.png

查看二进制日志的路径

SHOW VARIABLES LIKE ‘log_bin_basename’;
image.png
image.png

定位需要恢复时间段

  • 根据二进制日志生成时间确定需要恢复的二进制日志,以ON.000706为例,该日志中记录的为4月13日02:01至4月14日02:00之间的操作

image.png

  • 在二进制日志的路径下将日志编译成可读的SQL文件

/usr/local/mysql/bin/mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v --skip-gtids ON.000706 >000706.sql
image.png

  • 查看SQL文件查询具体操作的时间点

image.png
**ps:**使用数据库逆向工程工具时必须填写日志的开始时间和结束时间,如果对操作时间较为明确,可以不做时间段的定位

下载数据库逆向工程工具

reverse_sql-reverse_sql_progress.zip

上传文件

  • 将下载后的工具上传至home文件夹中,并解压

unzip reverse_sql-reverse_sql_progress.zip
image.png

  • 将reverse_sql-reverse_sql_progress文件夹下的reverse_sql_progress文件给可执行权限

chmod +x reverse_sql_progress
image.png

生成回滚SQL文件

  • 在reverse_sql-reverse_sql_progress文件夹下执行生成命令,示例如下:

./reverse_sql_progress -ot ocr_invoice_main -op update -H 127.0.0.1 -P 3306 -u root -p A_isinojs#888 -d stms230302 --binlog-file /home/mysql/mysql8/ON.000706 --start-time “2024-04-13 14:00:01” --end-time “2024-04-13 17:49:00” --print

  • 参数说明:

-ot 要恢复的表,多张表用,逗号分隔
-op 误操作时的命令(insert/update/delete)
-H MySQL主机IP
-P MySQL端口号
-u MySQL用户名
-p MySQL密码
-d MySQL数据库名
–binlog-file 需要生成回滚SQL的Binlog文件
–start-time 开始时间
–end-time 结束时间
–print 将解析后的SQL输出到终端
image.png
image.png

下载回滚SQL文件

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/42387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM专题之垃圾收集器

JVM参数 3.1.1 标准参数 -version -help -server -cp 3.1.2 -X参数 非标准参数,也就是在JDK各个版本中可能会变动 ``` -Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 -Xmixed 混合模式,JVM自己来决定 3.1.3 -XX参数 > 使用得最多的参数类型 > > 非…

RedHat运维-Linux文本操作基础-牛客AWK

1. 查看static这个连接文件是否自动连接的命令是____________________________________; 2. 查看default这个连接文件是否自动连接的命令是_____________________________________; 3. 查看con0这个连接文件是否自动连接的命令是_______________________…

【Python】已解决:(paddleocr导包报错)ModuleNotFoundError: No module named ‘paddle’

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:(paddleocr导包报错)ModuleNotFoundError: No module named ‘paddle’ 一、分析问题背景 近日,一些使用PaddleOCR库进行文字…

Python数据分析案例49——基于机器学习的垃圾邮件分类系统构建(朴素贝叶斯,支持向量机)

案例背景 trec06c是非常经典的邮件分类的数据,还是难能可贵的中文数据集。 这个数据集从一堆txt压缩包里面提取出来整理为excel文件还真不容不易,肯定要做一下文本分类。 虽然现在文本分类基本都是深度学习了,但是传统的机器学习也能做。本案…

C#架构师的成长之路

成为一名C#架构师不仅需要深厚的技术功底,还需要广泛的行业知识、优秀的团队协作能力和领导力。以下是C#架构师成长之路上的关键步骤和技能要求: 1. 扎实的技术基础 精通C#语言:深入理解C#的语法、特性,包括但不限于泛型、多线程…

Xilinx FPGA:vivado关于真双端口的串口传输数据的实验

一、实验内容 用一个真双端RAM,端口A和端口B同时向RAM里写入数据0-99,A端口读出单数并存入单端口RAM1中,B端口读出双数并存入但端口RAM2中,当检测到按键1到来时将RAM1中的单数读出显示到PC端,当检测到按键2到来时&…

Vim编辑器与Shell命令脚本

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 目录 一、Vim文本编辑器 二、编写Shell脚本 三、流程控制语句 四、计划任务服务程序 致谢 一、Vim文本编辑器 “在Linux系统中一切都是文件&am…

Rust 程序设计语言学习——函数式语言功能:迭代器和闭包

Rust 的闭包(closures)是可以保存在一个变量中或作为参数传递给其他函数的匿名函数。可以在一个地方创建闭包,然后在不同的上下文中执行闭包运算。不同于函数,闭包允许捕获被定义时所在作用域中的值。 迭代器(iterato…

C++ STL 随机数用法介绍

目录 一:C语言中的随机数 二:C++中的随机数 1. 生成随机数的例子 2. 随机数引擎 3. 随机数引擎适配器 4. C++中预定义的随机数引擎,引擎适配器 5. 随机数分布 一:C语言中的随机数 <stdlib.h>//初始化随机种子 srand(static_cast<unsigned int>(time(nullptr)…

C#面: 依赖注入有哪几种方式?

依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;是一种设计模式&#xff0c;用于解耦组件之间的依赖关系。在C#中&#xff0c;常见的依赖注入方式有以下几种&#xff1a; 构造函数注入&#xff08;Constructor Injection&#xff09;&#xff1a;通过…

dependencyManagement的作用、nacos的学习

使用SpringCloudAlibaba注意各组件的版本适配 SpringCloudAlibaba已经包含了适配的各组件&#xff08;nacos、MQ等&#xff09;的版本号&#xff0c;也是一个版本仲裁者&#xff0c;但是可能已经有了父项目Spring-Boot-Starter-Parent这个版本仲裁者&#xff0c;又不能加多个父…

什么是独立服务器?

独立服务器是指一个单独的物理服务器&#xff0c;整体的硬件设施都是独立存在的&#xff0c;有着强大的性能&#xff0c;只需要运行用户个人的数据信息&#xff0c;并且可以享受到独立服务器的硬件与软件&#xff0c;当网站有着大量的用户进行访问或者是需要运行大型的软件时&a…

leetcode热题100.零钱兑换(动态规划)

今天给大家分享一道动态规划的常考题&#xff0c;零钱兑换&#xff0c;很有趣的动态规划题目&#xff0c;希望可以对大家找工作过程中起到帮助&#xff0c;帮助大家拓展下思维 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xf…

6、Redis系统-数据结构-06-跳表

六、跳表&#xff08;Skiplist&#xff09; 跳表是一种高效的动态数据结构&#xff0c;可以用于实现有序集合&#xff08;Sorted Set&#xff0c;Zset&#xff09;。与平衡树相比&#xff0c;跳表具有实现简单、效率高的优点&#xff0c;因此被 Redis 选用作为有序集合的底层数…

阶段三:项目开发---搭建项目前后端系统基础架构:任务13:实现基本的登录功能

任务描述 任务名称&#xff1a; 实现基本的登录功能 知识点&#xff1a; 了解前端Vue项目的基本执行过程 重 点&#xff1a; 构建项目的基本登陆功能 内 容&#xff1a; 通过实现项目的基本登录功能&#xff0c;来了解前端Vue项目的基本执行过程&#xff0c;并完成基…

如何让代码兼容 Python 2 和 Python 3?Future 库助你一臂之力

目录 01Future 是什么? 为什么选择 Future? 安装与配置 02Future 的基本用法 1、兼容 print 函数 2、兼容整数除法 3、兼容 Unicode 字符串 03Future 的高级功能 1. 处理字符串与字节 2. 统一异常处理…

linux kthread任务管理

目录 一、linux 创建内核线程1.1 kthread_create1.2 kthread_create_worker kthread_queue_work 二、设置线程优先级和调度策略2.1 sched_setscheduler2.2 调度策略 一、linux 创建内核线程 1.1 kthread_create 在 linux 中&#xff0c;可以使用 kthread_create 接口创建内核…

移动校园(7)ii:uniapp路由响应拦截器处理token,以及微信小程序报错当前页面正在处于跳转状态,请稍后再进行跳转....

依据昨天的写完&#xff0c;在token过期之后&#xff0c;再次调用接口&#xff0c;会触发后端拦截&#xff0c;扔进全局错误处理中间件 前端说明提示都没有&#xff0c;只有一个这个&#xff0c;现在优化一下&#xff0c;再写一个类似全局后置守卫&#xff0c;当状态码是401的时…

MySQL——数据连接池

数据库连接 --- 执行完毕 --- 释放&#xff08;连接到释放的过程十分浪费系统资源&#xff09; 池化技术&#xff1a;准备一些预先的资源&#xff0c;过来就连接预先准备好的 编写连接池&#xff0c;实现一个接口 DataSource 开源数据源实现&#xff08;拿来即用&#xff09;…

增强安全防护,解读智慧校园系统的登录日志功能

在构建智慧校园系统时&#xff0c;登录日志功能扮演着不可或缺的角色&#xff0c;它不仅是系统安全的守护者&#xff0c;也是提升管理效率和确保合规性的有力工具。这一机制详细记录每次登录尝试的方方面面&#xff0c;涵盖了时间戳、用户身份、登录来源的IP地址乃至使用的设备…