一 介绍
canal-server架构
说明
Canal的Server端本身根据配置启动了很多个Instance对象,所谓的Instance对象就是模拟的数据库slave和master进行连接,换句话说就是假设canal同时成为N个数据库的slave,那么就会有N个Instance实例。
每个Instance内部包含5个组件(图中只包含了4个,估计另外一个没有实现的原因),分别是eventParser、eventSink、eventStore、metaManager、alarmHandler。其中同步的数据流是按照eventParser->eventSink->eventStore进行传输的,当然eventStore是重点因为它存储了所有从mysql同步过来的数据(数据结构很有意思,后面会介绍),metaManager主要是和zookeeper打交道的,用于记录位点的元信息。
canal的HA机制是在instance这个粒度上的。
此次介绍摘自https://www.jianshu.com/p/fea54a984031
二 实验环境
三 实验步骤
3.1 安装canal server
在规划的两台服务器(192.168.144.206/207)上安装canal server。
可以参考https://blog.csdn.net/yabingshi_tech/article/details/109513151
/*
也可点击这里下载canal server shell安装脚本进行安装(适用于CentOS系统)。
安装手册:
一 准备工作
① 创建目录
cd /opt && mkdir canal && cd canal
② 上传安装脚本install_canal.sh及canal安装包canal.deployer-1.1.4.tar.gz;
修改安装脚本里的MasterHost值为源端MariaDB主库ip,修改CanalHost值为canal服务器ip。
③ 上传jdk安装包jdk-8u92-linux-x64.tar.gz至/usr/local下
④ 上传名称为'mysql'的文件至服务器的/usr/bin目录下,并为mysql文件赋予执行权限:chmod +x mysql
二 安装步骤
cd /opt/canal
sh install_canal.sh
查看脚本输出是否有报错。
检查canal.log是否有输出the canal server is running now
检查example.log是否有输出start successful
*/
注意:两台canal server上的server-id必须不同,且不能和主库的server-id相同。
3.2 安装zookeeper
在备用canal server服务器192.168.144.207上安装zookeeper,请参考:
https://blog.csdn.net/yabingshi_tech/article/details/109645577
3.4 修改配置文件,加上zookeeper配置
在两台canal server服务器上操作:
cd /usr/local/canal/conf
vi canal.properties
canal.zkServers = 192.168.144.207:2181
canal.instance.global.spring.xml = classpath:spring/default-instance.xml
注意: 两台机器上的instance目录的名字需要保证完全一致,HA模式是依赖于instance name进行管理,同时必须都选择default-instance.xml配置
3.5 重启canal server
sh /usr/local/canal/bin/stop.sh
sh /usr/local/canal/bin/startup.sh
#检查日志
less /usr/local/canal/logs/canal/canal.log
[main] INFO com.alibaba.otter.canal.deployer.CanalStarter - ## the canal server is running now ......
3.6 验证HA
#连接zookeeper, 查询当前工作节点
/usr/local/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
[zk: 127.0.0.1:2181(CONNECTED) 0] get /otter/canal/destinations/example/running
{"active":true,"address":"192.168.144.206:11111"}
……
#关闭当前运行的canal server
[root@localhost conf]# sh /usr/local/canal/bin/stop.sh
localhost.localdomain: stopping canal 28109 ...
Oook! cost:1
#查看当前运行节点
说明现在备份canal server在提供服务。
--本篇文章主要参考自:https://github.com/alibaba/canal/wiki/AdminGuide的‘HA模式配置’部分。