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

binlog 解析工具——my2sql

目录

      • 一、my2sql 的定义与核心用途
      • 二、使用方法与具体示例
        • 1. **安装与配置**
        • 2. **常用命令参数**
        • 3. **具体案例:误删数据恢复**
      • 三、类似工具对比
      • 四、注意事项

一、my2sql 的定义与核心用途

my2sql 是一款基于 Go 语言开发的 MySQL binlog 解析工具,支持从二进制日志(binlog)中生成原始 SQL、回滚 SQL(闪回 SQL)、去除主键的 INSERT SQL 等,还能生成 DML 操作统计信息。其核心用途包括:

  1. 数据快速回滚(闪回):通过逆向解析 binlog 生成反向 SQL,恢复误删除或误修改的数据。
  2. 主从数据一致性修复:主从切换后新主库数据丢失时,通过 binlog 恢复数据。
  3. 生成标准 SQL 与统计信息:用于审计、数据迁移,或分析高频更新表、大事务及主从延迟问题。
  4. 复杂数据类型支持:支持 JSON、BLOB、TEXT、Emoji 等数据类型解析,覆盖多数工具无法处理的场景。

二、使用方法与具体示例

1. 安装与配置
  • 安装方式
    • 二进制文件安装:直接下载预编译的 Linux 二进制文件(如 CentOS 7.x 版本)。
    • 源码编译:需 Go 环境,通过 git clone 克隆仓库后执行 go build
  • 权限要求:MySQL 用户需具备 SELECTREPLICATION SLAVEREPLICATION CLIENT 权限。
  • MySQL 配置:使用闪回功能时,需 binlog_format=ROWbinlog_row_image=FULL
2. 常用命令参数
  • 核心参数
    • -work-type:指定输出类型(2sql 生成原始 SQL,rollback 生成回滚 SQL,stats 统计 DML 信息)。
    • -start-file/-start-datetime:指定解析的起始 binlog 文件或时间点。
    • -databases/-tables:过滤库或表。
    • -output-dir:结果输出目录。
3. 具体案例:误删数据恢复

场景:误删除 test.ceshi 表中 id=1 的数据。
步骤

  1. 定位误操作 binlog
    mysqlbinlog --base64-output=decode-rows -v mysql-bin.000006 | grep -B 20 'DELETE'
    
    确定误操作的时间范围及位点(如起始位置 1163,结束位置 1207)。
  2. 生成回滚 SQL
    ./my2sql -user root -password 123456 -host 127.0.0.1 -port 3306 -work-type rollback \
    -start-file mysql-bin.000006 -start-datetime "2024-09-23 19:00:00" -output-dir ./rollback_sql
    
  3. 执行回滚
    mysql> source /path/to/rollback_sql/rollback.6.sql;
    
    恢复后验证数据是否完整。

三、类似工具对比

  1. binlog2sql(Python):

    • 特点:业界广泛使用,功能基础(生成原始 SQL 和回滚 SQL),但解析速度较慢(1.1G binlog 解析需 50-65 分钟)。
    • 适用场景:小规模数据恢复或简单审计需求。
  2. MyFlash(C):

    • 特点:生成反向二进制 binlog 文件,需通过 mysqlbinlog 转换为 SQL,功能单一但性能中等。
    • 适用场景:需直接操作 binlog 文件的场景。
  3. mysql2sqlite(Awk):

    • 特点:专用于将 MySQL 数据迁移至 SQLite,支持调整语法兼容性(如处理 AUTO_INCREMENT)。
    • 适用场景:开发环境迁移或轻量级数据库转换。

对比总结

工具语言性能功能特点适用场景
my2sqlGo极快闪回、统计、大事务分析生产环境大数据量处理
binlog2sqlPython基础闪回、标准 SQL小规模数据恢复
MyFlashC中等二进制回滚需直接操作 binlog 文件
mysql2sqliteAwkMySQL 转 SQLite 语法兼容数据迁移与轻量级部署

四、注意事项

  1. binlog 格式限制:闪回需 binlog_format=ROWbinlog_row_image=FULL
  2. DDL 不可逆:无法恢复 DROP TABLE 等操作,需依赖备份。
  3. MySQL 8.0 兼容性:需配置 default_authentication_plugin=mysql_native_password
  4. 数据类型解析限制:部分复杂字段可能存在解析差异,需验证数据准确性。

通过合理选择工具,用户可根据数据量、恢复速度需求及功能复杂度优化运维流程。

相关文章:

  • 使用JSP踩过的坑
  • Double使用注意事项
  • 【编程实践】利用open3d对点云进行聚类并可视化
  • Kotlin IR编译器插件开发指南
  • 互联网大厂Java求职面试:短视频平台大规模实时互动系统架构设计
  • Eigen 库实现最小二乘算法(Least Squares)
  • Unity基础学习(九)Resources资源同步与异步加载
  • 如何在 Linux 系统中永久禁用交换分区 ?
  • 实验绘图参考-0525版(自用)
  • PostgreSQL 与 MongoDB:为您的数据项目选择合适的数据库
  • 记录第一次正式收到SCI期刊论文的审稿
  • Ubantu22.04离线安装、卸载mysql8.0.39并设置开机自启
  • 深入理解 Linux 的 set、env 和 printenv 命令
  • 使用粘滞键修改windows密码
  • 医学写作供应商管理全流程优化
  • 前端课设Web2
  • 微服务——网关
  • 第九章 云平台开发
  • 测试工程师如何通俗理解和入门RAG:从“查资料”到“写答案”的智能升级
  • 如何使用Webpack实现异步加载?
  • 保定免费建站/哪些平台可以发布软文
  • 腾宁网络做网站/stp营销战略
  • wordpress和betheme/安徽seo网络推广
  • 怎么把网站模板上传到自己的网站/创建网站的流程
  • wordpress 挂马 清除/泸州网站seo
  • 网站设计培训班老师/深圳网络营销推广招聘网