关于canal:CanalAdmin搭建Canal-Server集群

37次阅读

共计 4754 个字符,预计需要花费 12 分钟才能阅读完成。

一、背景

应用 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,<br/>127.0.0.1:3181,<br/>127.0.0.1:4181 本地 zk 集群
mysql 127.0.0.1:3306 本地 mysql

三、实现步骤

1、下载 canal admin

 # 下载
 $ wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.admin-1.1.5.tar.gz
 # 解压, 解压会产生多个目录 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, rabbitMQ
canal.serverMode = tcp
# 此配置须要批改成 default-instance
canal.instance.global.spring.xml = classpath:spring/default-instance.xml
# 这个不须要指定,在 admin 上手动增加
canal.destinations = 

8、canal server 端配置

下载 canal server

 $ wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz

1、第一台 canal 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 config
canal.admin.manager = 127.0.0.1:8089
# admin 端口,canal 1.1.4 版本新增的能力,会在 canal-server 上提供远程管理操作,默认值 11110
canal.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 config
canal.admin.manager = 127.0.0.1:8089
# admin 端口,canal 1.1.4 版本新增的能力,会在 canal-server 上提供远程管理操作,默认值 11110
canal.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/deployper02
bin/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 的日志(<u>eg: logs/customer/customer.log</u>),只会看到一台机器上呈现了启动胜利的日志。

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

正文完
 0