diff --git a/BinlogChange(Maria5-10).md b/BinlogChange(Maria5-10).md new file mode 100644 index 0000000..451f0ab --- /dev/null +++ b/BinlogChange(Maria5-10).md @@ -0,0 +1,81 @@ +
+
+

本文主要是介绍一下canal支持mariadb协议上的变化.

+

+

协议变化

+

mariadb5.5

+

mariadb5.5主要是基于mysql5.5的原型,类型定义基本没啥变化,大体上都保持兼容

+

主要的变化:

+

1. QueryLogEvent增加了status变量.

+ +

协议解析的时候,需要处理Q_HRNOW,需要跳过3字节的数据.

+

ps. mysql5.6后,新增了Q_MICROSECONDS来支持mariaDb中Q_HRNOW的毫秒精度的功能.

+

+

2. binlog事件的变化

+
  /* New MySQL/Sun events are to be added right above this comment */
+  MYSQL_EVENTS_END,
+
+  MARIA_EVENTS_BEGIN= 160,
+  /* New Maria event numbers start from here */
+  ANNOTATE_ROWS_EVENT= 160,
+
+  /* Add new MariaDB events here - right above this comment!  */
+
+  ENUM_END_EVENT /* end marker */
+

新增了mariadb的binlog区间为160开始,ANNOTATE_ROWS_EVENT类型为mysql5.6中的RowsQueryLogEvent,用于记录RBR模式下insert/update/delete中执行的sql.

+

+

mariadb10

+

mariadb10主要是基于mysql5.6的原型,类型定义基本没啥变化,大体上都保持兼容(沿用了mysql5.6中TIMESTAMP2等新的时间类型和新的log_event类型)

+

主要的变化:

+

1. QueryLogEvent增加了status变量.

+ +

协议解析的时候,需要处理Q_HRNOW,需要跳过3字节的数据.

+

ps. mysql5.6后,新增了Q_MICROSECONDS来支持mariaDb中Q_HRNOW的毫秒精度的功能.

+

+

2. binlog事件的变化

+
MARIA_EVENTS_BEGIN= 160,
+  /* New Maria event numbers start from here */
+  ANNOTATE_ROWS_EVENT= 160,
+  /*
+    Binlog checkpoint event. Used for XA crash recovery on the master, not used
+    in replication.
+    A binlog checkpoint event specifies a binlog file such that XA crash
+    recovery can start from that file - and it is guaranteed to find all XIDs
+    that are prepared in storage engines but not yet committed.
+  */
+  BINLOG_CHECKPOINT_EVENT= 161,
+  /*
+    Gtid event. For global transaction ID, used to start a new event group,
+    instead of the old BEGIN query event, and also to mark stand-alone
+    events.
+  */
+  GTID_EVENT= 162,
+  /*
+    Gtid list event. Logged at the start of every binlog, to record the
+    current replication state. This consists of the last GTID seen for
+    each replication domain.
+  */
+  GTID_LIST_EVENT= 163,
+
+  /* Add new MariaDB events here - right above this comment!  */
+
+  ENUM_END_EVENT /* end marker */
+

新增了mariadb自己的gtid处理

+

+

使用注意

+

1. AnnotateRowsEvent使用

+ +

2. 新增的binlog类型使用

+ +
+
\ No newline at end of file