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

binlog解析工具——binlog2sql

目录

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

一、binlog2sql 的定义与用途

binlog2sql 是一款开源的 Python 工具,用于解析 MySQL 的 binlog 文件,生成标准 SQL 或回滚 SQL,实现数据恢复和衍生功能。其核心用途包括:

  1. 数据快速回滚(闪回):通过解析 binlog 生成反向 SQL,恢复误删除或误修改的数据。
  2. 主从切换修复:当主从切换后新主库数据丢失时,通过 binlog 恢复数据一致性。
  3. 生成标准 SQL:用于审计、数据迁移或分析数据库操作历史。

二、使用方法

1. 安装与配置
  • 安装依赖:需 Python 2.7 或 3.4+,通过 Git 克隆项目并安装依赖:
    git clone https://github.com/danfengcao/binlog2sql.git
    cd binlog2sql
    pip install -r requirements.txt
  • MySQL 配置
    [mysqld]
    server_id = 1
    log_bin = /path/mysql-bin.log
    binlog_format = row
    binlog_row_image = full
  • 用户权限:需 SELECTREPLICATION SLAVEREPLICATION CLIENT 权限。
2. 常用命令示例
  • 生成标准 SQL
    python binlog2sql.py -h127.0.0.1 -P3306 -uadmin -p'password' -dtest -t table1 --start-file='mysql-bin.000002'
    
  • 生成回滚 SQL(闪回模式):
    python binlog2sql.py --flashback -h127.0.0.1 -P3306 -uadmin -p'password' -dtest -ttable1 --start-file='mysql-bin.000002' --start-position=763 --stop-position=1147
3. 具体案例:误删数据恢复
  • 场景:误删表 test.tbl 的所有数据。
  • 步骤
    1. 定位误操作的 binlog 文件及位置:
      SHOW MASTER STATUS;  -- 获取当前 binlog 文件名(如 `mysql-bin.000052`)
      
    2. 生成回滚 SQL:
      python binlog2sql.py --flashback -h127.0.0.1 -P3306 -uadmin -p'admin' -dtest -ttbl --start-file='mysql-bin.000052' --start-datetime='2024-09-23 19:00:00' > rollback.sql
    3. 执行回滚 SQL:
      mysql> source rollback.sql;
      

三、类似工具对比

  1. my2sql(推荐):

    • 语言与性能:基于 Go 开发,解析速度比 binlog2sql 快数十倍(1.1G binlog 解析仅需 1-2 分钟)。
    • 功能扩展:支持生成 DML 统计、分析大事务、支持更多数据类型(如 JSON、BLOB)。
    • 使用场景:除闪回外,还可用于主从延迟分析和高频更新表定位。
  2. MyFlash

    • 特点:基于 C 语言,生成反向二进制 binlog 文件,需通过 mysqlbinlog 转换为 SQL。
    • 限制:仅支持回滚操作,功能较为单一。
  3. 对比总结

    工具语言性能功能丰富度适用场景
    binlog2sqlPython较慢基础闪回、标准 SQL小规模数据恢复
    my2sqlGo极快闪回、统计、事务分析生产环境大数据量处理
    MyFlashC中等仅回滚二进制回滚需求 。

四、注意事项

  • binlog 格式限制:闪回需 binlog_format=rowbinlog_row_image=full
  • DDL 不可逆:无法恢复 DROP TABLE 等 DDL 操作,需依赖备份。
  • 权限与兼容性:MySQL 8.0 需配置 mysql_native_password 认证插件。

通过以上工具,用户可根据数据量、恢复速度需求和功能复杂度选择合适的解决方案。

http://www.xdnf.cn/news/8806.html

相关文章:

  • 动态规划(6)下降路径最小值
  • C++ for QWidget:类(1)
  • 22、web场景-web开发简介
  • Java 内部类
  • Php JIT 使用详解
  • 慢查询日志的开启与分析:优化SQL性能的实战指南
  • 审计报告附注救星!实现Word表格纵向求和+横向计算及其对应的智能校验
  • rt-linux里的泛rtmutex锁的调用链整体分析
  • clickhouse-1-特性及docker化安装
  • C语言指针进阶
  • 互联网大厂Java求职面试:AI与大模型应用集成中的架构难题与解决方案
  • 向量数据库选型实战指南:Milvus架构深度解析与技术对比
  • OPENEULER搭建私有云存储服务器
  • 使用 Python 库中自带的数据集来实现上述 50 个数据分析和数据可视化程序的示例代码
  • Go 语言基础1 Slice,map,string
  • 在PyCharm中使用pyenv指定的Python:配置指南
  • 机器学习--分类算法
  • xml双引号可以不转义
  • 【python实战】中国主要城市经济统计数据分析与预测
  • 力扣395做题笔记
  • 深度学习论文idea:多模态检索
  • 计算机网络总结(物理层,链路层)
  • 【深度学习】2. 从梯度推导到优化策略:反向传播与 SGD, Mini SGD
  • 最好用的wordpress外贸主题
  • 【概率论基本概念02】最大似然性
  • 正则表达式:字符串模式匹配的利器
  • Bochs下去运行linux-0.11
  • 云原生安全基石:深度解析HTTPS协议(从原理到实战)
  • 图论核心:深度搜索DFS 与广度搜索BFS
  • 【React】createPortal - 简单的Message和Modal组件