近期在搭建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需要同步的MySQL
vi conf/example/instance.properties
还是这个文件,我们配置下要投入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
接下来配置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格式默认为数据库名_表名 切记切记切记!!!!