MySQL误删数据找回神器之binlog2sql

2023-10-31

一、使用前提

1. binlog_format为ROW,且binlog_row_image为full或noblog,默认为full。

2. 必须开启MySQL Server,理由有如下两点:

   ① 它是基于BINLOG_DUMP协议来获取binlog内容

   ② 需要读取server端information_schema.COLUMNS表,获取表结构的元信息,拼接成可视化的sql语句

3.需要一个数据库用户,授予最小权限如下:

mysql> GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO bin2sql_user IDENTIFIED BY 'your password';

注:

select:需要读取server端information_schema.COLUMNS表,获取表结构的元信息,拼接成可视化的sql语句

super/replication client:两个权限都可以,需要执行'SHOW MASTER STATUS', 获取server端的binlog列表

replication slave:通过BINLOG_DUMP协议获取binlog内容的权限

4.MySQL SERVER需要以下配置

[mysqld]
log_bin = /data/mysql/mysql-bin******.log
binlog_format = row
binlog_row_image = full   --不配置默认就是full

5.依赖python

Python版本 2.7 或 3.4+

二、安装过程

1.上传binlog2sql.tar.gz到/usr/local/下并解压(所有包在最下面附件获取,目录按照个人喜好即可)

[root@mysqlserver]# rz  binlog2sql.tar.gz
[root@mysqlserver]# tar –xf binlog2sql.tar.gz

2.安装如下依赖包

该工具的使用依赖以下三个包:

PyMySQL==0.7.8
wheel==0.24.0
mysql-replication==0.9 

安装过程如下:

[root@mysqlserver]# cd /usr/local/binlog2sql/binlog2sql_dependencies/
[root@mysqlserver]# tar -xf setuptools-0.6c11.tar.gz
[root@mysqlserver]# cd setuptools-0.6c11
[root@mysqlserver]# python setup.py install
[root@mysqlserver]# cd ..
[root@mysqlserver]# tar xvf pip-9.0.1.tar.gz
[root@mysqlserver]# cd pip-9.0.1
[root@mysqlserver]# python setup.py install
[root@mysqlserver]# cd ..
[root@mysqlserver]# pip install *.whl mysql-replication-0.9.tar.gz

三、Binlog2sql的使用方法

1.binlog2sql参数说明

--stop-never 持续同步binlog。可选。不加则同步至执行命令时最新的binlog位置。
-K, --no-primary-key 对INSERT语句去除主键。可选。
-B, --flashback 生成回滚语句,可解析大文件,不受内存限制,每打印一千行加一句SLEEP SELECT(1)。可选。与stop-never或no-primary-key不能同时添加。
解析范围控制
--start-file 起始解析文件。必须。
--start-position/--start-pos start-file的起始解析位置。可选。默认为start-file的起始位置。
--stop-file/--end-file 末尾解析文件。可选。默认为start-file同一个文件。若解析模式为stop-never,此选项失效。
--stop-position/--end-pos stop-file的末尾解析位置。可选。默认为stop-file的最末位置;若解析模式为stop-never,此选项失效。
--start-datetime 从哪个时间点的binlog开始解析,格式必须为datetime,如'2016-11-11 11:11:11'。可选。默认不过滤。
--stop-datetime 到哪个时间点的binlog停止解析,格式必须为datetime,如'2016-11-11 11:11:11'。可选。默认不过滤。
对象过滤
-d, --databases 只输出目标db的sql。可选。默认为空。
-t, --tables 只输出目标tables的sql。可选。默认为空。
可以通过--help查看:python binlog2sql.py --help

2.MySQL参数说明

-h host                      --主机
-P port                      --端口
-u user                      --数据库用户
-p password                  --密码

3.使用举例

下面使用binlog2sql进行格式为ROW的binlog生成www库t6表的标准命令

[root@mysqlserver]# python /data/app/binlog2sql/binlog2sql.py -h localhost -u bin2sql_user -p 123456 -d www -t t6 --start-file mysql-bin.000187 --start-pos=24524030 --stop-pos=24524244  > roll.sql

现在对www这个库的所有操作生成反向SQL,这个时候需要在上面语句的基础上带一个-B参数,就是flashback闪回的意思

[root@mysqlserver]# python /data/app/binlog2sql/binlog2sql.py -h localhost -u bin2sql_user -p 123456 -d www -t t6 --start-file mysql-bin.000187 --start-pos=24524030 --stop-pos=24524244 -B > roll.sql

然后将roll.sql找出对应误删的数据,登陆数据库执行source即可

附件:百度网盘下载链接

提取码:hv91

***注意:当出现误update时,该工具有局限性,误update后数据不能再有变更,否则有极大可能失败导致数据有误***

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL误删数据找回神器之binlog2sql 的相关文章

  • MySQL 将所有空格替换为 -

    我怎样才能删除一行中的所有空格 我在这里看到很多相同的问题 但所有答案都使用替换选项 替换只能去除一个空格 而不是全部 例如 a b c 变为 a b c Thanks 这可以通过以下 MySQL 函数来实现 SELECT REPLACE
  • 可变字段数的数据库结构设计

    对于某种库存系统 用户可以创建一个item type它具有某些属性 现在每种类型的属性数量都是可变的 我应该如何使用 DBStructure 来解决这个问题 只需制作 X 份量propertyX领域 还是有其他方法可以以这种方式实现灵活性
  • 在mysql中使用smallint数据类型而不是int真的可以节省内存吗?

    在 mysql 表中使用 Smallint 数据类型而不是常规 int 是否真的可以提高内存使用率 无论如何 硬件不会为所有数据分配完整的 64 位字大小吗 如果它不分配完整的字 那么我们是否会看到由于必须从内存中分配的 64 位字中解析出
  • 如果 Count(*) 为零,则返回 NULL

    我有以下 mysql 查询 SELECT count student name AS total student school name FROM student LEFT JOIN school info ON school info s
  • 无需 sudo 连接本地 MySQL 服务器

    这个命令 mysql uroot p 给出以下错误 ERROR 2002 HY000 Can t connect to local MySQL server through socket var lib mysql mysql sock 1
  • MYSQL 连接结果集在 IN () 期间在 where 子句中擦除结果?

    重磅编辑 最初的问题是基于对 IN 如何处理联接结果集中的列的误解 我认为 IN some join some column 会将结果列视为列表并循环遍历每一行 事实证明它只查看第一行 因此 改编后的问题是 MySQL 中是否有任何东西可以
  • 在 Symfony2 (Doctrine) 和 MySQL 中启用微秒

    我有一个具有一列 日期时间 类型的实体来存储时间戳 ORM Column type datetime protected timestamp 我有 MySQL 5 5 40 我发现它不存储微秒 所以我切换到 5 6 21 并导入了所有表格和
  • PHP、MySQL 验证故障且搜索不起作用?

    我创建了一个小的注册粘性表格 一切工作正常 但如果我输入任何错误的值 例如姓名中的数字 年龄中的字母甚至错误的电子邮件格式 那么数据仍然保存在数据库中 我无法找出验证问题 另外一个是搜索选项 每当我在搜索框中输入任何名字或姓氏时 它都应该显
  • Django 在第二个数据库上调用存储过程

    我试图在多数据库 Django 安装上调用存储过程 但没有获得结果 存储过程 位于辅助数据库上 在 Django 中始终返回一个空数组 但在 mysql 客户端中执行时确实会出现预期结果 My view py文件 从 SomeDBModel
  • Perl 和 MySql 中的 utf8 编码

    我的数据库 MySql 有 utf8 general 排序规则 我正在从数据库访问数据并显示一个网页 用 Perl 开发 它显示瑞典语字符 和不同的字符 我检查了Mysql数据库 在那里我可以看到其中包含 字符的数据 看来 访问数据时存在编
  • 从条件表中获取 WHERE 子句的条件

    我创建了以下简单的DataModel 我用以下数据填充了表格 1 桌子Customer INSERT INTO test customer CustomerName Country RegistrationDate VALUES Custo
  • 如何在数据库中存储世界各地的所有地理位置?

    我在一家旅游网站工作 我需要存储游客去过的旅游景点 我需要位置表中的地点是唯一的 以便我可以知道特定地点的受欢迎程度等 我还需要存储在我身边的所有国家 州 城市 因为我不能依赖用户输入 数据库是MySQL 看到这些位置的可用数据集 我发现存
  • MySQL:不喜欢

    我的数据库中有这些文本 categories posts categories news posts add news add 我不想选择带有categories 我使用这样的查询 SELECT FROM developer configu
  • 如何配置 Spring boot 以使用两个数据库?

    我在用春季启动 2 X with 休眠5连接两个不同的 MySQL 数据库 Bar 和 Foo 在不同的服务器上 我试图列出一个实体的所有信息 自己的属性和 OneToMany and ManyToOne关系 来自 REST 控制器中的方法
  • Codeigniter Cart - 将数据保存在数据库中 - 如何处理?

    我需要帮助在我的网络应用程序中处理订单和购物车 我决定使用 Codeigniter 2 中内置的 Cart 库 我看过一些关于 Cart 库的教程 我知道如何使用它 但我不知道 我什么时候应该在数据库中创建 保存该订单 当用户将商品添加到购
  • SQL仅选择列上具有最大值的行[重复]

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 这个问题在这里已经有答案了 我有这个文件表 这里是简化版本 id rev content 1 1 2 1 1 2 1 3 如何
  • 在准备好的语句中使用“like”通配符

    我正在使用准备好的语句来执行 mysql 数据库查询 我想实现基于某种关键字的搜索功能 为此我需要使用LIKE关键字 我知道的就这么多 我以前也使用过准备好的语句 但我不知道如何使用它LIKE因为从下面的代码中我将在哪里添加 keyword
  • MySQL:进行基本搜索

    我的数据库中有一个名称表 我希望对其进行模糊搜索 例如我的数据库包含 Name ID John Smith 1 Edward Smith 2 Gabriel Gray 3 Paul Roberts 4 目前 当我通过 python 搜索数据
  • 比在配置文件中以纯文本形式存储 mysql 密码更好的方法吗?

    许多 PHP 程序要求用户将 mysql 密码以纯文本 字符串或常量 形式存储在应用程序根目录的配置文件中 这一直困扰着我 这么多年过去了 还有更好的方法吗 到目前为止 我已经提出了两个最小的安全提升方案 使用 htaccess 中的规则使
  • 错误 1366 (HY000):整数值不正确:第 1 行的列“id”的“”[已关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 My code sql INSERT INTO static table name sql join array key

随机推荐

  • Java方法和数组练习

    个人简介 作者简介 大家好 我是W chuanqi 一个编程爱好者 个人主页 W chaunqi 支持我 点赞 收藏 留言 愿你我共勉 没有什么比勇气更温文尔雅 没有什么比怯懦更冷酷无情 Java方法和数组练习 1 获取每月天数 根据输入的
  • el-upload 上传视频并回显

    el upload上传视频 并且显示上传的视频
  • python基础编程_25_拷贝函数,copy()

    import copy a 1 2 3 4 a b b a 引用 除非直接给a重新赋值 否则a变则b变 b变则a变 c copy copy a 浅复制 只会拷贝父对象 不会拷贝父对象中的子对象 所以若a的子对象变则c 变 但是父对象变c不会
  • C++利用Poco库实现QT的信号与槽效果

    C 利用Poco库实现QT的信号与槽效果 定义信号类 信号类的使用 定义类型Model main头文件引用 main定义信号发送类 main定义信号接收类 main主函数 引用的Poco库 参考资源 C 利用Poco库实现QT的信号与槽效果
  • Python3,使用Flask来实现接口请求

    Flask之实现接口请求 1 引言 2 Flask 2 1 flask 的环境安装 2 2 flask构建web框架 2 3 flask构建get请求 2 4 flask构建post请求 2 41 代码编写 2 4 2 安装RestClie
  • j2me总结(三)

    高级界面开发 二 本编介绍高级界面下的类 1 Form Form是高级界面中最重要的类 是一个典型的容器控件类 是一个包含多个UI组件的屏幕对象 故名思意 form为表单的意思 在form中可以包含Item类 Form上的每一个元素都会分配
  • vue .number修饰符

    项目中遇到这样一个问题 某个input框用来输入价格之类的数字 我想对input的取值区间做判断 但是发现输入后变成了String类型 所以用了vue中的 number修饰符 这样就可以获得Number类型了 很方便
  • Qt 5 帮助文档的使用

    Qt 5 帮助文档的使用 Qt 5 帮助文档的使用学习图形界面开发 肯定离不开帮助文档的使用 因为它不像 C 语言那样就那么几个函数接口 图形接口的接口可以用海量来形容 常用的我们可能能记住 其它的真的没有必要去记 用到什么就去帮助文档查看
  • C++ 读写CSV文件

    include
  • Java异常之自定义异常类详解和代码举例

    Java语言的异常 异常处理机制 Java中的异常概念 1 异常是程序在运行过程中由于算法问或软件设计等问题导致的程序异常事件 2 异常的前提是可以识别并被捕获的 3 Java以面向对象的方法来处理异常的 Java提供了各种类型的异常类 4
  • 数据结构day1(2023.7.13)

    一 Xmind整理 二 课上练习 练习1 static 全局变量 局部变量作用域 int a 0 全局变量 生命周期和作用于都是从定义开始到整个文件结束 void fun int b 0 局部变量 static int c 0 局部变量 作
  • 2018第一届世界区块链大会 区块链大咖畅谈区块链宏观经济

    2018年4月24日上午 第一届世界区块链大会 三点钟峰会 W B C 在中国澳门召开 以 技术重构世界 为主题 要 驱动幸福世界 链接美好未来 大会由世界区块链联合协会首倡 世界区块链大会组委会 三点钟 深创学院主办 深圳大学区块链研究院
  • (转)找不到或无法加载主类(Could not find or load main class )

    原文 https blog csdn net shymi1991 article details 50540214 当我们试图在命令行编译运行一个简单的java程序HelloWorld java 编译命令javac HelloWorld j
  • 面经九2023.2.3上午笔试和群面

    面经九2023 2 3 上笔试和群面 1 根据指定的数据模型 完成对应SQl语句的编写 edu class表 Student表 要求1 使用左连接查询出year为2022的学生 且只查询出10条数据 插入数据 INSERT INTO ed
  • 安卓游戏辅助开发!想给金三银四找工作的程序员几点建议,面试建议

    前言 相信前几天在朋友圈晒无聊的小伙伴们 也陆续结束了假期 很多公司为了员工的健康考虑 启动了远程办公模式 床在桌边 饭在桌上 家里一切都那么安逸 专心工作真的是一件难事 远程工作最大的敌人就是 你的自制力 战胜自己 以后你一定是做成大事的
  • 面试题-Redis、MongoDB、Memcached

    一 缓存 搞懂缓存那些事 https blog csdn net a724888 article details 80785020 区别2 二 Redis MongoDB Memcached区别 区别1 https www cnblogs
  • 12、视图解析器与模板引擎

    文章目录 1 视图解析 1 1 spring boot支持的第三方模板引擎技术 1 2 视图解析原理流程 2 模板引擎 Thymeleaf 2 1 thymeleaf简介 2 2 基本语法 1 表达式 2 字面量 3 文本操作 4 数学运算
  • Python 自然语言处理 文本分类 地铁方面留言文本

    将关于地铁的留言文本进行自动分类 不要着急 一步步来 导入需要的库 import numpy as np import pandas as pd import jieba 分词 import re 正则 from fnmatch impor
  • 广西公需科目 当代科学技术前沿知识 考试答案

    用百度的识字api 可以识别广西公需科目 当代科学技术前沿知识 的文档 当代科学技术前沿知识读本 电子书 全文 pdf 这个可以在平台下载完了就识别出来就好搜答案了 自动考试视频 guagnxi视频 mp4 考试代码 for i in co
  • MySQL误删数据找回神器之binlog2sql

    一 使用前提 1 binlog format为ROW 且binlog row image为full或noblog 默认为full 2 必须开启MySQL Server 理由有如下两点 它是基于BINLOG DUMP协议来获取binlog内容