1、Canal简介
使用阿里的开源工具canal,实现监听MySQL数据库变化,并推送到:Kafka、RabbitMQ、ElasticSeach或其他中间平台。
github地址:
https://github.com/alibaba/canal
基于 v1.1.5版本 下载安装:
# 下载canal 服务
wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz
#下载canal admin
wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.admin-1.1.5.tar.gz
#下载canal适配器 可以将mysql表、数据的变化同步到kafka、es等
https://github.com/alibaba/canal/releases
wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.adapter-1.1.5.tar.gz
安装canal 服务
下载安装
wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz
#解压即可完成安装
修改配置
主要修改以下配置
vi conf/canal.properties
# tcp bind ip
canal.ip = 172.1.15.19 # 程序所在服务器内网ip
# register ip to zookeeper
canal.register.ip = 172.1.15.19 # 程序所在服务器内网ip
# tcp, kafka, rocketMQ, rabbitMQ
canal.serverMode = rabbitMQ # 内置推送目标,这里是推送到rabbitMQ
#配置rabbitmq
rabbitmq.host = 172.1.15.15
rabbitmq.port = 5672
rabbitmq.virtual.host = /dev
rabbitmq.exchange = canal_exchange
rabbitmq.username = user
rabbitmq.password = password
rabbitmq.deliveryMode =
配置Instance
#目录中的example即为Instance名
vi conf/example/instance.properties
#创建不同的目录名,在目录下配置instance.properties,可以实现多个Instance
vi conf/example2/instance.properties
#修改配置:
#slaveId 不能与master的slaveid相同
canal.instance.mysql.slaveId=2013
# 同步的主数据库,binlog文件以及同步点
canal.instance.master.address=172.1.151.16:3306
canal.instance.master.journal.name=mysql-bin.005449
canal.instance.master.position=465046782
canal.instance.master.timestamp=
canal.instance.master.gtid=
#mysql主服务的访问账号
canal.instance.dbUsername=user
canal.instance.dbPassword=password
#库表过滤设置
canal.instance.filter.regex=.*\\..*
# table black regex
canal.instance.filter.black.regex=mysql\\.slave_.*
运行canal 服务
./bin/startup.sh #启动
./bin/stop.sh #停止
安装canal admin
下载安装
#下载canal admin
wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.admin-1.1.5.tar.gz
#解压即可完成安装
创建canal admin数据库,并导入sql
ddl sql文件在:conf/canal_manager.sql
修改配置:
vi conf/application.yml
spring.datasource:
address: 172.1.15.16:3306
database: canal_manager
username: canal
password: canal
运行canal admin 服务
./bin/startup.sh #启动
./bin/stop.sh #停止
用canal admin 管理
在实践中发现,canal admin 主要用于管理已经在canal deployer中配置好的Server和Instance。
在canal admin 中修改Server和Instance的配置properties文件,并不会更新磁盘中对应的文件。
所以,先在服务器上完成Server和Instance的配置,在canal admin中主要进行Server和Instance的启动、停止的操作。
增加Server
如果是“启动”状态,表明canal server运行正常
增加Instance
增加Instance的关键是,保存是Instance的名称,必须与服务器上的实例目录名称相同
实例列表中,实例为“启动”状态则表明运行正常
MySQL库、表变化同步到RabbitMQ
上述canal服务运行正常,那么MySQL库、表变化会被同步到rabbitmq.exchange中。
rabbitmq.exchange = canal_exchange
在rabbitMQ的管理后台能够看到数据同步的趋势图:
将exchange与队列绑定,则队列中就能收到数据了。
打完收工。
版权声明:本文为u013545439原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。