用canal解析MySQLBinlog日志发送到Kafka

首先肯定安装kafka,zookeeper(安装方法都在我的其他博文里)
然后按照canal快速搭建配置后,再进行接下去的操作:

1.修改instance配置文件:
在canal目录下
vim conf/example/instance.properties

1)首先需要修改下面部分

#自己mysql所在的IP
canal.instance.master.address=xxx.xxx.xxx.xxx:3306

2)然后根据官方wiki我们在尾部加上:

# mq config,这个topic就是发送到kafka上的topic,可自己写为其他的
canal.mq.topic=example
# 针对库名或者表名发送动态topic
#canal.mq.dynamicTopic=mytest,.*,mytest.user,mytest\\..*,.*\\..*
canal.mq.partition=0
# hash partition config
#canal.mq.partitionsNum=3
#库名.表名: 唯一主键,多个表之间用逗号分隔
#canal.mq.partitionHash=mytest.person:id,mytest.role:id
#################################################

2. 修改canal 配置文件
vim /usr/local/canal/conf/canal.properties
1)首先修改下面的部分

# 可选项: tcp(默认), kafka, RocketMQ
canal.serverMode = kafka

2)然后根据官方wiki我们在尾部加上:

# kafka/rocketmq 集群配置: 192.168.1.117:9092,192.168.1.118:9092,192.168.1.119:9092 
#kafka所在的IP及端口
canal.mq.servers = xxx.xxx.xxx.xxx:9092
canal.mq.retries = 0
canal.mq.batchSize = 16384
canal.mq.maxRequestSize = 1048576
canal.mq.lingerMs = 1
canal.mq.bufferMemory = 33554432
# Canal的batch size, 默认50K, 由于kafka最大消息体限制请勿超过1M(900K以下)
canal.mq.canalBatchSize = 50
# Canal get数据的超时时间, 单位: 毫秒, 空为不限超时
canal.mq.canalGetTimeout = 100
# 是否为flat json格式对象
canal.mq.flatMessage = true
canal.mq.compressionType = none
canal.mq.acks = all
# kafka消息投递是否使用事务
canal.mq.transaction = false

3.修改canal目录下vim conf/mq.yml
这三个地方一定注意

#改成kafka所在的IP及端口
servers: 192.168.56.230:9092
#和instance.properties里的topic一致
topic: example
#第一个分区号为0
partition: 0

4.启动:
先启动zookeeper
再启动kafka
最后启动canal

查看日志:
vim logs/canal/canal.log
如果出现下面的错误,不用担心,canal server在启动时,是先暴露了端口,再启动对应需要启动的instance,因为启动instance需要一点时间,所以有一定概率会撞上instance未启动完成。所以你就忽略掉这个错误吧

com.alibaba.otter.canal.protocol.exception.CanalClientException: something goes wrong with reason: something goes wrong with channel:[id: 0x3622e177, /192.168.1.134:50993 => /192.168.1.134:11111], exception=com.alibaba.otter.canal.server.exception.CanalServerException: destination:idbbond-1 should start first

然后你去kafka消费那个你取名叫example的topic

/usr/local/kafka/kafka_2.11-0.10.0.0/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic example --from-beginning

成功!
在这里插入图片描述

你可能感兴趣的:(Kafka,canal)