Skip to content

my2fback 是基于Golang开发的快速解析与闪回MySQL/MariaDB binlog 工具, 也支持解析relaylog

Notifications You must be signed in to change notification settings

banlilin/my2fback

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简介

闪回大概介绍想了解的,请阅读。

my2fback 实现了基于row格式binlog的回滚闪回功能,让误删除或者误更新数据,可以不停机不使用备份而快速回滚误操作。也可以解释binlog(支持非row格式binlog)生成易读的SQL。

安装与使用

my2fback 连接数据库帐号的权限:

  • MySQL5.6/MariaDB10.1/MariaDB10.2版本
mysql> GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT, PROCESS ON *.* TO 'user'@'localhost' IDENTIFIED BY 'xxxxxx';
  • MySQL5.7版本
mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'xxxxxx';
mysql> GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT, PROCESS ON *.* TO 'user'@'localhost';

版本

  • 以上功能均可指定任意的单库多库, 单表多表, 任意时间点, 任意binlog位置。
  • 支持mysql5.5及以上,也支持MariaDB的binlog, 支持传统复制的binlog, 也支持GTID的binlog。
  • 支持直接指定文件路径的binlog, 也支持主从复制, my2fback 作为从库从主库拉binlog来过解释。

限制

  • 使用回滚/闪回功能时,binlog格式必须为row,且binlog_row_image=full, 其它功能支持非row格式binlog
  • 只能回滚DML, 不能回滚DDL
  • 支持V4格式的binlog, V3格式的没测试过,测试与使用结果显示,mysql5.1,mysql5.5, mysql5.6与mysql5.7的binlog均支持
  • 支持指定-tl时区来解释binlog中time/datetime字段的内容。开始时间-sdt与结束时间-edt也会使用此指定的时区,
    • 但注意此开始与结束时间针对的是binlog event header中保存的unix timestamp。结果中的额外的datetime时间信息都是binlog event header中的unix timestamp
  • decimal字段使用float64来表示, 但不损失精度
  • 所有字符类型字段内容按golang的utf8(相当于mysql的utf8mb4)来表示

TODO

  • file方式解析binlog
  • file方式回滚binlog
  • repl方式解析binlog
  • repl方式回滚binlog
  • DML统计信息
  • 大事务与长事务统计信息
  • DDL统计信息
  • 测试

About

my2fback 是基于Golang开发的快速解析与闪回MySQL/MariaDB binlog 工具, 也支持解析relaylog

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%