获取Binlog事件

简介: 获取Binlog事件

  获取Binlog事件:

  Mysql对Binlog的处理是以事件为单位的,每一次DML操作可能会产生多次事件,例如对于innodb存储引擎,会额外产生一条QUERY_EVENT(事务的begin语句)以及XID_EVENT(事务提交)。

  通过调用libmysql.so库中的cli_safe_read()函数可以获取一次binlog事件:

  cli_safe_read(mm); // mm类型为MYSQL*

  net = &mm->net;

  buf = (const char*) net->read_pos + 1;

  Binlog的事件类型大约有27种,这里只介绍与ROW模式相关的事件

  1) QUERY_EVENT:与STATEMENT模式处理相同,存储的是SQL,主要是一些与数据无关的操作,eg: begin、drop table;

  2) TABLE_MAP_EVENT:记录了下一条事件所对应的表信息,在其中存储了数据库名和表名;

  3) WRITE_ROWS_EVENT:操作类型为insert;

  4) UPDATE_ROWS_EVENT:操作类型为update;

  5) DELETE_ROWS_EVENT:操作类型为delete;

  6) XID_EVENT, 用于标识事务提交。

  在buf[EVENT_TYPE_OFFSET]中记录了事件的类型 (EVENT_TYPE_OFFSET = 4),根据其中记录的整数,对比log_event.h中的Log_event_type,可以找到相应的事件类型。

  以一条insert语句为例,包含4个事件:

  TABLE_MAP_EVENT

  QUERY_EVENT (begin)

  WRITE_ROWS_EVENT

  XID_EVENT

目录
相关文章
|
关系型数据库 MySQL 数据库管理
FAQ系列 | 不同复制模式下,如何忽略某些binlog事件
FAQ系列 | 不同复制模式下,如何忽略某些binlog事件
|
关系型数据库 MySQL 数据库管理
FAQ系列 | 不同复制模式下,如何忽略某些binlog事件
FAQ系列 | 不同复制模式下,如何忽略某些binlog事件
|
26天前
|
存储 SQL 关系型数据库
MySQL中binlog、redolog与undolog的不同之处解析
每个都扮演回答回溯与错误修正机构角色: BinLog像历史记载员详细记载每件大大小小事件; RedoLog则像紧急救援队伍遇见突發情況追踪最后活动轨迹尽力补救; UndoLog就类似时间机器可倒带历史让一切归位原始样貌同时兼具平行宇宙观察能让多人同时看见各自期望看见历程而互不干扰.
113 9
|
2月前
|
存储 SQL 关系型数据库
MySQL的Redo Log与Binlog机制对照分析
通过合理的配置和细致的管理,这两种日志机制相互配合,能够有效地提升MySQL数据库的可靠性和稳定性。
99 10
|
4月前
|
SQL 监控 关系型数据库
MySQL日志分析:binlog、redolog、undolog三大日志的深度探讨。
数据库管理其实和写小说一样,需要规划,需要修订,也需要有能力回滚。理解这些日志的作用与优化,就像把握写作工具的使用与运用,为我们的数据库保驾护航。
195 23
|
9月前
|
存储 SQL 关系型数据库
mysql 的ReLog和BinLog区别
MySQL中的重做日志和二进制日志是确保数据库稳定性和可靠性的关键组件。重做日志主要用于事务的持久性和原子性,通过记录数据页的物理修改信息来恢复未提交的事务;而二进制日志记录SQL语句的逻辑变化,支持数据复制、恢复和审计。两者在写入时机、存储方式及配置参数等方面存在显著差异。
199 6