CanalAdmin搭建Canal Server集群

网友投稿 296 2022-09-26

CanalAdmin搭建Canal Server集群

CanalAdmin搭建Canal Server集群

​​一、背景​​​​二、机器情况​​​​三、实现步骤​​

​​1、下载canal admin​​​​2、配置canalAdmin​​​​3、初始化canal admin数据库​​​​4、启动canal admin​​​​5、登录canal admin​​​​6、新建集群​​​​7、集群配置​​​​8、canal server端配置​​

​​1、第一台canal server的配置​​​​2、第二台canal server的配置​​

​​9、启动canal server​​​​10、在admin上配置一个instance​​​​11、查看那个canal server是正在运行中的​​

​​四、注意事项​​​​五、参考链接​​

一、背景

使用​​CanalAdmin​​来搭建一个canal集群。

二、机器情况

服务名

机器ip

备注

canal admin

127.0.0.1:8089

canal admin 机器

canal server 1

127.0.0.1:11111

本地canal server机器

canal server 2

127.0.0.1:11113

本地canal server机器

zk

127.0.0.1:2181,

127.0.0.1:3181,

127.0.0.1:4181

本地zk集群

mysql

127.0.0.1:3306

本地mysql

三、实现步骤

1、下载canal admin

# 下载 $ wget # 解压,解压会产生多个目录 bin、conf等,最好新建一个文件夹,然后在解压 tar -zxvf canal.admin-1.1.5.tar.gz

2、配置canalAdmin

3、初始化canal admin数据库

4、启动canal admin

bin/startup.sh

5、登录canal admin

6、新建集群

7、集群配置

多个canal server同一个 canal 配置。(此处主要配置的是 canal.properties)

# 需要修改的配置项# zk 的地址需要指定canal.zkServers = 127.0.0.1:2181,127.0.0.1:3181,127.0.0.1:4181# tcp, kafka, rocketMQ, rabbitMQcanal.serverMode = tcp# 此配置需要修改成 default-instancecanal.instance.global.spring.xml = classpath:spring/default-instance.xml# 这个不需要指定,在admin上手动添加canal.destinations =

8、canal server端配置

下载canal server

$ wget server的配置

vim canal_local.properties

# register ip# canal server注册到外部zookeeper、admin的ip信息canal.register.ip = 127.0.0.1# canal server 的端口canal.port = 11111# canal server 的metrics 端口canal.metrics.pull.port = 11112# canal admin configcanal.admin.manager = 127.0.0.1:8089# admin端口,canal 1.1.4版本新增的能力,会在canal-server上提供远程管理操作,默认值11110canal.admin.port = 11110# canal admin 应用下 canal.adminUser 的值canal.admin.user = admin# canal admin 应用下 canal.adminPasswd 下的值,但是需要通过 select password('${canal.adminPasswd}')获取,需要去掉前面的*号canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441# admin auto register# 是否开启自动注册模式canal.admin.register.auto = true# 可以指定默认注册的集群名,如果不指定,默认注册为单机模式,集群的名字需要在 canal admin上存在canal.admin.register.cluster = canal_local# 注册到 canal admin 上server的名字,唯一有意义即可canal.admin.register.name = canal_server_01

2、第二台canal server的配置

vim canal_local.properties

# register ip# canal server注册到外部zookeeper、admin的ip信息canal.register.ip = 10.223.40.76# canal server 的端口canal.port = 11113# canal server 的metrics 端口canal.metrics.pull.port = 11114# canal admin configcanal.admin.manager = 127.0.0.1:8089# admin端口,canal 1.1.4版本新增的能力,会在canal-server上提供远程管理操作,默认值11110canal.admin.port = 11110# canal admin 应用下 canal.adminUser 的值canal.admin.user = admin# canal admin 应用下 canal.adminPasswd 下的值,但是需要通过 select password('${canal.adminPasswd}')获取,需要去掉前面的*号canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441# admin auto register# 是否开启自动注册模式canal.admin.register.auto = true# 可以指定默认注册的集群名,如果不指定,默认注册为单机模式,集群的名字需要在 canal admin上存在canal.admin.register.cluster = canal_local# 注册到 canal admin 上server的名字,唯一有意义即可canal.admin.register.name = canal_server_01

9、启动canal server

bin/startup.sh local

本地启动 canal server 后,发现已经注册到 canal admin上了,这是因为​​canal.deployer​​​里的配置文件​​canal_local.properties​​​里的​​canal.admin.register.auto = true​​导致的。即上一步的配置。

10、在admin上配置一个instance

可以使用 admin 上的 ​​载入模板​​来实现。

# mysql集群配置中的serverId概念,需要保证和当前mysql集群中id唯一 (v1.1.x版本之后canal会自动生成,不需要手工指定)# canal.instance.mysql.slaveId=0# mysql主库链接地址canal.instance.master.address=127.0.0.1:3306# mysql主库链接时起始的binlog文件canal.instance.master.journal.name=# mysql主库链接时起始的binlog偏移量canal.instance.master.position=# mysql主库链接时起始的binlog的时间戳canal.instance.master.timestamp=# mysql数据库帐号(此处的用户名和密码为 安装canal#mysql配置相关#创建canal用户 这一步创建的用户名和密码)canal.instance.dbUsername=canal# mysql数据库密码canal.instance.dbPassword=canal# mysql 数据解析编码canal.instance.connectionCharset = UTF-8# mysql 数据解析关注的表,Perl正则表达式,即我们需要关注那些库和那些表的binlog数据,也可以在canal client api中手动覆盖canal.instance.filter.regex=.*\\..*# table black regex# mysql 数据解析表的黑名单,表达式规则见白名单的规则canal.instance.filter.black.regex=mysql\\.slave_.*

11、查看那个canal server是正在运行中的

四、注意事项

1、集群模式下,​​canal.properties​​​中的​​canal.instance.global.spring.xml​​​ 的值必须是 ​​classpath:spring/default-instance.xml​​。主配置下,也需要指定zk的地址,不需要指定canal.destinations的值。

2、本地的canal.deployer 使用的配置文件是​​canal_local.properties​​,建议写最小的配置,其余的在admin上统一维护。

3、本地canal.deployer的启动采用 ​​bin/startup.sh local​​​即带上 ​​local​​参数。

cd /Users/huan/soft/canal/ha-deployer/deployper02bin/startup.sh local

4、集群模式下,虽然有多个​​canal server​​​,但是只有一个是处于​​active​​​状态,客户端连接的​​canal server​​是自动连接active状态的canal server。

可以在​​zookeeper​​上通过如下命令查看。

get /otter/canal/destinations/{instance的名字}/running{"active":true,"address":"127.0.0.1:11111"}

也可以在多个canal server下的logs目录下,看instance的日志(eg: logs/customer/customer.log),只会看到一台机器上出现了启动成功的日志。

5、数据消费成功后,canal server会在zookeeper中记录下当前最后一次消费成功的binlog位点. (下次你重启client时,会从这最后一个位点继续进行消费)

get /otter/canal/destinations/{instance的名字}/1001/cursor{"@type":"com.alibaba.otter.canal.protocol.position.LogPosition","identity":{"slaveId":-1,"sourceAddress":{"address":"localhost","port":3306}},"postion":{"gtid":"","included":false,"journalName":"mysql-bin.000016","position":123620,"serverId":1,"timestamp":1622699246000}}

6、canal client也支持HA,同时启动2个一样的客户端,只有一个可以消费到数据。

五、参考链接

1、​​https://github.com/alibaba/canal/wiki/Canal-Admin-QuickStart​​

2、​​https://github.com/alibaba/canal/wiki/AdminGuide​​

3、​​https://github.com/alibaba/canal/wiki/Canal-Admin-Guide​​

4、​​https://github.com/alibaba/canal/wiki/Canal-Admin-ServerGuide​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:BEIJING、ARCFOX产品同亮相,重整后的北汽加速向上!
下一篇:seata代码控制回滚和临时挂起分布式事物
相关文章

 发表评论

暂时没有评论,来抢沙发吧~