4.2. 创建 server
所属集群:选择刚才添加的 “集群名称”
server 名称: server_1、server_2、server_3 依次类推
server ip:server 的 ip 地址
admin 端口:canal server 与 canal admin 的通信端口,非生产环境从 21110 开始,生产从 12110 开始,每次加10
tcp 端口:canal server 工作端口,非生产环境从 21111 开始,生产从 12111 开始,每次加10
metric 端口:canal server 与 prometheus 监控的通信端口,非生产环境从 21112 开始,生产从 12112 开始,每次加10
4.3. 修改 canal server 配置
集群模式下,因为 一套 canal server 包含了多个 host,所以为了保证配置的一直, canal server 的配置需要从集群管理处操作。
依次点击 “集群管理” ➡️ “操作” ➡️ “主配置”,修改 canal server 的 canal.properties 配置信息。
点击 “载入模板”,加载配置模板内容,修改内容类似 canal server node 中的 canal.properties 配置
# 第8、9行修改端口 canal.port = 21121 canal.metrics.pull.port = 21122 # 第11、12行取消注释 canal.user = canal canal.passwd = E3619321C1A937C46A0D8BD1DAC39F93B27D4458 # 第15行取消注释,修改 admin server 地址 canal.admin.manager = 10.179.251.164:8089 # 第16行修改端口 canal.admin.port = 21120 # 第20行添加 zk server canal.zkServers = 10.179.250.221:2181,10.179.250.150,10.179.251.161 # 第60行修改为 true canal.instance.filter.table.error = true # 第79行修改为 false canal.instance.tsdb.enable = false # 第92行添加 instance name canal.destinations = c_test_saber_warehouse # 第106行注释 #canal.instance.global.spring.xml = classpath:spring/file-instance.xml # 第107行取消注释 canal.instance.global.spring.xml = classpath:spring/default-instance.xml # 保存 |
4.4. 创建 canal instance
依次点击 “instance 管理” ➡️ “选择 canal server 集群” ➡️ “输入 instance 名称(与 destination 一致)” ➡️ “载入模板”
加载配置模板内容,修改内容类似 canal server node 中的 instance.properties 配置
# 第9行修改源数据库地址:端口 canal.instance.master.address=10.179.250.150:3306 # 第33行修改为源数据库抽数用户,权限为 replication client、replication slave、指定库的 select 权限 canal.instance.dbUsername=u_test_dhr_org_srv # 第34行修改为源数据库抽数用户的密码 canal.instance.dbPassword=xxxxxxxxxxx # 第41行修改为要抽取的数据库(白名单) canal.instance.filter.regex=dhr-organization-service\\..* # 第50行修改为instance name,要与上级目录名、canal.properties 中的 intance name 一致 canal.mq.topic=c_test_dhr_org_srv # 保存 |
过滤规则
全库全表 canal.instance.filter.regex
.*\\..*
.*\\..*
指定库全表
canal.instance.filter.regex
库名\..*
test\..*
单表
canal.instance.filter.regex
库名.表名 test.user
多规则组合使用
canal.instance.filter.regex
库名1\..*,库名2.表名1,库名3.表名2 (逗号分隔)
test\..*,test2.user1,test3.user2 (逗号分隔)
5. 启动 canal server 集群操作顺序
如下操作顺序包含了 canal server 集群所有涉及的组件的启动顺序
- 启动 zk server cluster
- 启动 zk ui web 服务
- 启动 canal admin web 服务
- 依次登陆各个 canal server (部署 canal deploye 包的服务器1、2、3),执行 startup.sh,启动 canal server 进程
- 切换到 canal admin web 中,依次点击 “server 管理” ➡️ “操作” ➡️ “启动”,启动 server1、 server2、server3,启动成功后,页面的 “状态” 会变成 “启动”
- 切换到 “instance 管理”,观察 “状态” 为 “启动”,再点击 “操作” ➡️ “日志”,查看内容,如果有如下输出,说明canal server 成功连到了源数据库
2020-12-22 18:30:02.099 [destination = c_test_dhr_org_srv_prev , address = /10.179.250.150:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> find start position successfully, EntryPosition[included=false,journalName=mysql-bin.000252,position=599429086,serverId=1403306,gtid=,timestamp=1608632940000] cost : 1ms , the next step is binlog dump
- 检查 zk ui,查看 /otter/canal/destination/c_stage_dhr_entry 目录的 running 字典中 acive 为 true,address 与启动的server匹配,表示正常
- 通知开发启动 client 消费 binlog
- client 启动后,再次登陆 zk ui 确认 client 在成功消费,如图所示,/otter/canal/destination/c_stage_dhr_entry/1001/ 目录中 cursor 字典中包含 binlog
- 信息,表示消费正常