前提:已安装MySQL,rabbitMQ,下载好canal-deployer(canal.deployer-1.1.5.tar.gz)
1.解压canal包
2.配置canal/conf下的canal.properties
# tcp, kafka, rocketMQ, rabbitMQ
canal.serverMode = rabbitMQ
# 将数据发送的目标指向rabbitMQ,也可以换成kafka、tcp、rocketMQ,看需求
##################################################
######### RabbitMQ #############
##################################################
rabbitmq.host = xx.xx.xx.xx
# virtual.host不能为空,没有就填/
rabbitmq.virtual.host = /
# mq交换队列
rabbitmq.exchange = alg_result
rabbitmq.username = admin
rabbitmq.password = admin
# fanout这个是mq的数据交换模式
rabbitmq.deliveryMode = fanout
#文件中有对应的其他种类的消息队列配置,按需配置就可以
这个的作用的就是数据发送指向rabbitMQ,要用其他的就指向其他的如kafka
3.配置canal/conf/example下的instance.properties,启动后instance.properties同级目录下会生成对应的meta.dat文件,记录canal读取情况,停止后可以修改,重启后会从修改的位置开始读,如果中间报错出问题需要重新跑,可以删除meta.dat,有些情况不删这个文件可能导致一些读不到binlog,定位不到position,抓不到更新等奇奇怪怪的问题。
# position info
# 数据库地址
canal.instance.master.address=xx.xx.xx.xx:3306
# binlog起始位置,可以不填会从最开始找,如果知道的话填上能节省时间
canal.instance.master.journal.name= mysql-bin.000200
canal.instance.master.position= # 可不填
canal.instance.master.timestamp= #可不填
canal.instance.master.gtid= #可不填
# username/password
# 数据库用户名密码
canal.instance.dbUsername=root
canal.instance.dbPassword=root
# mq config
# mq对应的route key用来绑定exchange和queue
canal.mq.topic=canal-routing-key