背景
先前开源了一个开源项目: 【阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费】
本文主要是介绍一下canal支持mariadb协议上的变化.
协议变化
mariadb5.5
mariadb5.5主要是基于mysql5.5的原型,类型定义基本没啥变化,大体上都保持兼容
主要的变化:
1. QueryLogEvent增加了status变量.
- Q_HRNOW 用于记录毫秒的精度,枚举值下标为128
协议解析的时候,需要处理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 用于记录毫秒的精度,枚举值下标为128
协议解析的时候,需要处理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使用
- mariadb需要在my.cnf中设置binlog_annotate_row_events = true,开启记录annotate事件
- canal在发送COM_BINLOG_DUMP指令中需要设置binlog_flags |= BINLOG_SEND_ANNOTATE_ROWS_EVENT,不然mariadb默认不会发送AnnotateRowsEvent,而是以空的QueryLogEvent来代替.
2. 新增的binlog类型使用
- canal需要设置当前session变量
SET @mariadb_slave_capability='" + LogEvent.MARIA_SLAVE_CAPABILITY_MINE + "'"
相关推荐
canal 的 mysql 与 redis/memcached/mongodb 的 nosql 数据实时同步方案
mysql需开启binlog 查看是否开启binlog SHOW VARIABLES LIKE '%log_bin%' 如果log_bin的值为OFF是未开启,为ON是已开启。...https://github.com/alibaba/canal/releases/tag/canal-1.1.5 配置文件见附件
Canal是阿里巴巴的实时数据同步工具,基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql 详情查看 https://github.com/alibaba/canal/wiki/
在github链接中下载的 链接:https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz
canal.admin-1.1.4.tar.gz 解决 github 下载很慢的问题,https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz
5.数据写入/修改到nosql (redis的主从/hash分片) 6.保证对应关系的简单性:一个mysql表对应一个 redis实例(redis单线程,多实例保证分流不阻塞),关联关系数据交给接口业务 数据:mysql->binlog->MQ->redis(不...
https://github.com/alibaba/canal/releases/tag/canal-1.1.4 github上的原资源,包含: canal.adapter-1.1.4.tar.gz canal.admin-1.1.4.tar.gz canal.deployer-1.1.4.tar.gz canal.example-1.1.4.tar.gz ...
github下载太慢,放一份到这方便大家 官方下载地址 https://github.com/alibaba/canal/releases 资源包括 canal.adapter-1.1.6.tar canal.admin-1.1.6.tar canal.deployer-1.1.6.tar
易用的canal 客户端 easy canal client 介绍 canal 是阿里巴巴mysql数据库binlog的增量订阅&消费组件 使用该客户端前请先了解canal, canal 自身提供了简单的客户端,如果要转换为数据库的实体对象,处理消费数据要...
关于 Canal 的更多信息请访问 https://github.com/alibaba/canal/wiki 二.应用场景 canal-php 作为Canal的客户端,其应用场景就是Canal的应用场景。关于应用场景在Canal介绍一节已有概述。举一些实际的使用例子: ...
最新版阿里开源中间件canal实现mysql数据库同步,零侵入不写代码实现,也可以通过整合到项目程序实现更加灵活的控制。详细使用方法:https://blog.csdn.net/u014374009/category_9409106.html
包含canal全套资源包含以下 canal.adapter-1.1.5.tar.gz canal.admin-1.1.5.tar.gz canal.deployer-1.1.5.tar.gz canal.example-1.1.5.tar.gz
canal.adapter-1.1.4.tar.gz canal.admin-1.1.4.tar.gz canal.deployer-1.1.4.tar.gz 文件比较大,分两部分分上传
canal.adapter-1.1.4.tar.gz canal.admin-1.1.4.tar.gz canal.deployer-1.1.4.tar.gz 文件比较大,分两部分分上传
canal-canal-1.0.22_源码 canal-canal-1.0.22_源码 canal-canal-1.0.22_源码
canal客户端-canal.deployer-1.1.7-SNAPSHOT.tar.gz
数据canal 微服务canal客户端//更新数据到redis中content微服务查询categoryid对应广告集合更新到canal微服务,监听到了数据,调
canal.deployer-1.1.4.tar ; canal.admin-1.1.4.tar.gz ; canal.adapter-1.1.4.tar.gz ; canal.example-1.1.4.tar.gz 官网下载非常不易。
数据库同步中间件合集 canal.deployer-1.1.6.tar.gz ; canal.admin-1.1.6.tar.gz ; canal.adapter-1.1.6.tar.gz ; canal.example-1.1.6.tar.gz
canal.admin-1.1.7-SNAPSHOT.tar.gz canal.adapter-1.1.7-SNAPSHOT.tar.gz canal.deployer-1.1.7-SNAPSHOT.tar.gz