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

MySQL 数据恢复利器:my2sql 实战解析与应用场景

1. my2sql 是什么为什么你需要它如果你负责过MySQL数据库运维肯定遇到过这样的场景开发同事不小心执行了DELETE FROM users WHERE id1然后慌慌张张跑过来问你能不能恢复数据。这时候如果只有全量备份binlog的传统恢复方式可能需要几个小时才能搞定。而my2sql可以在几分钟内生成回滚SQL把误删的数据找回来。my2sql是一个用Go语言编写的高性能binlog解析工具它最大的特点就是快。实测解析1GB的binlog文件只需要2-3分钟比Python写的binlog2sql快20倍以上。除了速度快它还支持JSON、BLOB这些复杂数据类型的解析这是很多同类工具做不到的。我去年在处理一个线上事故时就深有体会。当时有个批量更新脚本出错把用户表的积分字段全部清零了。用my2sql定位到问题binlog位置后只用了5分钟就生成了回滚SQL避免了用户投诉。如果是用传统方式至少要停机半小时。2. 手把手教你安装和使用2.1 三种安装方式任你选最简单的就是直接下载预编译的二进制文件wget https://github.com/liuhr/my2sql/releases/download/v0.9.1/my2sql_0.9.1_linux_amd64.tar.gz tar -zxvf my2sql_0.9.1_linux_amd64.tar.gz如果你习惯用Docker官方也提供了镜像docker pull liuhuarong/my2sql对于喜欢折腾的开发者可以从源码编译git clone https://github.com/liuhr/my2sql.git cd my2sql go build -o my2sql注意MySQL账号需要具备REPLICATION SLAVE和REPLICATION CLIENT权限建议专门创建一个只读账号用于binlog解析。2.2 你必须知道的6个核心参数第一次使用时可能会被几十个参数吓到其实日常操作主要用这几个-work-type这是最重要的参数支持三种模式2sql生成原始SQL用于审计或数据迁移rollback生成回滚SQL用于数据恢复stats生成DML统计信息分析大事务-start-file/-start-pos指定从哪个binlog文件开始解析精确到字节位置-stop-file/-stop-pos解析到哪个位置结束-databases/-tables按库名或表名过滤避免解析不相关的数据-output-dir生成的SQL文件保存目录-threads并发线程数默认4物理机可以调到8-163. 真实案例5分钟恢复误删数据3.1 场景还原假设下午3点开发同学误执行了DELETE FROM order_detail WHERE create_time 2024-06-01;这张表有200万条数据误删了最近3个月的50万条订单明细。3.2 具体恢复步骤第一步锁定事故时间范围mysqlbinlog --base64-outputdecode-rows -v mysql-bin.000123 | grep -B 20 DELETE FROM order_detail找到类似这样的输出# at 763215 #240701 15:00:12 server id 1 end_log_pos 763346 CRC32 0x3a1b2c8d Query thread_id113 exec_time0 error_code0 use ecommerce/*!*/; DELETE FROM order_detail WHERE create_time 2024-06-01第二步生成回滚SQL./my2sql -user recover -password xxxx -host 10.0.0.1 -port 3306 \ -work-type rollback \ -start-file mysql-bin.000123 \ -start-pos 763215 \ -stop-pos 763346 \ -databases ecommerce \ -tables order_detail \ -output-dir ./rollback_sql第三步执行恢复source /data/rollback_sql/rollback.123.sql;整个过程在我的测试环境只用了3分28秒平均每秒处理2400条记录的逆向SQL生成。4. 进阶应用主从数据一致性修复4.1 主从切换后的数据同步问题上周我们遇到一个典型场景主库磁盘故障导致HA自动切换但新主库缺失了故障前10分钟的数据。这时候传统的做法是用备份重建从库但有了my2sql可以更优雅地解决。4.2 具体操作流程在老主库服务器找到最后的binlogls -l /var/lib/mysql/mysql-bin.00*解析最后10分钟的DML操作./my2sql -user recov -password xxxx -host 10.0.0.2 -port 3306 \ -work-type 2sql \ -start-file mysql-bin.000456 \ -start-datetime 2024-07-15 14:50:00 \ -stop-datetime 2024-07-15 15:00:00 \ -output-dir ./last_dml在新主库执行生成的SQLmysql -h 10.0.0.1 -u root -p /data/last_dml/all_sql.sql这种方法比全量同步快得多特别是对于大表。我们有个200GB的用户表用传统方式同步要2小时而用my2sql只花了18分钟就补全了差异数据。5. 性能对比为什么选择my2sql5.1 实测数据说话我用相同的1.5GB binlog文件测试了几款主流工具工具名称语言解析时间内存占用功能完整性my2sqlGo2m45s480MB★★★★★binlog2sqlPython58m12s1.2GB★★★☆☆MyFlashC22m33s650MB★★☆☆☆my2sql的并发解析架构让它优势明显。它会把binlog分成多个chunk每个chunk用独立goroutine处理最后合并结果。这种设计特别适合现代多核CPU。5.2 独特的功能亮点大事务分析用-work-type stats可以找出哪些事务影响了大量数据./my2sql -work-type stats -start-file mysql-bin.000123输出示例------------------------------------- | table_name | insert | update | delete | ------------------------------------- | user_logs | 0 | 0 | 384291 | -------------------------------------DDL变更追踪虽然不能回滚DDL但可以记录所有表结构变更GTID支持完美兼容基于GTID的复制环境6. 避坑指南我踩过的那些坑第一次使用时我遇到了一个诡异的问题生成的回滚SQL执行后数据还是不对。后来发现是因为MySQL 8.0默认使用了caching_sha2_password认证插件而my2sql当时还不支持。解决办法是在my.cnf添加[mysqld] default_authentication_pluginmysql_native_password另一个常见问题是时区设置。如果MySQL服务器和应用的时区不一致用-start-datetime参数时要注意时区转换。建议始终使用UTC时间操作-start-datetime 2024-07-01 07:00:00 -time-zone 08:00对于TEXT/BLOB字段如果内容特别大比如超过1MB建议先在小环境测试解析结果。我曾经遇到过解析emoji表情丢失的情况后来发现是字符集设置问题需要在命令中添加-charset utf8mb4

相关文章:

MySQL 数据恢复利器:my2sql 实战解析与应用场景

1. my2sql 是什么?为什么你需要它? 如果你负责过MySQL数据库运维,肯定遇到过这样的场景:开发同事不小心执行了DELETE FROM users WHERE id1,然后慌慌张张跑过来问你能不能恢复数据。这时候如果只有全量备份binlog的传统…...

VCAM虚拟摄像头:革新移动设备视觉交互的技术探索

VCAM虚拟摄像头:革新移动设备视觉交互的技术探索 【免费下载链接】com.example.vcam 虚拟摄像头 virtual camera 项目地址: https://gitcode.com/gh_mirrors/co/com.example.vcam VCAM虚拟摄像头是一款基于Xposed框架的安卓应用,通过HOOK技术&…...

SpringBoot 静态资源加载失败:favicon.ico 缺失问题解析

1. 为什么你的SpringBoot项目总在报favicon.ico缺失? 每次启动SpringBoot项目时,控制台总是刷出一堆红色警告,其中最让人头疼的就是"No static resource favicon.ico"这个错误。作为一个踩过无数次坑的老司机,我可以负…...

从“玩概念”到“真落地”:AI智能体三大场景的突围之路

当行业不再为“大模型参数”狂欢,真正的价值开始浮现——客服自动化、内部知识库、办公Agent,正在成为AI智能体最先跑通商业闭环的三大场景。而决定成败的关键,已经从模型能力转向上下文设计、工具调用与反馈迭代。 2026年,大模型…...

SDMatte模型API接口安全设计:防止恶意调用与资源滥用

SDMatte模型API接口安全设计:防止恶意调用与资源滥用 1. 引言:API安全的重要性 在将SDMatte模型部署为公开API服务时,安全防护是首要考虑的问题。我们曾遇到一个真实案例:某图像处理API上线一周内,由于缺乏防护措施&…...

nli-distilroberta-base轻量化效果实测:在嵌入式设备上的推理性能与精度

nli-distilroberta-base轻量化效果实测:在嵌入式设备上的推理性能与精度 1. 开篇:当大模型遇上小设备 在树莓派上跑BERT?半年前这还是个笑话。但当我第一次在Jetson Nano上成功运行量化后的nli-distilroberta-base模型时,这个4核…...

【自动驾驶】从贝叶斯到卡尔曼:线性滤波的数学之美与实践之路

1. 贝叶斯概率:理解不确定性的语言 想象你正在雾天开车,前方隐约有个模糊的影子。你的大脑会快速判断:那可能是一个行人(60%概率),也可能只是路标(40%概率)。这种在不确定环境中做判…...

如何快速完成亚马逊SP-API注册:AWS IAM策略与角色配置详解

亚马逊SP-API高效注册指南:从AWS IAM配置到应用上线的全流程解析 当你的电商业务需要与亚马逊平台深度集成时,SP-API(Selling Partner API)将成为不可或缺的工具。作为亚马逊新一代的开发者接口,它比传统的MWS提供了更…...

SDMatte与前端框架React集成:打造交互式在线图片编辑工具

SDMatte与前端框架React集成:打造交互式在线图片编辑工具 1. 引言:为什么需要在线图片编辑工具 电商商家每天需要处理大量商品图片,传统PS操作门槛高且效率低下。而专业设计师又需要更灵活的工具进行创意表达。基于React框架和SDMatte构建的…...

从零开始学SCL:手把手教你实现天塔之光、数码管显示等工业控制案例(含避坑指南)

从零开始学SCL:手把手教你实现天塔之光、数码管显示等工业控制案例(含避坑指南) 工业自动化领域中,PLC编程是核心技能之一。而SCL(Structured Control Language)作为IEC 61131-3标准中的高级文本语言&#…...

别再手动打字了!用uniapp+百度语音识别,5分钟搞定语音转文字功能(附完整代码)

用UniApp百度语音识别实现高效语音转文字功能 在移动应用开发中,语音输入正逐渐成为提升用户体验的关键功能。想象一下,用户无需费力敲击虚拟键盘,只需轻按按钮说话,文字就能自动出现在输入框中——这种交互方式不仅自然流畅&…...

终极指南:如何轻松解包Godot PCK文件并提取游戏资源

终极指南:如何轻松解包Godot PCK文件并提取游戏资源 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 还在为Godot游戏的PCK文件无法解包而烦恼吗?无论你是游戏开发者想要复用资…...

【TC3xx芯片】Endinit机制实战:从解锁到上锁的完整代码解析

1. TC3xx芯片Endinit机制的核心作用 在嵌入式系统开发中,寄存器保护是确保系统稳定性的关键机制。TC3xx系列芯片采用的Endinit(End of initialization)保护方案,就像给重要寄存器装了一把智能密码锁。想象一下,你家的保…...

Cadence Virtuoso仿真避坑指南:从网表生成到FFT分析的20个常见错误解决方案

Cadence Virtuoso仿真避坑指南:从网表生成到FFT分析的20个常见错误解决方案 在集成电路设计领域,Cadence Virtuoso作为行业标准工具链的核心组件,其仿真功能的正确使用直接关系到设计效率与结果可靠性。本文将系统梳理从网表生成到FFT分析全流…...

Cadence 17.4 PCBEditor 中文菜单设置保姆级教程(含环境变量配置与补丁号查看)

Cadence 17.4 PCBEditor 中文界面配置全攻略:从环境变量到实战技巧 刚接触Cadence Allegro的工程师常被其全英文界面劝退。其实从17.4版本开始,PCBEditor已内置中文支持,只是需要一些"隐藏操作"来激活。本文将手把手带你完成从补丁…...

告别黑盒操作:详解mmc_utils在Android设备上的20+个实用命令(从extcsd读到RPMB写)

eMMC深度操作指南:解锁mmc-utils的20个高阶应用场景 当你的Android设备出现存储性能下降、分区异常或安全验证需求时,系统自带的工具往往束手无策。此时,一个被低估的神器mmc-utils正躺在Linux内核源码树中等待被唤醒——它不仅能够读取eMMC芯…...

终极指南:如何在Windows上实现完美的三指拖拽体验

终极指南:如何在Windows上实现完美的三指拖拽体验 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersDragOnWind…...

【云原生Java冷启动优化黄金法则】:20年实战提炼的7步精准调优路径(含GraalVM+Quarkus实测数据)

第一章:云原生Java函数计算冷启动问题的本质剖析云原生Java函数计算中的冷启动并非单纯由JVM启动耗时导致,而是多层资源调度与运行时初始化耦合引发的系统性延迟现象。其本质在于函数实例生命周期与请求到达时间的异步解耦——当无活跃实例可用时&#x…...

硬件调试新纪元:85%效率提升的AMD Ryzen系统优化方案

硬件调试新纪元:85%效率提升的AMD Ryzen系统优化方案 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://git…...

如何快速上手Notepad--:3步完成跨平台文本编辑器的配置与使用

如何快速上手Notepad--:3步完成跨平台文本编辑器的配置与使用 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- …...

不止于画图:用IPC-7351标准和Mentor LP工具高效生成标准PCB焊盘(Cadence实战)

从标准到实践:基于IPC-7351的PCB焊盘设计全流程解析 在高速数字电路和精密模拟电路设计中,焊盘作为元器件与PCB之间的物理连接点,其设计质量直接影响产品可靠性。一个常见的误区是仅关注软件操作技巧,而忽视行业标准对设计质量的…...

WAF工程师实战笔记:如何用Suricata规则精准识别哥斯拉、冰蝎、蚁剑的Webshell流量

WAF工程师实战笔记:Suricata规则精准识别主流Webshell流量 在安全运维的日常工作中,Webshell流量的检测始终是一场攻防对抗的持久战。面对哥斯拉、冰蝎、蚁剑等主流Webshell管理工具不断升级的流量混淆技术,传统的特征匹配方法往往力不从心。…...

宇视NVR接入AS-V1000平台全流程指南(含SDK端口配置避坑)

宇视NVR对接AS-V1000平台实战手册:从配置到排障的深度解析 当监控系统需要整合多品牌设备时,宇视NVR与AS-V1000平台的对接成为典型场景。不同于标准化的协议对接,SDK接入方式往往隐藏着诸多"暗礁"——从端口冲突到能力集匹配&#…...

开源音频格式转换终极指南:ncmdumpGUI实现数字音乐资产自由流转的完整方案

开源音频格式转换终极指南:ncmdumpGUI实现数字音乐资产自由流转的完整方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 在数字音乐时代&#xf…...

Debian GNU/Linux12高效运维指南(网络配置、远程管理、软件更新与安全防护)

1. Debian GNU/Linux12网络配置实战 刚接触Debian GNU/Linux12的朋友们,网络配置可能是你们遇到的第一个挑战。别担心,我会用最直白的方式带你们搞定这个环节。网络配置就像给新房子拉网线,得先把基础线路接好,后续的上网、远程控…...

快速上手腾讯混元OCR:部署过程常见错误及解决方法合集

快速上手腾讯混元OCR:部署过程常见错误及解决方法合集 1. 认识腾讯混元OCR 腾讯混元OCR(HunyuanOCR)是一款基于腾讯混元原生多模态架构的端到端OCR专家模型。作为一款轻量级但功能强大的文字识别工具,它仅用1B参数就实现了多项业…...

Loop:让Mac窗口管理效率倍增的效率神器

Loop:让Mac窗口管理效率倍增的效率神器 【免费下载链接】Loop MacOS窗口管理 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 你是否也曾在多任务处理时,被杂乱无章的窗口搞得焦头烂额?切换应用时总要在一堆窗口中寻找目标&a…...

League-Toolkit:基于LCU API的英雄联盟本地化效率工具集

League-Toolkit:基于LCU API的英雄联盟本地化效率工具集 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在英雄联盟的…...

H3C交换机vlan隔离常见配置错误排查指南(附HCL模拟器案例)

H3C交换机VLAN隔离配置实战:从原理到排错的深度指南 在当今企业网络架构中,VLAN隔离技术已经成为网络分段和安全策略的基础支柱。作为网络管理员,我们经常需要在H3C交换机上配置VLAN隔离来实现不同部门或业务单元之间的逻辑隔离。然而&#…...

技术竞赛之道:从创新构想到落地执行的实战心法

技术竞赛之道:从创新构想到落地执行的实战心法 【免费下载链接】A-to-Z-Resources-for-Students ✅ Curated list of resources for college students 项目地址: https://gitcode.com/GitHub_Trending/at/A-to-Z-Resources-for-Students 在当今技术驱动的时…...