如何通过canal读取mysql数据_mysql整合canal读取binlog日志

这里将告诉您mysql整合canal读取binlog日志,具体实现方法:

canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。

1.mysql前期准备(开启binlog):

对于自建 MySQL , 需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf 中配置如下

[mysqld] log-bin=mysql-bin # 开启 binlog binlog-format=ROW # 选择 ROW 模式 server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复

注意:针对阿里云 RDS for MySQL , 默认打开了 binlog , 并且账号默认具有 binlog dump 权限 , 不需要任何权限或者 binlog 设置,可以直接跳过这一步

授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限, 如果已有账户可直接 grant

CREATE USER canal IDENTIFIED BY 'canal'; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%'; -- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ; FLUSH PRIVILEGES;

2.下载canal:

https://github.com/alibaba/canal/releases

3.window下启动:

bin/startup.bat 启动

启动时遇到如下问题:

ce141843628a66609815174331df4159.png

最后查看issue找到解决方式:

https://github.com/alibaba/canal/issues/2152

之后再次启动如下:

ced4bbc94677e2b896c7d5cb3590d7cf.png

6514c131eff8b476b2d8771254a12480.png

启动成功。

4.通过提供的example测试是否生效:

0eda780a22f29062aff5a995598c23c0.png

启动之后修改本机数据库任意一个表分别触发

增加:

59d4e782072903ba130bba3b1af2fe91.png

修改:

40aabf2e3a3ba3ed700006e0f71dd8db.png

删除:

6f730eb2c94856edef5e80a71b120f71.png

mysql整合canal读取binlog日志就为您介绍到这里,感谢您关注懒咪学编程c.lanmit.com.

本文地址:https://c.lanmit.com/shujuku/qita/14163.html


版权声明:本文为weixin_39927993原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。