当前位置: 首页 > news >正文

误删mysql某表数据,通过binlog2sql工具数据恢复

一次执行sql 没加事务的血案:

delete from base_menu;
insert into base_menu ***;
insert into base_menu ***;
insert into base_menu ***;
.....

1.导读

binlog2sql是大众点评开源的一款用于解析binlog的工具,在测试环境试用了下,还不错。

DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚。传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据。此法费时费力,甚至需要停机维护,并不适合快速回滚。也有团队利用LVM快照来缩短恢复时间,但快照的缺点是会影响mysql的性能。现在有不少好用而且效率又高的开源闪回工具如binlog2sql、mysqlbinlog_flashback,这些工具在工作中给DBA减轻了不少痛苦,以下针对binlog2sql的使用进行实践演练。

2.用途

binlog2sql的用途:

  • 数据快速回滚(闪回)
  • 主从切换后数据不一致的修复
  • 从binlog生成标准SQL,带来的衍生功能

3.环境准备

安装binlog2sql前先安装git和pip:

yum -y install epel-release yum -y install git  python-pip

4.安装binlog2sql:

git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sqlpip install -r requirements.txt

5. mysql相关:

5.1 mysql 需要开启binlog;mysql8默认开启

5.2 操作用户需要一下权限

SELECT, REPLICATION SLAVE, REPLICATION CLIENT

权限说明:

  • select:需要读取server端information_schema.COLUMNS表,获取表结构的元信息,拼接成可视化的sql语句
  • super/replication client:两个权限都可以,需要执行’SHOW MASTER STATUS’, 获取server端的binlog列表
  • replication slave:通过BINLOG_DUMP协议获取binlog内容的权限

6. 参数说明

binlog2sql的使用参数说明:

mysql连接配置

-h host; -P port; -u user; -p password

解析模式

–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。可选。默认为空。

7. 实战

下面我们使用binlog2sql进行格式为ROW的binlog生成hsp-base库base_menu表的标准SQL

7.1 正向sql:

[root@hch binlog2sql]# python /root/binlog2sql/binlog2sql/binlog2sql.py -h 172.***.205 -u root -p 123456 -d  hps-base -t base_menu  --start-file binlog.000004 --start-datetime '2025-10-14 15:00:00' --stop-datetime '2025-10-14 15:25:00'  > /root/application/a.txt

7.2 反向sql:–flashback:生成回滚sql

python /root/binlog2sql/binlog2sql/binlog2sql.py -h  172.***.205 -u root -p 123456 -d  hps-base -t base_menu  --start-file binlog.000004 --flashback  --start-datetime '2025-10-14 15:00:00' --stop-datetime '2025-10-14 15:25:00'  > /root/application/a_bak.txt

7.2 执行sql进行恢复

1.下载文件a_bak.txt
2.确认找到 需要恢复的sql,注意这里是回滚sql,拿到可以直接执行的
3.通过平时用的sql工具进行sql恢复

7.3 最后登录到系统再验证

http://www.dtcms.com/a/482244.html

相关文章:

  • MyBatisPlus中LambdaQueryChainWrapper链式条件查询的常用示例
  • STM32与W25Q64 SPI通信全解析
  • 创办个人网站淘客怎样做网站
  • 网站流量用完了湘潭网络公司
  • Cogent DataHub vs Kepware,两大工业数据中间件的深度对比分析
  • ElasticSearch沙盒绕过漏洞复现:原理详解+环境搭建+渗透实践(CVE-2015-1427)
  • 学习笔记《区块链技术与应用》ETH 第三天 GHOST协议
  • 分辨海外IP是否为住宅IP的方法
  • 处理文本编辑器存的json格式报错问题,对编辑器存的字段进行转换处理,再通过json返回
  • 电子电气架构 --- 智能化浪潮下汽车软件架构的革新与生态重构
  • 【春秋云镜】CVE-2024-9047 Wordpress File Upload 插件 文件遍历漏洞
  • yahoo怎么提交网站下载拼多多app免费下载
  • php网站怎么注入网业协同是什么意思
  • 天机学堂day10领取优惠券接口编写mapper层sql语句时无法解析表的解决办法(更加完整、详细图解)
  • 力扣Hot100--102.二叉树的层序遍历
  • 【Linux】udp网络程序
  • 网站首页地址 网站域名海外购物商城
  • 解码Linux文件IO之标准IO
  • React惰性初始化函数(Lazy Initializer)(首次渲染时执行一次,只执行一次,应对昂贵初始化逻辑)(传入一个函数、传入函数)
  • C++中的类
  • 网站上线 流程wordpress禁止加载谷歌字体
  • 阿里云是做网站的吗榆林公司做网站
  • 2018年10月江苏省自考《信息组织》试题
  • 跨域处理的核心是解决浏览器的“同源策略”限制,主流方案
  • Web 开发 30
  • 小迪web自用笔记62
  • Nginx 代理 WebSocket 失败排查全过程:从 426 到连接成功的完整复盘
  • multi-head attention 多头注意力实现细节
  • 第七章 完整的模型训练
  • 08-Vue3组合式API最佳实践指南