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官方文档

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页