简明的binlog event解析


  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  • GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。

用一个简明、清晰的步骤来解析一下DML操作产生的binlog event。主要是 TABLE_MAP_EVENT 和 UPDATE_ROWS_EVENT 类型的event。使用语法简单易上手的Golang来编码。数据库使用的是MySQL 5.7.34版本, Golang 1.15版本。

获取binlog event

获取binlog一般是模拟成从库封装通讯 package 向主库发送binlog dump命令(COM_BINLOG_DUMP或者COM_BINLOG_DUMP_GTID)来获取binlog。在这篇文章中,是封装的 COM_BINLOG_DUMP 向数据库请求的指定位点的 event。

模拟操作产生event

查看自动自交参数:

mysql> show variables like 'autocommit'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | autocommit | ON | +---------------+-------+ 1 row in set (0.00 sec)