CanalAdmin搭建Canal Server集羣

1、背景

使用CanalAdmin來搭建一個canal集羣。mysql

2、機器狀況

服務名 機器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

3、實現步驟

一、下載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

二、配置canalAdmin

canal admin 配置

三、初始化canal admin數據庫

初始化canal admin數據庫

四、啓動canal admin

bin/startup.sh

五、登陸canal admin

image-20210603095458497

六、新建集羣

新建集羣

七、集羣配置

多個canal server同一個 canal 配置。(此處主要配置的是 canal.properties)git

canal 集羣配置

# 須要修改的配置項

# 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 =

八、canal server端配置

下載canal servergithub

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

一、第一臺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

二、第二臺canal server的配置

vim canal_local.propertiesspring

# 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

九、啓動canal server

bin/startup.sh local

canal server

本地啓動 canal server 後,發現已經註冊到 canal admin上了,這是由於canal.deployer裏的配置文件canal_local.properties裏的canal.admin.register.auto = true致使的。即上一步的配置。sql

十、在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_.*

十一、查看那個canal server是正在運行中的

激活中的canal server

4、注意事項

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

主配置路徑

二、本地的canal.deployer 使用的配置文件是canal_local.properties,建議寫最小的配置,其他的在admin上統一維護。api

三、本地canal.deployer的啓動採用 bin/startup.sh local即帶上 local參數。bash

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

四、集羣模式下,雖然有多個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>),只會看到一臺機器上出現了啓動成功的日誌。

五、數據消費成功後,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}}

六、canal client也支持HA,同時啓動2個同樣的客戶端,只有一個能夠消費到數據。

5、參考連接

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

二、https://github.com/alibaba/canal/wiki/AdminGuide

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

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

相關文章
相關標籤/搜索