大数据Canal(四):Canal HA原理及安装 报资讯
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时,没有此问题。
关键词:
-
大数据Canal(四):Canal HA原理及安装 报资讯
2023-03-14 -
成都饭店锦天地及其土地将于4月7日挂牌拍卖 起拍价约6.465亿元
2023-03-14 -
世界快资讯丨还有“螺蛳粉”樱花?大家沉默了
2023-03-14 -
储户能取出钱吗?美国又一家银行被关闭 国内硕士才被硅谷银行录取就失业了
2023-03-14 -
双江拉祜族佤族布朗族傣族自治县气象台发布冰雹预警信号橙色预警【Ⅱ级/严重】【2023-03-14】|当前快播
2023-03-14 -
吴奇隆刘诗诗离婚被实锤,女方意大利过生日,男方五互动
2023-03-13 -
窦性心律不齐的坏处_窦性心律不齐的危害
2023-03-13 -
杭州的健康码是什么颜色(杭州健康码是什么颜色)
2023-03-13 -
观焦点:帮办·说法|一楼业主砸承重墙改商铺对外出租,被邻居起诉后称买了10年才知道是住宅
2023-03-13 -
公安县:一年之计在于春 兴修水利正当时 全球消息
2023-03-13 -
青你2出道之夜_青你2出道名单? 全球新动态
2023-03-13 -
做实“水文章”全力保春灌 每日播报
2023-03-13 -
K.H.O.E.<破>Rising·Tide 高涨 #1 全球快资讯
2023-03-13 -
一则机构调研引爆板块!光刻胶龙头单周暴涨近七成,多公司披露AI新进展 视讯
2023-03-12 -
无花果热量高不高 无花果热量高吗|播资讯
2023-03-12 -
通讯!英超-哈兰德点射京多安造点 曼城1-0水晶宫距枪手2分
2023-03-12 -
长春新区新“增长极”加速崛起
2023-03-12 -
热讯:全民k歌APP如何删除作品
2023-03-12 -
03月11日18时四川乐山昨日累计报告阳性感染者确诊98例 怎么判断自己是否属于轻型感染者
2023-03-11 -
输入功率单位_输入功率
2023-03-11 -
全球热门:220伏6安是多少瓦_220伏等于多少瓦
2023-03-11 -
香港中文大学(深圳)管理学理学硕士 MBM 线下咨询开放日 天天微头条
2023-03-11 -
博汇科技:3月10日融资买入945.88万元,融资融券余额7842.28万元 世界快看点
2023-03-11 -
每日时讯!广州发电机
2023-03-11 -
微速讯:跑赢大盘是什么意思
2023-03-11 -
每日速看!深圳首个不限购区域诞生,业内称“无官方文件,但外地人早已不限购”
2023-03-11 -
速递!csgo汰换合同机制_csgo汰换合同公式
2023-03-10 -
阜阳这两个路段封闭施工 持续60天 新动态
2023-03-10 -
全球短讯!“价格战”最新进展:南北大众同日入局 购一汽丰田bZ4X送威驰
2023-03-10 -
日本汽车工业协会 快讯
2023-03-10
-
守住网络直播的伦理底线
2021-12-16 -
石窟寺文化需要基于保护的“新开发”
2021-12-16 -
电影工作者不能远离生活
2021-12-16 -
提升隧道安全管控能力 智慧高速让司乘安心
2021-12-16 -
人民财评:提升消费体验,服务同样重要
2021-12-16 -
卫冕?突破?旗手?——武大靖留给北京冬奥会三大悬念
2021-12-16 -
新能源车险专属条款出台“三电”系统、起火燃烧等都可保
2021-12-16 -
美术作品中的党史 | 第97集《窗外》
2021-12-16 -
基金销售业务违规!浦发银行厦门分行等被厦门证监局责令改正
2021-12-16 -
保持稳定发展有支撑——从11月“成绩单”看中国经济走势
2021-12-16