03 Canal HA原理及安装

1. Canal HA原理

Canal一般用于实时同步数据场景,那么对于实时场景HA显得尤为重要,Canal支持HA搭建,canal的HA分为两部分,canal server和canal client分别有对应的HA实现。大数据中使用Canal同步数据一般同步到Kafka中,这里Kafka相当于是Canal Client,Kafka集群自带HA属性,所以这里我们 只关注Canal Server HA。Canal Server HA主要是为了减少对mysql dump的请求,不同server上的instance(不同server上的相同instance)要求同一时间只能有一个处于running,其他的处于standby状态(standby是instance的状态),Canal Server HA原理如下:
在这里插入图片描述
Canal HA 保证步骤如下:
(1) canal server要启动某个canal instance时都先向zookeeper_进行一次尝试启动判断。
(2) 创建zookeeper节点成功后,对应的canal server就启动对应的canal instance,没有创建成功的canal instance就会处于standby状态。
(3) 一旦zookeeper发现canal server A创建的instance节点消失后,立即通知其他的canal server再次进行步骤1的操作,重新选出一个canal server启动instance。
(4) canal client每次进行connect时,会首先向zookeeper询问当前是谁启动了canal instance,然后和其建立链接,一旦链接不可用,会重新尝试connect。

2. Canal HA 搭建

机器准备
运行Canal的机器:node3,node4
zookeeper地址:node3:2181,node4:2181,node5:2181
mysql地址:node2:3306

在node3,node4上单独部署配置Canal
将Canal安装包上传到node3,node4,并解压到“/software/canal”目录下,修改“/software/canal/conf”下的canal.properties文件,加上zookeeper配置

#指定zookeeper集群地址
canal.zkServers = node3:2181,node4:2181,node5:2181
#配置spring的xml配置文件
canal.instance.global.spring.xml = classpath:spring/default-instance.xml

#canal将数据写入Kafka,可配:tcp, kafka, RocketMQ,tcp就是使用canal代码接收
canal.serverMode = kafka
#配置canal写入Kafka地址
canal.mq.servers = node1:9092,node2:9092,node3:9092

进入“/software/canal/conf/example”目录,修改“instance.properties”文件:

#另外一台机器改成123457,保证slaveId不重复即可
canal.instance.mysql.slaveId=123456
#配置mysql master 节点及端口
canal.instance.master.address=node2:3306

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值