获取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事件
|
19天前
|
存储 安全 关系型数据库
Mysql 的binlog日志的优缺点
MySQL的binlog(二进制日志)是一个记录数据库更改的日志文件,它包含了所有对数据库执行的更改操作,如INSERT、UPDATE和DELETE等。binlog的主要目的是复制和恢复。以下是binlog日志的优缺点: ### 优点: 1. **数据恢复**:当数据库出现意外故障或数据丢失时,可以利用binlog进行点恢复(point-in-time recovery),将数据恢复到某一特定时间点。 2. **主从复制**:binlog是实现MySQL主从复制功能的核心组件。主服务器将binlog中的事件发送到从服务器,从服务器再重放这些事件,从而实现数据的同步。 3. **审计**:b
|
28天前
|
SQL 关系型数据库 MySQL
mysql的binlog恢复数据
mysql的binlog恢复数据
29 0
|
2月前
|
存储 SQL 安全
浅谈MySQL Binlog
浅谈MySQL Binlog
45 0
|
4月前
|
缓存 关系型数据库 MySQL
MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
47 0