canal 同步mysql到rocketMQ

发布时间 2023-04-06 13:06:18作者: 赵钱富贵

https://github.com/alibaba/canal/wiki/canal介绍
https://github.com/alibaba/canal/releases

地址:
Mysql 172.31.100.1 33066
rocketMQ http://172.31.100.1:8181
Canal-admin http://172.31.100.2:8089/ admin 123456
一、Mysql5.7配置
(1)###拉取镜像mysql5.7
docker pull mysql:5.7

(2)###运行 mysql5.7 容器
sudo docker run -itd
--privileged=true
--restart=always
--name mysql_mzn
-v /home/project/mysql_mzn_data/conf:/etc/mysql/conf.d \
-v /home/project/mysql_mzn_data/data:/var/lib/mysql \
-v /home/project/mysql_mzn_data/logs:/logs
-p 33066:3306 \
-e MYSQL_ROOT_PASSWORD=Sft@123456
--character_set_server=utf8
mysql:5.7
(3)查看binlog 是否开启 show viriables like ‘%log_bin%’
(4)编辑my.cnf ,docker restart mysql_mzn 重启mysql
log_bin=ON
binlog_format=ROW
server-id=666

二 、canal-deployer
执行端
1.配置数据库信息(一个instance)
conf目录下, 参照example 目录可以创建多个实例,配置目录下的instance.properties

数据库连接信息

canal.instance.master.address=172.31.100.1:33066
canal.instance.dbUsername=root
canal.instance.dbPassword=Sft@123456
canal.instance.connectionCharset = UTF-8

regix配置传输的表 及 黑名单

canal.instance.filter.regex=riskdb_risk\.risk.*
canal.instance.filter.black.regex=riskdb_risk\.slave_.*

目标mq的主题

canal.mq.topic=riskdb_risk

2.配置mq信息 /conf/canal.properties

为管理端提供的信息,不用则可不配

canal.admin.port = 11110
canal.admin.user = admin
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441

选择第一部中的配置目录

canal.destinations = riskdb_risk

选择mq

canal.serverMode = rocketMQ

配置RocketMq信息

rocketmq.producer.group = riskdb_risk
rocketmq.enable.message.trace = false
rocketmq.customized.trace.topic =riskdb_risk
rocketmq.namespace =
rocketmq.namesrv.addr = 172.31.100.1:9876
rocketmq.retry.times.when.send.failed = 0
rocketmq.vip.channel.enabled = false
rocketmq.tag = 172

3.sh startup.sh local
启动,启动日志在logs相应的文件夹下,查看是否启动成功
修改数据,查看mq中是否产生消息。
三、Canal-admin
管理端
instance,对应canal-server里的instance,一个最小的订阅mysql的队列
server,对应canal-server,一个server里可以包含多个instance
集群,对应一组canal-server,组合在一起面向高可用HA的运维

1.部署
(1)解压
(2)创建元数据库,执行conf 下的sql文件
(3)配置application.yml ,
配置元数据库信息,
配置http端口,
配置deployer
填入deployer的canal.admin.user /canal.admin.passwd (admin/admin)

(4)执行startup.sh ,日志在logs/admin.log
(5) 访问ip:port ,账户/密码 默认为 admin/123456