前言

bin log 相关 

呵呵 记得之前是做过基于 binlog 的数据同步到的, 这里 可以来了解一下 binlog 的产生, 以及 相关更加详细的信息

说不定 之后也可以 做一个 binlog 的解析工具 

这里 来看一下 各个常见的 binlog event 的相关格式 

open-replicator 解析binlog失败 available: 4, event type: 19

关于mysql 的binlog相关的几个问题 

测试数据表如下 

CREATE TABLE `tz_test` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `field1` varchar(128) DEFAULT NULL,
  `field2` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `field_1_2` (`field1`,`field2`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8

测试数据如下 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_log

配置信息如下, 这里 binlog 格式使用的是 ROW  

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_日志输出_02

Query_log_event – ROW 

这个是 在 master 上面的任何 更新都会记录 Query_log_event

记录 binlog 均是在操作之后记录的, 比如这里的 Query_log_event 的调用的地方是在这里 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_mysql_03

Query_log_event 写出数据如下 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_binlog_04

Query_log_event 日志格式如下 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_sql_05

Table_map_log_event – ROW

这个是在每一个需要描述 表元数据的地方, 都需要写的 事件信息

比如这里是 写出了 Query_log_event 之后, 继续写出 Table_map_log_event

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_binlog_06

写出的方式如下, 四大主体 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_mysql_07

Table_map_log_event 日志格式如下 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_log_08

Update_rows_log_event – ROW

执行 sql 如下 

“begin;

update tz_test set field1 = 'field28' where field2 = '2';

rollback;

向 Update_rows_log_event 中填充 更新之前的记录信息, 和 更新之后的记录信息

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_log_09

具体的拷贝 数据记录信息到 Update_rows_log_event 中, 直接 复制数据的 binary 到 Update_rows_log_event 中 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_sql_10

写出 Update_rows_log_event 的地方在这里, 主要是 更新的处理之后

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_log_11

写出 Update_rows_log_event 同样是 这四个步骤, 子类会重写 对应的实际写出数据的函数

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_日志输出_12

Update_rows_log_event 日志格式如下 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_log_13

Write_rows_log_event – ROW

执行 sql 如下 

“begin;

INSERT INTO `test`.`tz_test`(`field1`, `field2`) VALUES ('field11', '11');

rollback;

将待新增记录信息 添加到 Write_rows_log_event 中 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_日志输出_14

记录 binlog 是在 sql 执行之后 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_日志输出_15

Write_rows_log_event 日志格式如下 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_sql_16

Delete_rows_log_event – ROW

执行 sql 如下 

“begin;

delete from tz_test where id = 2;

rollback;

记录 binlog 是在 sql 执行之后 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_binlog_17

Delete_rows_log_event 日志格式如下 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_binlog_18

更新 binlog 格式为 statement 

Update_rows_log_event – STATEMENT 

statement binlog 记录是基于 Query_log_event 的 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_binlog_19

当前 binlog 日志输出信息如下 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_binlog_20

Write_rows_log_event – STATEMENT

同上

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_log_21

当前 binlog 日志输出信息如下 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_binlog_22

Delete_rows_log_event – STATEMENT

同上

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_log_23

 当前 binlog 日志输出信息如下 

39 关于 binlog 日志open-replicator 解析binlog失败 available: 4, event type: 19_mysql_24

完