再来介绍另一个binlog文件解析的第三方工具my2sql

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

github项目:https://github.com/liuhr/my2sql
gitee链接:https://gitee.com/mirrors/my2sql

my2sql

go版MySQL binlog解析工具,通过解析MySQL binlog ,可以生成原始SQL、回滚SQL、去除主键的INSERT SQL等,也可以生成DML统计信息。类似工具有binlog2sql、MyFlash、my2fback等,改工具基于my2fback、binlog_rollback工具二次开发而来。

用途

  • 数据快速回滚(闪回)
  • 主从切换后新master丢数据的修复
  • 从binlog生成标准SQL,带来的衍生功能
  • 生成DML统计信息,可以找到哪些表更新的比较频繁
  • IO高TPS高, 查出哪些表在频繁更新
  • 找出某个时间点数据库是否有大事务或者长事务
  • 主从延迟,分析主库执行的SQL语句
  • 除了支持常规数据类型,对大部分工具不支持的数据类型做了支持,比如json、blob、text、emoji等数据类型sql生成

github给出的产品性能对比

测试场景my2sqlbinlog2sql
1.1G binlog生成回滚SQL1分40秒65分钟
1.1G binlog生成原始SQL1分30秒50分钟
1.1G binlog生成表DML统计信息、以及事务统计信息40秒不支持

有闲得测试一下

使用限制

  • 使用回滚/闪回功能时,binlog格式必须为row,且binlog_row_image=full, DML统计以及大事务分析不受影响
  • 只能回滚DML, 不能回滚DDL,即drop table是恢复不了的
  • 支持指定-tl时区来解释binlog中time/datetime字段的内容。开始时间-start-datetime与结束时间-stop-datetime也会使用此指定的时区, 但注意此开始与结束时间针对的是binlog event header中保存的unix timestamp。结果中的额外的datetime时间信息都是binlog event header中的unix timestamp
  • 此工具是伪装成从库拉取binlog,需要连接数据库的用户有SELECT, REPLICATION SLAVE, REPLICATION CLIENT权限
  • MySQL8.0版本需要在配置文件中加入default_authentication_plugin =mysql_native_password,用户密码认证必须是mysql_native_password才能解析

下载安装

  • 方式一:下载二进制版本
    有编译好的linux版本(CentOS release 7.x)点击下载Linux版

image.png

  • 方式二:编译安装
    需要go语言环境来做编译
cd $GOPATH/src
git clone https://github.com/liuhr/my2sql.git
cd my2sql/
go build .

直接下载源码包,找到里面的二进制版本直接使用

[root@dba ~]# unzip my2sql-master.zip
[root@dba my2sql-master]# cd my2sql-master
[root@dba my2sql-master]# cp releases/centOS_release_7.x/my2sql /usr/bin/
[root@dba my2sql-master]# my2sql --help
my2back V1.0# 优先使用unique key作为where条件,默认false-U    prefer to use unique key instead of primary key to build where condition for delete/update sql-add-extraInfoWorks with -work-type=2sql|rollback. Print database/table/datetime/binlogposition...info on the line before sql, default false# 找出满足n条sql的事务,默认500条-big-trx-row-limit inttransaction with affected rows greater or equal to this value is considerated as big transaction. Valid values range from 1 to 10, default 30000 (default 30000)-databases stringonly parse these databases, comma seperated, default all.# 生成不带库名的sql-do-not-add-prifixDbPrefix table name witch database name in sql,ex: insert into db1.tb1 (x1, x1) values (y1, y1). # 为每个表生成一个sql文件-file-per-tableOne file for one table if true, else one file for all tables. default false. Attention, always one file for one binlog# 生成的sql是否带全列信息,默认false-full-columnsFor update sql, include unchanged columns. for update and delete, use all columns to build where condition.default false, this is, use changed columns to build set part, use primary/unique key to build where condition-host stringmysql host, default 127.0.0.1 . (default "127.0.0.1")-ignore-databases stringignore parse these databases, comma seperated, default null# 生成的insert语句是否去掉主键,默认false-ignore-primaryKey-forInsertfor insert statement when -workType=2sql, ignore primary key-ignore-tables stringignore parse these tables, comma seperated, default null# 当指定-mode=file 参数时,需要指定-local-binlog-file binlog文件相对路径或绝对路径,可以连续解析多个binlog文件,只需要指定起始文件名,程序会自动持续解析下个文件-local-binlog-file stringlocal binlog files to process, It works with -mode=file -long-trx-seconds inttransaction with duration greater or equal to this value is considerated as long transaction. Valid values range from 0 to 1, default 3600 (default 3600)# repl:默认,伪装成从库解析binlog;file:直接读取binlog文件解析-mode string	valid options are:  repl,file. repl: as a slave to get binlogs from master. file: get binlogs from local filesystem. default repl (default "repl")-mysql-type stringvalid options are:  mysql,mariadb. server of binlog, mysql or mariadb, default mysql (default "mysql")# 将生成的结果存放到制定目录-output-dir stringresult output dir, default current work dir. Attension, result files could be large, set it to a dir with large free space# 将生成的结果打印到屏幕,默认写到文件-output-toScreenJust output to screen,do not write to file-password stringmysql user password.-port uintmysql port, default 3306. (default 3306)-print-interval intworks with -w='stats', print stats info each PrintInterval. Valid values range from 1 to 600, default 30 (default 30)-server-id uintthis program replicates from mysql as slave to read binlogs. Must set this server id unique from other slaves, default 1113306 (default 1113306)# 要解析的sql类型,可选参数insert、update、delete,默认全部解析-sql stringvalid options are:  insert,update,delete. only parse these types of sql, comma seperated, valid types are: insert, update, delete; default is all(insert,update,delete)-start-datetime stringStart reading the binlog at first event having a datetime equal or posterior to the argument, it should be like this: "2020-01-01 01:00:00"-start-file stringbinlog file to start reading-start-pos uintstart reading the binlog at position (default 4)-stop-datetime stringStop reading the binlog at first event having a datetime equal or posterior to the argument, it should be like this: "2020-12-30 01:00:00"-stop-file stringbinlog file to stop reading-stop-pos uintStop reading the binlog at position (default 4)-tables stringonly parse these tables, comma seperated, DONOT prefix with schema, default all.# 线程数-threads uintWorks with -workType=2sql|rollback. threads to run (default 2)-tl stringtime location to parse timestamp/datetime column in binlog, such as Asia/Shanghai. default Local (default "Local")-user stringmysql user. -v    print version# 2sql:生成原始sql,rollback:生成回滚sql,stats:只统计DML、事务信息-work-type stringvalid options are:  2sql,rollback,stats. 2sql: convert binlog to sqls, rollback: generate rollback sqls, stats: analyze transactions. default: 2sql (default "2sql")

开干

# 参数要求,也是默认参数
binlog_format=ROW 
binlog_row_image=FULL# 伪装成从库解析binlog
my2sql -host 127.0.0.1 -user root -password root -port 3306 -mode repl -work-type 2sql -start-file mysql-bin.000011 -output-toScreen
# 直接读取binlog文件解析
my2sql -host 127.0.0.1 -user root -password root -port 3306 -mode file -local-binlog-file /mysqldata/data/mysql-bin.000011 -work-type 2sql -start-file /mysqldata/data/mysql-bin.000011 -output-toScreen# 重新生成一个binlog日志
mysql> flush logs;# 误删表数据
delete from t_student;
# 查看当前biglog日志所在的点
show master logs;# 立即定位结束时间
mysql> select now();# 根据操作时间解析binlog(定位时间缩小范围,避免解析多余的内容),生成回滚日志
my2sql -host 127.0.0.1 -user root -password root -port 3306 -databases mdb -tables t_student -work-type rollback -start-file mysql-bin.000011 -sql delete -start-datetime "2023-02-23 02:36:17" --stop-datetime "2023-02-23 02:38:17" -output-dir /mysqldata/backup/# 将生成的DML语句在库里source恢复
source /mysqldata/backup/rollback.11.sql

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Maven 中引用其他项目jar包出现BOOT-INF问题

问题 在B项目中引入A项目的类,但是发现怎么也引入不进来 A项目打包之后,想在B项目中引用jar 在B项目中发现类文件无法引用 参考网上进行清缓存等一系列操作都没有解决。 最后发现引用的jar包中包含BOOT-INF, 然后去A项目中查找&#xff…

基于回溯搜索优化的BP神经网络(分类应用) - 附代码

基于回溯搜索优化的BP神经网络(分类应用) - 附代码 文章目录 基于回溯搜索优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.回溯搜索优化BP神经网络3.1 BP神经网络参数设置3.2 回溯搜索算法应用 4.测试结果…

基于MFC和OpenCV实现人脸识别

基于MFC和OpenCV实现人脸识别 文章目录 基于MFC和OpenCV实现人脸识别1. 项目说明1. 创建项目2. 启动窗口3. 登录窗口-添加窗口、从启动窗口跳转4. 启动窗口-美化按钮5. 登录窗口-美化按钮、雪花视频6. 注册窗口-美化按钮、雪花视频、从启动窗口跳转7. 注册窗口-开启摄像头8. 注…

大恒IFrameData IImageData转bmp HObject Mat

大恒工业相机采集的帧数据转为其他8bit图像格式 C#转为bmp格式转为Halcon的HObject格式转为OpenCVSharp的Mat格式 回调采集图像的数据类型为IFrameData,单帧采集的数据类型为IImageData,两者的区别为IImageData类多了一个**Destroy()**方法 C# 转为bm…

C++标准模板(STL)- 类型支持 (定宽整数类型)(int8_t,int_fast8_t,int_least8_t,intmax_t,intptr_t)

定宽整数类型 类型 定义于头文件 <cstdint> int8_tint16_tint32_tint64_t (可选) 分别为宽度恰为 8、16、32 和 64 位的有符号整数类型 无填充位并对负值使用补码 &#xff08;仅若实现支持该类型才提供&#xff09; (typedef) int_fast8_tint_fast16_tint_fast32_tint…

第二章 线性表

线性表 线性表的基本概念线性表的顺序存储线性表顺序存储的类型定义线性表基本运算在顺序表上的实现顺序表实现算法的分析 线性表的链接存储单链表的类型定义线性表的基本运算在单链表上的实现 其他运算在单链表上的实现建表删除重复结点 其他链表循环链表双向循环链表 顺序实现…

如何将图片存到数据库(以mysql为例), 使用ORM Bee更加简单

如何将图片存到数据库 1. 创建数据库: 2. 生成Javabean public class ImageExam implements Serializable {private static final long serialVersionUID 1596686274309L;private Integer id;private String name; // private Blob image;private InputStream image; //将In…

【算法练习Day12】树的递归遍历非递归遍历

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 递归遍历前序遍历中序遍历后…

《计算机视觉中的多视图几何》笔记(12)

12 Structure Computation 本章讲述如何在已知基本矩阵 F F F和两幅图像中若干对对应点 x ↔ x ′ x \leftrightarrow x x↔x′的情况下计算三维空间点 X X X的位置。 文章目录 12 Structure Computation12.1 Problem statement12.2 Linear triangulation methods12.3 Geomet…

AndroidStudio精品插件集

官网 项目地址&#xff1a;Github博客地址&#xff1a;Studio 精品插件推荐 使用需知 所有插件在 Android Studio 2022.3.1.18&#xff08;长颈鹿&#xff09;上测试均没有问题&#xff0c;推荐使用此版本Android Studio 2022.3.1.18&#xff08;长颈鹿&#xff09;正式版下…

计算机网络(六):应用层

参考引用 计算机网络微课堂-湖科大教书匠计算机网络&#xff08;第7版&#xff09;-谢希仁 1. 应用层概述 应用层是计算机网络体系结构的最顶层&#xff0c;是设计和建立计算机网络的最终目的&#xff0c;也是计算机网络中发展最快的部分 早期基于文本的应用 (电子邮件、远程登…

【计算机网络】HTTPS协议详解

文章目录 一、HTTPS协议 介绍 1、1 HTTP协议不安全的体现 1、2 什么是 HTTPS协议 二、加密的一些概念 2、1 怎么理解加密 2、2 为什么要加密 2、3 常见的加密方式 2、2、1 对称加密 2、2、2 非对称加密 三、HTTPS协议探究加密过程 3、1 只使用对称加密 3、2 只是用非对称加密 3…

JVM篇---第三篇

系列文章目录 文章目录 系列文章目录一、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?二、Java内存结构三、说说对象分配规则一、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文…

23.3 Bootstrap 框架4

1. 轮播 1.1 轮播样式 在Bootstrap 5中, 创建轮播(Carousel)的相关类名及其介绍: * 1. carousel: 轮播容器的类名, 用于标识一个轮播组件. * 2. slide: 切换图片的过渡和动画效果. * 3. carousel-inner: 轮播项容器的类名, 用于包含轮播项(轮播图底下椭圆点, 轮播的过程可以显…

【Docker】搭建 Docker 镜像仓库

文章目录 前言&#xff1a;公有仓库和私有仓库公共镜像仓库私有镜像仓库 一、搭建 Docker 镜像仓库1.1 搭建简化版的镜像仓库1.2 搭建带有图形化界面的镜像仓库1.3 配置 Docker 信任地址 二、向私有镜像仓库推送和拉取镜像2.1 推送本地镜像到私有仓库2.2 拉取私有仓库中的镜像 …

机器学习笔记(二)

过拟合 如下图左边,模型出现了过拟合现象 为了解决过拟合现象, 其中一个做法是多收集数据,如右图。 第二种做法是减少模型的特征数量,即x 第三种做法是正则化 正则化就是减少x前面的参数 w的数值, 不用消除x 正则化的梯度下降如下, 因为只是缩小了w的值,而 b的值保持不变 …

通过BeanFactotyPostProcessor动态修改@FeignClient的path

最近项目有个需求&#xff0c;要在启动后&#xff0c;动态修改FeignClient的请求路径&#xff0c;网上找到的基本都是在FeignClient里使用${…}&#xff0c;通过配置文件来定义Feign的接口路径&#xff0c;这并不能满足我们的需求 由于某些特殊原因&#xff0c;我们的每个接口…

floyd算法细节

这个不是一篇学习性文章 主要是针对这几天思考的问题进行一些回答 floyD在计网和数据结构和图模型中有广泛的应用算法 很简单但是其中蕴含的原理值得细究。 弗洛伊德算法(Floyd)主要针对多源最短路径,且可以解决路径中有负权的情况(不包含负权回路),但是迪杰斯特拉算法只…

uni-app:实现页面效果3

效果 代码 <template><view><!-- 风速风向检测器--><view class"content_position"><view class"content"><view class"SN"><view class"SN_title">设备1</view><view class&quo…

【新的小主机】向日葵远程控制ubuntu

向日葵远程控制ubuntu 一、简介二、问题及解决方法2.1 向日葵远程连接Ubuntu22主机黑屏&#xff1f;2.2 Ubuntu如何向日葵开机自启&#xff1f;2.3 无显示器情况下&#xff0c;windows远程桌面连接Ubuntu? 三、美化桌面3.1 安装/解压3.2 设置3.3 右上角显示实时网速 四、安装d…