前言:
现在不少公司的业务数据都储存在阿里云的MySQL数据库中。其中有些数据储存在RDS中,这个与传统的关系型数据库连接配置又略有不同。
当前文档基于1.1.4版本的canal去实时获取RDS库的binlog日志,再把数据实时推送到Kafka中,通过flink进行逻辑处理,解析json数据,拼接成sql写入到我们自己的分布式数据库clickhouse中。
点击了解RDS:https://help.aliyun.com/document_detail/26092.html?spm=a2c4g.11174359.2.10.b0a94562ONQkbi
版本信息:
canal:1.1.4
下载地址:https://github.com/alibaba/canal/releases
MySQL:5.6
Kafka:2.1.0
一、配置MySQL
1、在访问目标MySQL的binlog数据之前要先确认binlog日志服务是否开启。
具体操作可参见:【MySQL开启binlog日志】
2、单独创建一个用户用于canal访问binlog
同时需要分配一些权限,操作如下:
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%' identified by 'CLcanal@123';
FLUSH PRIVILEGES;
权限如上图所示这表示配置成功
二、配置canal
第一步:解压安装canal
由于Kafka是集成在大数据集群中,因此配置就不再多说。同时canal服务器的基础环境配置也不在此多说,基于JDK1.8即可。
言归正传,先把下载好的jar包上传到服务器上,进行解压。
tar -zxvf /opt/canal.deployer-1.1.4.tar.gz -C /opt/canal/
第二步:修改配置文件
1、进入解压后的canal目录下的 conf/example/ 目录,修改文件 instance.properties
# canal服务的id,切记与MySQL的server_id不能重复
canal.instance.mysql.slaveId
# MySQL的链接地址,必填!!!
canal.instance.master.address
# MySQL库的用户名,必填!!!
canal.instance.dbUsername
# MySQL库的密码,必填!!!
canal.instance.dbPassword
# MySQL库的编码格式,必填!!!默认UTF-8
canal.instance.connectionCharset
# 过滤白名单,默认值.*\\..* 针对全部库表
canal.instance.filter.regex
举例:canal.instance.filter.regex = canaltest\\.test.*,canaltest.user,mysql\\..* canaltest\\.test.*:canal库下以test开头的所有表
canaltest.user:canaltest库下user表
mysql\\..*:mysql库下所有表
# 过滤黑名单,正则规则与白名单一致
canal.instance.filter.black.regex
# 消息队列的topic名称,默认example。
canal.mq.topic
# 针对库名或者表名发送动态topic,看需求配置,默认注释
canal.mq.dynamicTopic
举例:canal.mq.dynamicTopic=example1:.*;example2:canaltest\\..*,bigdata_test\\..*
# 库名.表名: 唯一主键&