Cananl 1.1.5+RabbitMQ 实现数据同步

近期在搭建Canal接收到MySQL变更数据后将变更后的数据投递到MQ里面.

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

一:[mysqld]

log-bin=mysql-bin # 开启 binlog

binlog-format=ROW # 选择 ROW 模式

server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复

二:授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限,楼主使用了root

CREATEUSERcanalIDENTIFIED BY'canal';GRANTSELECT, REPLICATION SLAVE, REPLICATION CLIENTON*.*TO'canal'@'%';--GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;FLUSH PRIVILEGES;

下面开始搭建Canal 1.1.5.先从官网下载如下图的压缩包.

canal下载

下载完成后解压得到如下图:

解压后的canal

一: 我们先配置canal需要同步的MySQL

vi conf/example/instance.properties


红线圈的是要配置的MySQL基本信息

还是这个文件,我们配置下要投入mq的库和表:

具体配置请看:https://github.com/alibaba/canal/wiki/Canal-Kafka-RocketMQ-QuickStart#canalmqdynamictopic-%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%AF%B4%E6%98%8E


mq配置

接下来配置canal的一些参数:

vi conf/canal.properties(conf文件夹下面的canal.properties文件)

canal.serverMode = rabbitMQ

rabbitMQ的virtual.host和exchange需要自己在rabbitmq的web管理端新建

如图

接下来在bin文件夹里面找到启动的脚本启动就行了.

查看日志:

vi logs/canal/canal.log


如图

vi logs/example/example.log

如图

注意:!!!!!

canal投递消息的交换机Type需要为topic,队列与交换机绑定的

Routing key格式默认为数据库名_表名  切记切记切记!!!!


如图

你可能感兴趣的:(Cananl 1.1.5+RabbitMQ 实现数据同步)