canal平台化部署方案
什么是canal
canal主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,基于日志增量订阅和消费的业务包括:
ü 数据库镜像
ü 数据库实时备份
ü 索引构建和实时维护(拆分异构索引、倒排索引等)
ü 业务 cache 刷新
ü 带业务逻辑的增量数据处理
canal的工作原理
ü canal模拟MySQL slave的交互协议,伪装自己为 MySQL slave,向 MySQL master 发送dump 协议
ü MySQL master收到dump请求,开始推送binary log 给slave(即canal)
ü canal解析binary log对象(原始为 byte 流)
canal部署架构图
canal-admin,设计上是为canal提供整体配置管理、节点运维等面向运维的功能,提供相对友好的WebUI操作界面,方便更多用户快速和安全的操作。
canal-server,与mysql交互,拉取binlog日志数据,完成数据解析、加工、分发等工作
zookeeper,canal server 集群的高可用(HA)依赖Zookeeper的特性实现,利用zookeeper的抢占EPHEMERAL节点的方式进行控制,同一时间只有一个canal server实例与mysql binlog交互。
组件关系说明:
Zookeeper集群:注册Canal server节点信息
Mysql:存储canal的配置信息
Promethus:拉取canal server的监控指标数据
Grafana:展示canal监控数据
canal 部署环境变量
canal admin部署
镜像:harbor.yundasys.com/base/canal/canal-admin:1.1.5
环境变量:
环境变量 |
说明 |
spring.datasource.address |
Admin连接的mysql地址,IP + port |
spring.datasource.password |
Mysql 数据库密码 |
spring.datasource.username |
Mysql数据库用户名 |
canal.adminPasswd |
设置canal server连接的密码 |
canal.adminUser |
设置canal server 连接的用户 |
canal server部署
镜像:harbor.yundasys.com/base/canal/canal-server:1.1.5
环境变量:
环境变量 |
说明 |
canal.zkServers |
Canal server节点注册的zk集群 |
canal.register.ip |
当前节点运行的IP,用于在admin显示 |
canal.port |
Canal服务暴露的端口,用户客户端连接 |
canal.metrics.pull.port |
Canal服务暴露监控数据拉取端口,用来与promethus进行交互 |
canal.admin.port |
Canal admin连接server的端口,实现对server的管理 |
canal.admin.user |
Canal server连接admin的用户名 |
canal.admin.passwd |
Canal server连接admin的密码 |
canal.admin.manager |
Canal server 连接 admin的 地址 |
canal.admin.register.auto |
开启自动注册,server节点启动后自动在admin中显示 |
canal.admin.register.cluster |
该canal server节点所属的server集群名称 |
canal server集群扩容
目前canal server集群实现K8s部署方式,可以无感知扩展pod,实现节点稳定性
业务方申请流程
待完善
canal instance命令规则
instance + “_” + 团号 + “_” + 业务代号
如:instance_x05_dsync