Products
GG网络技术分享 2026-04-16 09:18 1
雪糕刺客。 哎呀,数据又没了。是不是很崩溃?我就问你是不是很崩溃?这时候就需要binlog回滚了。市面上工具一大堆,哪个好用?哪个是坑?今天我就来瞎扯扯。在mysql日常运维中, 难免遇到需要回滚binlog的时候, 市面上能回滚binlog的工具还挺多的, 但都各种小问题, 今天我就来简单测评一下. 从使用难易度, 兼容性, 流行度, 最近一次维护时间等方面进行综合评价.
官方一直在更新,维护频率这事儿真的很重要。你想想,你用个几年前的工具,解析现在的MySQL 8.4,那不是找虐吗?这里测试的均为能在互联网上免费下载的。下面简单介绍下几款常用工具的功能: pt-archiver:主要用于清理、归档历史数据。 pt-duplicate-key-checker:列出并删除重复的索引和外键。

感兴趣的同学可以安装学习下,好的工具能让工作事半功倍。
pt-kill:杀掉符合条件的数据库连接。 pt-online-schema-change:在线修改表结构,常用于大表 DDL 。 pt-query-digest:分析 MySQL日志,并产生报告,常用于慢日志分析。 pt-table-checksum:校验主从复制一致性。 本篇文章简单介绍了 SQL审核、 binlog解析、Percona Toolkit几类工具,关于各个工具的使用方法,还需各位详细探索,中肯。。
文章浏览阅读1.2w次,点赞2次,收藏8次。这两天线上数据被误删除为了回滚折腾了两天终于搞定,其中用到了mysql的binlog以此记录一下。 之前没有搞过mysql的mysqlbinlog查看了很多文档但是多数为简单的教程,虽然有用但是还是相对疑惑。所以呢自己记录一下希望有用。 mysqlbinlog是mysql自带的回滚数据的机制,默认是不开启的需要手动开启。 一、 开启mysql-binlog日志 在mysql配置文件my.cnf_mysql binlog 回滚 记录使用mysqlbinlog回滚日志 最新推荐文章于 2023-09-14 14:26:00 发布 原创于 2018-01-11 13:16:46 发布·1.2w 阅读·2 · ·CC 4.0 BY-SA版权版权声明:本文为博...,操作一波...
离了大谱。 第一款上场的是 binlog2sql, 这款工具在业内算是很出名的了, 该工具使用python开发的, 是基于python-mysql-replication开发的一款能解析Binlog生成回滚SQL语句的工具. 纯python编写,无依赖。但是但是啊,它不支持离线使用,且参数过于复杂。这也就算了再说说一次是7年前维护了。我的天7年前!那时候MySQL 8.0都还没出生呢吧?
虽然支持mariadb和mysql, 但在解析mysql时,会还是有些小问题。我们稍微修正下代码再来测试下. 开倒车。 又遇到了pymysqlreplication的编码问题. 这个问题我们就不继续修复了. 真的太烦了这玩意儿。
分类 |
binlog2sql |
|---|---|
流行度 |
github上start数量为700+ |
兼容性 |
不支持mysql8.4,且长期未维护了 |
是否支持离线使用 |
不支持离线使用 |
得分 |
3星 |
代码语言:sql
mysql -h127.0.0.1 -P3308 -uroot -p123456 -e 'select @@version'python --flashback -h127.0.0.1 -P3308 -uroot -p123456 -ddb1 --start-file='m3308.001408'
回滚只需要加个--flashback即可。听起来很简单对吧?其实吧你得考虑写入数据库的场景. 。这工具虽然提供了二进制包, 但参数过于复杂。未提供二进制包,使用时得配置环境或者提前编译. 真的,用起来心累,哎,对!。
MyFlash是由美团点评公司技术工程部开发维护的一个回滚DML操作的工具. 该工具binlog文件, 还需要结合mysqlbinlog来使用。 补救一下。 这就很尴尬了我只想回个数据,还得先生成个binlog再导进去?多此一举啊。
代码语言:shell
./flashback --binlogFileNames=/data/mysql_3308/mysqllog/binlog/m3308.001408 --outBinlogFileNameBase=mysql57mysqlbinlog -vvv
大体上... 再说说一次维护虽然是5年前了, 但问题相对少很多。兼容性好,支持离线解析。这是它最大的优点。离线!懂吗?不用连生产库,平安!
心情复杂。 文章浏览阅读326次。1.先开启binloglog-bin = /var/log/mysql/mysql_bin #binlog日志文件,以mysql_bin开头,六个数字的文件:mysql_bin.000001,并且会将文件存储在相应的xxx/xxx路径下,如果只配置mysql_bin的话默认在C:\\ProgramData\\MySQL\\MySQL Server 8.4\\Data下;binlog_for..._mysql binlog回滚 mysql binlog回滚数据 最新推荐文章于 2024-07-17 00:50:40 发布 最新推荐文章于 2024-07-17 00:50:40 发布阅读量326收藏点赞数 版权声明:本文为博主原创文章,遵循版权协议,转载请附上原文出处链接和本声明。 CC 4.0 BY-SA1.先开启binlog log-bin = /var/log/mysql/mysql_...
无法一步到位,得搭配mysqlbinlog使用。这操作流程太长了。解析的mysql的binlog无法直接回放到数据库。还得自己手动导一下。
杀疯了! my2sql是go版MySQL binlog解析工具.基于my2fback、binlog_rollback工具二次开发而来. 这个就比较猛了。github上start数量为3.4K, 足见其流行度。连mysql8.4都支持了!这可是LTS版本啊兄弟们。
测试环境说明: OS: centos 7.9 mysql 5.7.38 mysql 8.0.28 mysql 8.4.0。这环境够全了吧?
但是8.4环境移除了show master status, 现在是使用show binary log status;来查看位点信息了. 所以会遇到如下报错。这坑踩得我头皮发麻。不过还好,工具本身是能用的。
工具 |
my2sql |
|---|---|
好家伙... github上start数量为3.4K, 足见其流行度 |
|
连mysql8.4都支持了 |
|
是否易于使用 |
支持范围挺广的 |
5星 |
测试SQL参考如下:
-- 数据准备create table 20250313_test_binlog, update_time datetime);insert into 20250313_test_binlog values);insert into 20250313_test_binlog values);flush logs; begin;delete from 20250313_test_binlog where id=1;commit;
就这? 综合来说: 推荐使用myflash或者my2sql。这两个真的是目前的扛把子了。
这可是mariadb啊。mariadb的mysqlbinlog是支持回滚binlog的. 使用的时候加个 --flashback 即可。是不是很神奇?用MariaDB的工具回滚MySQL的binlog,拉倒吧...。
./mariadb-binlog /data/mysql_3308/mysqllog/binlog/m3308.001408 -vvv --flashback
百感交集。 兼容性好。虽然支持mariadb和mysql, 但在解析mysql时,会还是有些小问题。不过总体能用。官方支持的能回滚Binlog的工具,这个也算半个官方吧?毕竟MariaDB也是MySQL的亲兄弟嘛。
不错。 文章浏览阅读1.8k次。一、数据库在进行数据更改操作时,会出现数据误操作导致数据异常的情况,所以数据平安是重中至重,对于数据库服务,必须开启binlog日志服务,保证数据的平安,可逆回滚。二进制日志的格式有三种形式分别为ROW、 Statement以及MiXED1、STATMENT模式:基于SQL语句的复制,每一条会修改数据的sql语句会记录到binlog..._mysql通过binlog回滚 学习文心AI搜索 消息历史MySQL通过binlog日志回滚数据 一、数据库在进行数据更改操作时,会出现数据误操作导致数据异常的情况,所以数据平安是重中至重,对于数据库服务,必须开...
再说说来个私货:pymysqlbinlog 相当于给mysqlbinlog加个flashback功能, 但流行度很低, 未知问题挺多的. 对bin 一阵见血。 log结构感兴趣的,可以选择此工具二次开发. 基于python-mysql-replication二次开发的解析binlog的工具市面上还有很多的.
这两款工具开发时侧重点不同,所以使用中也需要注意一下: mysqlbinlog_flashback 更便重于阿里云 RDS环境的使用。 binlog2sql 便重于通常M...,累并充实着。
醉了... inlog_format设置为row才行。 项目一:mysqlbinlog_flashback 项目作者:赖亿@58到家 github项目地址: 也可在github.com上搜索“mysqlbinlog_flashback” 项目介绍:产生在线mysqlbinlog的回滚的sql, 现在已经在阿里的rds上,db为utf8字符集的生产环境下使用。其他环境没有在生产环境下使用,请小心。 项目使用反馈:laiyi@daojia
上面没有做完整的验证, 其实吧还得考虑写入数据库的场景. 。这里只进行简单的测试, 不会测试复杂事务, 复杂数据类型等情况. 测试数据. 5.7和8.0是mysql的主流版本, 8.4是LTS的.
上述几款工具各有优缺点. 汇总如下:
优点 |
缺点 |
|
|---|---|---|
使用广泛 |
不支持离线使用,且参数过于复杂 |
|
myflash |
兼容性好,支持离线解析 |
虽然提供了二进制包, 但参数过于复杂 |
未提供二进制包,使用时得配置环境或者提前编译.,我傻了。 |
||
虽然支持mariadb和mysql, 但在解析mysql时,会还是有些小问题. |
||
pymysqlbinlog |
纯python编写,无依赖 |
未知问题多,无相关案例 |
实不相瞒... 通过 mysqlbinlog 命令核实最近的binlog日志名称进行日志查看。核实具体的时间节点。 确认时间点后,进行数据回滚,相关命令还是通过mysqlbinlog进行数据回滚操作。 mysqlbinlog --no-defaults --start-position= 239 --stop-position= 736 /var/lib/mysql/ON.000015 | mysql -uroot -p 参数说明,--start-position #开始的pos时间点。
--stop-position #结束的pos时间 如果是通过日期时间回滚的命令如下: mysqlbinlog --start-datetime '2019-07-02 21:42:36' --stop-datetime '2019-07-02 21:57:42' /var/lib/mysql/ON.000013 | mysql -uroot -p 施行回滚后会出现如下的信息,回车确认,我这里数据比较少,回滚时间较快。
拜托大家... 这样的输出有可能是看不到任何有价值的sql如果想看到标准的sql可以 使用 mysqlbinlog –base64-output=DECODE-ROWS -v /usr/local/mysql/data/binlog.123456 /tmp/mysql.sql 上面的情况也可能得到的sql不是想要的需要进行替换,那么如果数据量少手动替换@1@2就可以如果比较多建议使用开源工具mysql2binlog 再说说一点线上数据一定要当心,虽然mysql有binlog机制,但还是希望人尽量少用它! 问题: binlog2sql 回滚sql 产生的sql 为空,错误的sql 找到了,生成回滚sql 的时候为空,这是为什么呢 就是找到日志文件了,但是在生成回滚sql...
mysql官方的mysqlbinlog没有回滚的功能,淘宝大牛对官方代码进行了修改使之能够将binlog中的DML操作变成互逆的语句,比如delete变为insert,update的set和where的互换。不过注意前提是binlog的格式必须是binlog_format=ROW 再说一个注意导入回滚数据较多时,需要调整超时时间和最大packag... binlog_format=ROW max_all 没法说。 owed_packet=1024M #max_allow_packet大小不够时报错如下: ERROR 1153 at line 403133: Got a packet bigger than ‘max_allowed_packet’ bytes 有三个版本,测试percona5518版本可以使用5.5.18_flashback_all.diff,mysql官方版本只能使用5.5.18_flas...
乱弹琴。 回滚难度大的时候, 就备份+日志回放吧. 也可以配置延迟从库. 这才是王道啊。工具只是辅助,别太依赖它们。上述评价为个人观点, 仅作参考. 实际使用请根据自己情况来. 本文对几款MySQL回滚binlog工具进行了测评,包括binlog2sql、 myflash、my2sql、mariadb-binlog和pymysqlbinlog,从流行度、易用性、兼容性、维护频率和离线使用等方面进行了综合评价,推荐myflash或my2sql。 导读 在mysql日常运维中, 难免遇到需要回滚binlog的时候, 市面上能回滚binlog的工具还挺多的, 但都各种小问题, 今天我就来简单测评一下. 从使用难易度, 兼容性, 流行度, 最近一次维护时间等方面进行综合评价. 回滚难度大的时候, 就备份+日志回放吧. 也可以配置延迟从库. 测试环境说明: OS: centos 7.9 mysql 5.7.38 mysql 8.0.28 mysql 8.4...
Demand feedback