Canal HA原理及安装
一、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 保证步骤如下:
canal server要启动某个canal instance时都先向zookeeper_进行一次尝试启动判断。创建zookeeper节点成功后,对应的canal server就启动对应的canal instance,没有创建成功的canal instance就会处于standby状态。一旦zookeeper发现canal server A创建的instance节点消失后,立即通知其他的canal server再次进行步骤1的操作,重新选出一个canal server启动instance。canal client每次进行connect时,会首先向zookeeper询问当前是谁启动了canal instance,然后和其建立链接,一旦链接不可用,会重新尝试connect。二、Canal HA 搭建
1、机器准备
运行Canal的机器:node3,node4
(资料图片仅供参考)
zookeeper地址:node3:2181,node4:2181,node5:2181
mysql地址:node2:3306
2、在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#配置连接mysql的用户名和密码,就是前面复制权限的用户名和密码canal.instance.dbUsername=canalcanal.instance.dbPassword=canal#配置Canal将数据导入到Kafka topiccanal.mq.topic=canal_topic注意:两台机器上的instance目录的名字需要保证完全一致,HA模式是依赖于instance name进行管理,同时必须都选择default-instance.xml配置,此配置中才有关于zookeeper的设置信息。
3、启动两台机器的Canal
#在node3上启动Canal[root@node3 ~]# cd /software/canal/bin[root@node3 bin]# ./startup.sh#在node4上启动Canal[root@node4 ~]# cd /software/canal/bin[root@node4 bin]# ./startup.sh启动完成后,可以查看zookeeper中对应的路径信息:
三、Canal HA 测试
默认搭建好的Canal HA 后可以通过查看Zookeeper中的“/otter/canal/destinations/examples/running”来查看Active的Canal节点:
测试Canal HA 如下:
1、向Mysql中“testdb.person”表中写入数据
mysql> insert into person values (4,"s1",21),(5,"s2",22),(6,"s3",23);可以观察到Kafka canal_topic中有监控到的数据如下:
{"data":[{"id":"4","name":"s1","age":"21"},{"id":"5","name":"s2","age":"22"},{"id":"6","name":"s3","age":"23"}],"database":"testdb","es":1618849974000,"id":2,"isDdl":false,"mysqlType":{"id":"int","name":"varchar(255)","age":"int"},"old":null,"pkNames":null,"sql":"","sqlType":{"id":4,"name":12,"age":4},"table":"person","ts":1618849975203,"type":"INSERT"}2、关闭active Canal Server节点,继续向Mysql表中写入数据
关闭node3 Canal Server:
[root@node3 ~]# cd /software/canal/bin[root@node3 bin]# ./stop.sh查看zookeeper “/otter/canal/destinations/examples/running”路径Active的Canal节点:
继续向MySQL中“testdb.person”表中写入数据:
mysql> insert into person values (7,"x1",24),(8,"x2",25),(9,"x3",26);可以观察写入到Kafka “canal_topic”中数据如下:
{"data":[{"id":"7","name":"x1","age":"24"},{"id":"8","name":"x2","age":"25"},{"id":"9","name":"x3","age":"26"}],"database":"testdb","es":1618850233000,"id":2,"isDdl":false,"mysqlType":{"id":"int","name":"varchar(255)","age":"int"},"old":null,"pkNames":null,"sql":"","sqlType":{"id":4,"name":12,"age":4},"table":"person","ts":1618850234136,"type":"INSERT"}经过以上测试,Canal HA 生效。
注意:经过测试Canal HA 在使用zookeeper存储binlog position时,当有一个Canal Server重新启动并切换成Active节点时,每次都会重复读取最后一条数据。使用非HA 本地存储binlog position时,没有此问题。
上一篇:全球热消息:不属于对称加密算法的有_不属于对称加密算法
下一篇:最后一页
X 关闭
-
和讯个股快报:2023年03月17日 诺邦股份(603238)股价5分钟涨速大于1%
受短期资金关注,股价快速拉升,5分钟内上涨大于1%以上;资金流向数据,主力资金净流入312 88万元,占总成交额24%,大单净流
-
我的种业故事|一个“宝”,带来“新奔头”
在天津市七里海河蟹育苗基地里,年过花甲的养蟹能手杜乃合,又在为新一年的蟹种忙碌着。宁河素有“鱼米之乡”的美誉,作为“国家地理标志产品
-
天道酬勤下一句可以接什么 天道酬勤下一句
今天来聊聊关于天道酬勤下一句可以接什么,天道酬勤下一句的文章,现在就为大家来简单介绍下天道酬勤下一句可以接什么,天道酬勤
-
环球讯息:安全专家进行不情愿的现实世界碰撞测试
公路安全保险协会(IIHS)是许多汽车专家一致认为在美国进行最严格测试的车辆安全组织几十年来,AdrianLun
-
3月16日基金净值:中庚价值先锋股票最新净值1.2035,跌1.19% 环球今热点
3月16日,中庚价值先锋股票最新单位净值为1 2035元,累计净值为1 2035元,较前一交易日下跌1 19%。历史数据显示该基金近1个月下跌0 17%,近3个
-
国乒2混双冲4强!孙颖莎王楚钦遇强敌,樊振东王曼昱战张本、早田 信息
北京时间3月14日,2023WTT新加坡大满贯混双已经来到了四强争夺战,随着名次的提升竞争也明显强劲了很多。其中国乒的2对混双都遇到了强敌,孙颖
-
【天天新要闻】【新时代 新征程 新伟业】全县春季森林草原防灭火工作会议和县人民政府消防安全委员会联席会议召开
【新时代新征程新伟业】全县春季森林草原防灭火工作会议和县人民政府消防安全委员会联席会议召开
-
【论坛体】崽崽和她那没用的男人们(综艺预热) 世界快播
all向,一切为了苏而苏ooc有,注意避雷请家人们不要吝啬你们的评论QAQ1L奶奶啊!你等的那个综艺他终于出来了!!!你磕的初恋cp他们在赛场外又
-
微信怎么拍一拍别人放烟花_微信怎么拍一拍别人|全球头条
1、要想拍其他好友,首先自己的微信版本看一下是不是最新的。2、2、只要版本最新的话,打开想要拍的好友的界面,双击他的头像
-
形容喜事接连不断的词语_形容喜事连连的句子 每日消息
1、雁引愁心去,山衔好月来。2、见唐·李白《与夏十二登岳阳楼》。3、山:原诗中指洞庭湖中的君山。4、这两句大意是:鸿雁

