canal 译意水道/管道/,主要用于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
canal 工作原理(下图借用)
- canal 模拟 MySQL slave 的交互协议,伪装成 MySQL slave ,向 MySQL master 发送dump 协议
- MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
- canal 解析 binary log 对象(原始为 byte 流)----->kafka等
canal架构
- server代表一个canal运行实例,对应于一个jvm
- instance对应于一个数据队列 (1个server可以有1个或多个instance)
instance模块:
- eventParser (数据源接入,模拟slave协议和master进行交互,协议解析)
- eventSink (Parser和Store链接器,进行数据过滤,加工,分发的工作)
- eventStore (数据存储)
- metaManager (增量订阅&消费信息管理器)