技术分享 | my2sql 接入 DBeaver 案例分享

MySQL运维实战:如何利用my2sql解决数据库性能瓶颈问题 本文详细介绍了如何利用my2sql工具解决MySQL数据库性能瓶颈问题。通过解析binlog日志,my2sql能高效识别长事务、大事务和热点表,提供数据回滚、SQL解析和统计分析等功能,显著提升数据库运维效率。文章结合实战案例,展示了my2sql在性能问题定位和高级应用场景中的强大能力。 阅读详情

作者:xuty

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


一. 大纲

本文分享下对于 my2sql 的一些改进,并且接入到 DBeaver 中供开发便捷使用的一个实际案例。

相信很多 DBA 日常都会遇到开发误删除数据(DML闪回)或者需要追溯数据变化原因(解析原始SQL)的需求,当这种需求愈发多的时候(别问为什么,说多了都是泪),就会很厌倦此类工作,因此就想着实现一套工具供开发或者实施自己使用,而不需要 DBA 接入处理。

my2sql 是个人用过的很多 binlog 解析工具中比较出色的一个,因为它解析性能比较优异,且使用也相对简单。

  1. 误删除数据闪回:依赖于 my2sql 的功能,可以快速生成指定表指定操作的 DML 操作回滚语句,确认后执行回滚 SQL 即可回复数据。

  2. 追溯数据变化原因:my2sql 无法完成该功能,需要依赖 DBA 手动解析 binlog ,分析 rows_query_log ,得到原始执行 SQL 进一步分析。

我们以如下图为例:闪回功能即需要实现rollback,生成对应DML的回滚SQL,这是my2sql自带的功能;而想要知道数据变化的真正原因,则需要实现query,得到原始执行SQL才比较好分析(当然需要保证MySQL中开启了binlog_rows_query_log_events才会在binlog中记录原始SQL)。

二. my2sql改进

为了更加方便非 DBA 使用,对于 my2sql 进行了一些改进,主要包括2点:

  1. 实现 query 能力,其实就是在原有的基础上,增加解析Rows_query对应的 event 功能,让 my2sql 也可以根据库表、操作类型解析得到对应的原始 SQL ,而非只能实现行数据的回滚SQL or 前滚SQL 。

  2. 原生的 my2sql 使用上通常需要指定star-file,即起始binlog,这对于不熟悉 MySQL 的人来说比较麻烦,如果不指定起始 binlog ,光指定时间范围,那么 my2sql 会从第一个 binlog 开始解析,比较费时,性能不好。这里我的做法是,只需要输入时间范围,因为这个对于开发来说比较简单,而 binlog 的范围则会通过输入的时间范围,自动适配,原理是对于 MySQL 中存在的每个 binlog 都会只解析其第一个 event ,得到每个 binlog 时间范围,然后根据输入时间范围,就可以自动匹配对应的 binlog 范围,这样就不需要解析无用的 binlog ,节省时间。

吐槽:MySQL 中为了得到每个 binlog 的时间区间真的好难,官方就不能在 show binary logs 中增加时间输出吗?

BEGIN
/*!*/;
# at 291
#220117 12:49:23 server id 1000000  end_log_pos 328 CRC32 0xc0df907c    Rows_query
# delete from a
# at 328
#220117 12:49:23 server id 1000000  end_log_pos 373 CRC32 0x7bc9707d    Table_map: `test`.`a` mapped to number 5705
# at 373
#220117 12:49:23 server id 1000000  end_log_pos 435 CRC32 0x15ae3096    Delete_rows: table id 5705 flags: STMT_END_F
### DELETE FROM `test`.`a`
### WHERE
###   @1=1 /* INT meta=0 nullable=0 is_null=0 */
###   @2=1 /* INT meta=0 nullable=1 is_null=0 */
### DELETE FROM `test`.`a`
### WHERE
###   @1=2 /* INT meta=0 nullable=0 is_null=0 */
###   @2=2 /* INT meta=0 nullable=1 is_null=0 */
### DELETE FROM `test`.`a`
### WHERE
###   @1=3 /* INT meta=0 nullable=0 is_null=0 */
###   @2=3 /* INT meta=0 nullable=1 is_null=0 */
# at 435
#220117 12:49:23 server id 1000000  end_log_pos 466 CRC32 0x22eae195    Xid = 548
COMMIT/*!*/;
三. 接入 DBeaver

经过上述 my2sql 改良后,其实对于非 DBA 已经非常友好了(都不需要输入起始 binlog ),因为只需要输入一些参数即可调用 my2sql 使用。

./my2sql -user root -password xxx -host 127.0.0.1 -port 3306 \
-databases test -tables a -sql delete \
-start-datetime "2021-04-02 11:05:00" -stop-datetime "2021-04-02 11:06:00" \
-work-type rollback \
-add-extraInfo -output-dir /opt/tmp

但是开发还会说没有图形化,命令行我不太会弄奥,行把,给你加个图形化。

公司有专门的开发基于开源 DBeaver 进行了改造,增加了一些个性化功能,并把 DBeaver 作为全公司的统一数据库客户端工具使用,所以想到把 my2sql 集成到 DBeaver 中使用应该会很方便,大概步骤就是通过 DBeaver 来选择库、表、操作类型等一系列入参,然后外部调用my2sql的程序生成脚本(DBeaver 中本身就存放了连接信息)。

大致的使用如下图:

rollback类型:

query类型:

四. 总结

对于 my2sql 的改进使用,虽然不如传统 DBA 根据误操作指定对应 binlog&position 后解析的那么精确,但是对于开发来说,我感觉已经够用了,即使该时间段内含有其他非误操作的回滚 SQL ,也可以自行筛选出来。

最后提一下,my2sql 仅支持 DML 语句,所以并没有加入 DDL 的解析功能,因为 DDL 误操作只能通过备份 +binlog 回放恢复,无法直接闪回。

DBeaver连接MySQL8报错:caching_sha2_password插件问题的终极解决方案 本文详细解析了DBeaver连接MySQL8时遇到的caching_sha2_password插件报错问题,提供了自定义MySQL8客户端的终极解决方案。通过配置DBeaver使用新版客户端工具,既保持了MySQL8的安全特性,又解决了兼容性问题,同时分享了数据转储的实用技巧和高级配置建议。 阅读详情

相关推荐

四大效率神器:Everything、Wox、Snipaste、DBeaver 深度解析与应用指南

在软件开发和日常办公中,提升效率是核心诉求。自动化与工具集成是解决重复劳动和复杂操作的关键原理,其技术价值在于将繁琐流程简化为瞬间操作,从而释放人力专注于创造性工作。这一理念广泛应用于环境搭建、信息检索、数据管理和跨任务协作等场景。本文聚焦于四款高效工具:Everything实现本地文件的毫秒级搜索,Wox作为统一的快速启动与命令中枢,Snipaste提供精准截图与屏幕贴图辅助,DBeaver则是支持多种数据库的统一管理客户端。掌握这些工具,能系统性优化从文件定位、程序启动到视觉参考和数据查询的全链路工作流

weixin_33842304的博客 468

MySQL2约束 多表

MySQL2 约束 -- 约束:MySQL中的约束是对数据中的一种限定,为了保证数据的有效性和完整性。 -- MySQL中常见的约束: -- 主键约束 -- 自增长约束 -- 唯一约束 -- 非空约束 -- 非负约束 -- 外键约束 -- 主键约束:非空且唯一,一张表中只能有一个主键,我们也建议你在表中提供主键。 -- 添加主键的方式: -- 1.建表时添加主键 create table test( username verchar(20) primary key, password v

m0_49324736的博客 180

Hive连接工具全攻略——从JDBC到DBeaver与DataGrip的实战解析

本文全面解析了连接Hive数据库的实用工具,重点对比了免费的DBeaver与专业的DataGrip。文章从JDBC驱动配置这一核心基石讲起,详细介绍了DBeaver的深度配置、解决断连问题的技巧,以及DataGrip的智能编码特性和必做的Schema设置,并提供了根据使用场景选择工具和常见避坑的实战指南。

weixin_28836989的博客 347

解析MySQL Binlog的利器:my2sql 使用指南

它可以将 binlog 中的事件还原为原始的 DML(INSERT/UPDATE/DELETE)或 DDL(CREATE/ALTER/DROP)语句,同时也支持生成对应的回滚 SQL(Flashback),适用于数据恢复、变更审计、同步校验等场景。本文将详细介绍 my2sql 的使用方法,并简要说明其与同类工具(如 binlog2sql)在技术特性上的差异,帮助大家根据实际需求选择合适的方案。my2sql 作为一款现代、轻量、功能完整的 binlog 解析工具,正在被越来越多的团队采纳。

gjc592的博客 434

数据库连接工具dbeaver

DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构

Unity URP项目里Post Processing死活没效果?别慌,这5个坑我帮你踩过了

本文详细解析了Unity URP项目中Post Processing效果失效的五大常见问题,包括渲染管线配置冲突、Volume作用域误判、摄像机参数漏配、Layer层级冲突和Profile引用异常。通过实际项目案例和代码示例,提供专业级解决方案,帮助开发者快速排查并修复后处理效果不生效的问题。

weixin_33721427的博客 333

MySQL闪回工具之my2sql

my2sql 简介 go版MySQL binlog解析工具,通过解析MySQL binlog ,可以生成原始SQL、回滚SQL、去除主键的INSERT SQL等,也可以生成DML统计信息。https://github.com/liuhr/my2sql 安装 编译 git clone https://github.com/liuhr/my2sql.git cd my2sql/ go build . 也可以直接下载Linux版编译好的可执行文件 https://github.com/liuhr/my2sql/

晨夕的博客 1万+

USB设备识别码VID和PID详解:如何查询和自定义你的设备ID

本文详细解析了USB设备识别码VID和PID的核心作用、查询方法及自定义配置技巧。VID(供应商识别码)和PID(产品识别码)是USB设备的唯一身份证,用于驱动匹配和功能识别。文章提供了Windows和Linux系统下的查询方法,并探讨了如何合法获取和自定义VID/PID,适合硬件开发者和DIY爱好者参考。

weixin_29168675的博客 1441

DBeaver的使用,创建数据库连接、执行sql语句

前言: 因为手头上没有商用版Navicat ,本着支持正版的原则,选用DBeaver,DBeaver需要Java语言支持,所以安装之前需要配置JDK环境哦。 正文: 一、创建数据库连接 方法1: 类似于Navicat,点击工具栏:文件-新建:创建数据库连接 方法2: 从别人的机器上拷贝数据库脚本,放至自己的本地目录下:C:\Users\用户名\AppData\Roaming\DBeaverData\workspace6\General 二、创建sql脚本 方法1: 点击工具栏:SQ.

小白殿下,慢慢长大 5万+

基于单片机红外线遥控Proteus仿真电路发射接收

*单片机设计介绍,基于单片机红外线遥控Proteus仿真电路发射接收。

2201_75940997的博客 3942

宏基因组功能注释实战:从CAZyme到VFDB的完整流程(含数据库下载与脚本优化)

本文详细介绍了宏基因组功能注释的完整流程,涵盖CAZyme、eggNOG、CARD和VFDB四大核心数据库的实战应用。从环境配置、数据库下载与预处理到注释流程执行与优化,提供了全面的操作指南和脚本优化建议,帮助研究人员高效完成宏基因组数据分析。特别针对CAZyme注释等关键步骤给出了参数优化方案和常见问题排查方法。

weixin_29289821的博客 294

5分钟搞定SQL模板管理:DBeaver代码片段分类与效率提升指南

你是否还在重复编写相同的SQL查询?是否经常忘记常用的SQL语句格式?本文将带你掌握DBeaver SQL编辑器中代码模板的组织与分类技巧,让你5分钟内提升SQL编写效率,告别重复劳动。读完本文,你将学会如何创建、分类、管理和高效使用SQL代码模板,以及如何根据不同数据库类型定制专属模板。 ## 什么是DBeaver SQL代码模板 DBeaver SQL代码模板是一种可重用的SQL语句片段,...

gitblog_00284的博客 1012

人工智能数据治理——解读AI时代数据治理白皮书 2025【附全文阅读】

摘要:该白皮书面向企业数字化负责人及AI项目推进人员,探讨AI时代数据治理的战略升级。提出"好数据+好数据知识"双基石理念,强调数据需满足"三高"标准(高精度、一致性、时效性)并构建语义知识库。构建四层治理框架,包括数据采集处理、合规安全、知识库建设及质量改进,并介绍AI赋能治理的新范式,如智能ETL和治理Agent体系。同时分析"软件+AI+好数据"的应用模式,为企业实现智能数据治理提供实践指导。(149字)

cdfunlove的博客 632

DBeaver主题颜色方案分享:创建与导出个性化视觉风格

你是否还在忍受千篇一律的数据库工具界面?作为每天与数据打交道的开发者或分析师,一个舒适的视觉环境能显著提升工作效率。本文将带你了解如何在DBeaver中创建、应用和导出个性化主题颜色方案,让你的数据库管理工作更加愉悦。 ## 主题系统架构概览 DBeaver采用Eclipse CSS主题系统作为视觉风格基础,通过多层次配置实现界面定制。核心主题配置位于[plugins/org.jkiss.db...

gitblog_00015的博客 1137

Innovus: dbGet 快速学习教程

是取反的意思,如下例子,这个选中的instance一共四个pin,当用regexp筛选CK pin后只获得CK pin,加上-v取反后就返回的值就是除CK pin以外的其他三个pin。dbGet有很多option,具体都是干嘛的,怎么用,做个简单介绍。,-p是最常用的option,-p和-p0 -p1是一个东西,-p x它代表从后往前推第x个选项,与-p搭配使用的pattern也是必须的。的意思是返回database整数,而一般我们用的是浮点数,database整数可以参考DEF里的单位去输出。

m0_61544122的博客 6954

【Python图像处理局部放大】输入图像,选择两处不同的区域进行放大操作,然后将原始图像、处理后的两个区域以及标记合成新图像进行展示

Python图像处理与区域放大连接标记:选择特定区域并对其进行放大操作,然后将原始图像、处理后的两个区域进行标记后的新图像保存到文件中。

qq_35831906的博客 2242

彻底消除DBeaver中MySQL表名验证错误的5个实用技巧

DBeaver作为一款功能强大的Free universal database tool and SQL client,在连接MySQL数据库时偶尔会遇到表名验证错误问题。这些错误通常与MySQL的大小写敏感配置、特殊字符处理或驱动设置相关。本文将分享5个经过验证的实用技巧,帮助你彻底解决这类问题。 [![DBeaver Community Edition启动界面](https://raw.gi

gitblog_00105的博客 1092

【Kubernetes】Kubernetes 安全沙箱深度对比:gVisor vs Kata Containers

Kubernetes安全沙箱深度对比:gVisor和Kata Containers在架构、性能与安全性方面各有特点。gVisor通过用户态内核(Sentry)实现软件隔离,启动快(毫秒级)但CPU开销大(20-30%),适合Web服务等场景。Kata Containers采用轻量级虚拟机提供硬件级隔离,启动较慢(1-2秒)但兼容性更好,适合金融等高安全需求。测试显示gVisor在动态请求下性能下降33%,而Kata性能接近原生。建议根据场景选择:多租户/快速启动用gVisor,敏感数据/极致安全用Kata,

九师兄 178

dbeaver连接mysql看不到数据库

给大家分享个关于【MySQL】的项目案例资料(资料+直播讲解):https://edu.51cto.com/surl=QDW3g3以及我整理的一些关于【数据库,MySQL】的项目学习资料(附讲解~~)和大家一起分享一下、学习一下:https://edu.51cto.com/course/33749.htmlhttps...

weixin_37060437的博客 717

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

DBeaver数据库对象命名冲突解决指南

在日常数据库开发和管理中,你是否遇到过这样的场景? - 创建新表时提示"表已存在"错误 - 重命名对象时发现目标名称已被占用 - 跨数据库迁移时遭遇命名空间冲突 - 团队协作中多人同时创建同名对象 这些命名冲突问题不仅影响开发效率,还可能导致数据不一致和系统故障。DBeaver作为一款功能强大的数据库管理工具,提供了多种智能机制来帮助开发者有效应对命名冲突挑战。 ## 命名冲突的类型与根源 ...

gitblog_00732的博客 768

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

4款被低估的开发效率神器:DBeaver、Postman、Warp、NetData深度解析

在软件开发领域,提升效率的关键往往在于优化日常工具链。从基础概念上讲,高效的开发工具通过封装复杂流程、减少上下文切换和自动化重复任务,来降低开发者的认知负荷。其技术价值在于将繁琐操作简化为直观交互,从而释放开发者专注于核心逻辑的创造力。这类工具在数据库管理、API调试、终端操作和系统监控等高频应用场景中尤为重要。例如,**DBeaver** 作为通用数据库客户端,解决了多数据库环境管理的痛点;而 **Postman** 则成为API开发、测试与团队协作的基石。本文将自然聚焦于这四款能切实提升交付质量和开发体

congsikuai0611的博客 541

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

第二阶段-第二章 SQL入门和实战

该笔记是学习黑马程序员在b站上分享的视频而记录的。

无 1423

SQL工具全攻略:从入门到精通,数据分析师与开发者的效率利器

SQL作为数据领域的核心语言,是操作和查询数据库的通用标准。其工作原理是通过声明式语法,将用户的数据需求转化为数据库系统可执行的指令,实现对数据的增删改查与复杂分析。掌握SQL的价值在于能够高效、精准地从海量数据中提取信息,支撑业务决策、应用开发和系统优化。在数据分析、后端开发、数据仓库构建等应用场景中,SQL能力直接影响工作效率与成果质量。而一款优秀的SQL工具,如DBeaver或DataGrip,能通过智能补全、执行计划可视化等功能,显著提升SQL编写与调试效率,是数据工作者从“会写”迈向“高效”的关键

weixin_30527423的博客 287

【踩坑总结】MySQL 多版本共存 + DBeaver 连接的常见问题与解决方案

本地同时运行两个 MySQL 版本,使用 DBeaver 连接时出现以下问题:DBeaver 仅显示sys等少数系统库,CMD 中存在的业务库(如tdh)不显示;DBeaver 查询tdh.tool_tb_info表提示 “表不存在”,但 CMD 中能正常返回数据;多 MySQL 版本因默认端口(3306)冲突,无法同时启动服务。DBeaver 连接核心:先确认连接的实例(版本 / 端口 / IP)是否与操作目标一致,元数据不同步时优先刷新;

weixin_43864993的博客 679

Explainer Chris免费工具精讲:Docker、Postman、DBeaver、Obsidian实战指南

在软件工程实践中,容器化技术通过将应用及其依赖打包成标准化单元,解决了环境一致性与依赖管理的核心难题。其原理基于操作系统层面的虚拟化,实现了资源的轻量级隔离与高效利用。这项技术的价值在于极大提升了开发、测试与部署流程的可移植性和效率,是构建现代化、可扩展应用架构的基石。在微服务、持续集成/持续部署(CI/CD)以及混合云部署等场景中,容器化已成为不可或缺的基础设施。本文以Explainer Chris系列推荐的Docker、Postman、DBeaver、Obsidian等免费工具为具体载体,深入剖析如何将

weixin_34318272的博客 462

DBeaver主题定制完全指南:打造专属数据库管理视觉体验

还在使用千篇一律的数据库工具界面吗?作为一名数据从业者,舒适的工作环境能显著提升效率。本文将详细介绍DBeaver主题系统的完整定制流程,从基础配置到高级技巧,帮助你打造个性化的视觉风格。 ## 主题系统深度解析 DBeaver基于Eclipse RCP平台构建了完整的主题架构,通过多层次配置实现界面个性化。核心配置文件位于 `plugins/org.jkiss.dbeaver.ui/plug

gitblog_00090的博客 437
上一篇: 技术分享 | MySQL 数据库巡检需要做些什么?
下一篇: 技术分享 | 用图数据库来降低 MySQL 处理多层关系的延迟(一)
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值