Canal实时读取mysql变化,并把消息投递到rocketmq

Canal实时读取mysql变化,并把消息投递到rocketmq

修改mysql配置

ps:mysql在docker中启动

进入容器:
docker exec -it 容器名 bash

cd etc/mysql

下载vim
apt-get update
apt-get install vim

在mysql的conf.d文件夹中的docker.cnf中修改配置
vim conf.d/docker.cnf

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

进入mysql
mysql -uroot -p

创建用户
CREATE USER canal IDENTIFIED BY 'canal';  

//查询和主从同步权限
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
//授予super权限
GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;

FLUSH PRIVILEGES;

部署和配置canal

下载canal.deployer-1.0.17

配置instance.properties

canal.instance.mysql.slaveId=1235
canal.instance.master.address=192.168.*
canal.instance.dbUsername=root
canal.instance.dbPassword=123456
#同步哪些表 
canal.instance.filter.regex=.*\\..*
# 过滤哪些表
canal.instance.filter.black.regex=mysql\..*

配置canal.properties

#多核cpu此处大于2
canal.instance.parser.parallelThreadSize = 20

启动bin/startup.sh

部署和配置rocketmq

了解rocketmq概念
下载地址

在配置文件中添加添加java_Home

#启动namesrv
/Users/js/Downloads/rocketmq-all-4.7.0-bin-release/bin/mqnamesrv
#启动broker
/Users/js/Downloads/rocketmq-all-4.7.0-bin-release/bin/mqbroker -n 192.168.205.34:9876 autoCreateTopicEnable=true

验证roketmq是否启动正常:我的另一篇文章rocketmq整合Springboot

或者直接把canal的消息投递到rocketmq

canal整合rocketmq

修改canal.properties

canal.serverMode = RocketMQ
canal.mq.servers = 192.168.*.*:9876
#生产者组
canal.mq.producerGroup = test

下载canal项目中的example模块,导入到自己项目再导入相关依赖

项目地址:https://github.com/alibaba/canal/blob/master/example/src/main/java/com/alibaba/otter/canal/example
修改AbstractRocektMQTest 里面的配置然后启动项目

修改数据库后如果控制台打印出改变的数据即整合成功
在这里插入图片描述
遇到的问题:

1.canal连接mysql出现:example.log ERROR com.alibaba.otter.canal.common.alarm.LogAlarmHandler - destination:example[com.alibaba.otter.canal.parse.exception.CanalParseException: java.io.IOException: connect /192.168.205.34:3306 failure

网上的说法是将服务端配置文件canal.properties 中的并行线程数关掉即可,单例单线程运行。不适用我的情况,

反复修改配置文件无效,最后发现是开了代理导致的

参考文章:

canal官方文档

rocketmq官方文档

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值