Canal 是阿里的一款开源项目,纯 Java 开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了 MySQL(也支持 mariaDB)。
Canal 除了支持 binlog 实时增量同步数据库之外也支持全量同步。
由于 Canal 和 ES 的安装,都强依赖JDK(8或者11都支持),所以这里有必要先说明。(同时此处忽略了安装es集群的步骤,需要提前部署好es集群!)
主要流程如下:
- Canal 服务端向 MySQL 的 master 节点传输 dump 协议;
- MySQL 的 master 节点接收到 dump 请求后推送 Binlog 日志给Canal
- 服务端,解析 Binlog 对象(原始为 byte 流)转成 Json 格式; Canal 客户端通过 TCP 协议或 MQ 形式监听 Canal 服务端,同步数据到 ES。
mysql配置设置
打开 MySQL 的 BinLog
设置日志格式为ROW
#此处因为我的目标mysql服务器是一台主从架构的从节点,所以需要加上“==log-slave-update==”的参数,才能正常记录binlog日志。
创建canal用户并授权,后续给canal使用
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%' IDENTIFIED BY 'canal' ;
flush privileges;
本文由 Mr Gu 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Apr 7, 2024 at 05:00 pm