Spring Boot 整合 阿里开源中间件 Canal 实现数据增量同步(二)

love374
发布于 2022-7-11 11:47
浏览
0收藏

 

Canal服务端安装
服务端需要下载压缩包,下载地址:https://github.com/alibaba/canal/releases

目前最新的是v1.1.5,点击下载:

 Spring Boot 整合 阿里开源中间件 Canal 实现数据增量同步(二)-鸿蒙开发者社区
下载完成解压,目录如下:

 Spring Boot 整合 阿里开源中间件 Canal 实现数据增量同步(二)-鸿蒙开发者社区
本文使用Canal+RabbitMQ进行数据的同步,因此下面步骤完全按照这个base进行。

 

1、打开MySQL的binlog日志
修改MySQL的日志文件,my.cnf 配置如下:

[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复

 

2、设置MySQL的配置
需要设置服务端配置文件中的MySQL配置,这样Canal才能知道需要监听哪个库、哪个表的日志文件。

 

一个 Server 可以配置多个实例监听 ,Canal 功能默认自带的有个 example 实例,本篇就用 example 实例 。如果增加实例,复制 example 文件夹内容到同级目录下,然后在 canal.properties 指定添加实例的名称。

 

修改canal.deployer-1.1.5\conf\example\instance.properties配置文件

# url
canal.instance.master.address=127.0.0.1:3306
# username/password
canal.instance.dbUsername=root
canal.instance.dbPassword=root
# 监听的数据库
canal.instance.defaultDatabaseName=test

# 监听的表,可以指定,多个用逗号分割,这里正则是监听所有
canal.instance.filter.regex=.*\\..*


3、设置RabbitMQ的配置
服务端默认的传输方式是tcp,需要在配置文件中设置MQ的相关信息。

 

这里需要修改两处配置文件,如下;

 

1、canal.deployer-1.1.5\conf\canal.properties

这个配置文件主要是设置MQ相关的配置,比如URL,用户名、密码...

# 传输方式:tcp, kafka, rocketMQ, rabbitMQ
canal.serverMode = rabbitMQ
##################################################
######### 		    RabbitMQ	     #############
##################################################
rabbitmq.host = 127.0.0.1
rabbitmq.virtual.host =/
# exchange
rabbitmq.exchange =canal.exchange
# 用户名、密码
rabbitmq.username =guest
rabbitmq.password =guest
## 是否持久化
rabbitmq.deliveryMode = 2

 

2、canal.deployer-1.1.5\conf\example\instance.properties

这个文件设置MQ的路由KEY,这样才能路由到指定的队列中,如下:

canal.mq.topic=canal.routing.key

 

4、RabbitMQ新建exchange和Queue
在RabbitMQ中需要新建一个canal.exchange(必须和配置中的相同)的exchange和一个名称为 canal.queue(名称随意)的队列。

其中绑定的路由KEY为:canal.routing.key(必须和配置中的相同),如下图:

 Spring Boot 整合 阿里开源中间件 Canal 实现数据增量同步(二)-鸿蒙开发者社区
5、启动服务端
点击bin目录下的脚本,windows直接双击startup.bat,启动成功如下:

 Spring Boot 整合 阿里开源中间件 Canal 实现数据增量同步(二)-鸿蒙开发者社区
6、测试
在本地数据库test中的oauth_client_details插入一条数据,如下:

INSERT INTO `oauth_client_details` VALUES ('myjszl', 'res1', '$2a$10$F1tQdeb0SEMdtjlO8X/0wO6Gqybu6vPC/Xg8OmP9/TL1i4beXdK9W', 'all', 'password,refresh_token,authorization_code,client_credentials,implicit', 'http://www.baidu.com', NULL, 1000, 1000, NULL, 'false');

此时查看MQ中的canal.queue已经有了数据,如下:

Spring Boot 整合 阿里开源中间件 Canal 实现数据增量同步(二)-鸿蒙开发者社区

文章转自公众号:码猿技术专栏

已于2022-7-11 11:47:06修改
收藏
回复
举报
回复
    相关推荐