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