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的机器:node3,node4
(资料图片仅供参考)
zookeeper地址:node3:2181,node4:2181,node5:2181
mysql地址:node2:3306
将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的设置信息。
#在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 后可以通过查看Zookeeper中的“/otter/canal/destinations/examples/running”来查看Active的Canal节点:
测试Canal HA 如下:
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"}
关闭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时,没有此问题。
标签:
Canal一般用于实时同步数据场景,那么对于实时场景HA显得尤为重要,...
3月17日,央行宣布决定于2023年3月27日降低金融机构存款准备金率0 ...
根据国家发改委消息,新一轮成品油调价窗口将于今天(3月17日)24时...
00后护士兼职摆摊两周收入1万5后辞职开店?当事人:辞职后才创业,...
1、山东黄金矿业(沂南)有限公司于2008年08月05日成立。2、法定代表...
当市场还停留在高瓴着急清仓良品铺子的时候,良品铺子已悄悄收获大...
1、《英国经典抒情诗选译详注》是2020年西南师范大学出版社出版的图...
【光明时评】作者:李雯(人工智能研究学者)随着现代科技的快速发...
1、广西机电工业学校创办于1958年,前身为广西地质学校,广西机电技...
1、你可以参考这个,我认为这个数据不错,不算胖,BMI指数(体重÷...
挖贝网3月16日消息,北交所拟上市企业中裕科技(871694)近日获得证...
美股异动|黄金概念股盘前走强现货黄金继续反弹触及六周新高:黄金概...
1、火箭少女101。2、中国内地流行乐女子演唱组合。3、由孟美岐、吴...
3月16日,在第十届四川国际健康产业博览会暨第二届成渝地区双城经济...
2023年哇嘎画时代网站项目商业计划书是遵循国际惯例通用的标准文本...
阳春三月,万物复苏,又到银河拱桥绝佳观赏和拍摄季。顾名思义,“...
三门峡市气象台发布大雾黄色预警【III级 较重】
3月15日北京城市规划板块较上一交易日上涨1 09%,韩建河山领涨。当...
1、轻击伤害较低,不推荐使用。2、重击延迟时间短,出手速度快,短...
人民网哈尔滨3月15日电(韩婷澎)3月15日,黑龙江省森林草原防灭火...
3月10日,国网福建省电力有限公司本部及所属8家直属单位委托国网综...
随着人们保险意识不断增强,越来越多人会为自己和家人购买保险。选...
解答:1、石墨烯是目前自然界最薄最强的材料,强度比钢高200倍。同...
3月15日电据俄新社当地时间15日报道,俄罗斯别尔哥罗德州州长格拉德...
澳大利亚越来越朝着成为“美国在亚太地区代理人”的方向发展,多位...
1、春雨像绢丝一样,又轻又细,好像是一种湿漉漉的烟雾,没有形状,...
1、电视剧《下一站是幸福》最后大结局中元宋和贺繁星复合幸福的在一...
海口公墓清明祭扫预约流程预约渠道:海口民政微信公众号,海易办APP...
长沙高校毕业生申请公租房条件需要满足本人及家庭在本市城区范围内...
中国消费者报讯(记者聂国春)中国保险业协会党委委员、副秘书长马晓...