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原理及安装
- 来自天堂的魔鬼邓紫棋mp3(来自天堂的魔
- 留坝县委宣传部:“微党课人人讲”激发党
- 农业农村部下发通知,确保全年水产品安全
- 【全球报资讯】信达地产20.2亿元公司债利
- 驻韩国使馆提醒中国公民警惕电信诈骗-视
- 【环球快播报】广州异地办理港澳通行证需
- 今天最新消息 2022台湾大学生江苏实习就
- 小储户涌向新加坡储蓄债券
- 某某语录短句_某某语录_天天微头条
- 每日快播:灵感源自生活?《黑暗荣耀》导
- 宿迁联盛(603065.SH):网上发行最终中
- 2021年劳斯莱斯幻影首次驾驶评测
- 剖腹产用止痛泵有副作用吗_止痛泵有副作
- 幼儿手工包包的制作方法_手工包包的制作
- 掌中之物剧情介绍_这部剧讲述的是什么故事
- 山东通史·魏晋南北朝卷 全球热门
- 热文:多家上市银行预期信贷投放量增长
- 世界今日讯!dnf四开起号教程_dnf16开最
- 实时焦点:【鸣神组】春 潮
- 材料出入库登记表图片-材料出入库登记表
- 天天观热点:耳机lr哪个是左哪个是右边的
- 今日nvi2.dll时出现问题(关于xvidcore2.
- 天天滚动:公交车着火怎么办_这些逃生方法
- hf是什么意思网络用语_hf是什么意思-全球
- 前女友再度起诉老虎伍兹 要求解除二人保
- 世界热推荐:活动预告|3月12日烟台,快
- 【天天新视野】深山合作取消个人商品住房
- 中交一航局三公司好进吗_中交一航局三公司
- 本周钼市呈下跌态势,成交量有所增加
- 安法护航 巾帼有力量
- 通讯!小学毕业歌曲100首_小学毕业歌曲
- 溴的四氯化碳溶液是什么意思_溴的四氯化
- 3月10日,猪价、蛋价“大变脸”,豆粕行
- 【天天时快讯】遂平一高录取分数线2021中
- 詹姆斯生涯的十大纪录!哪一个最可能被打
- 手工博主用微缩模型完美复刻“高启强老家
- 陈光标破产了_陈光标破产
- 武汉会计继续教育入口登录_武汉会计继续
- 焦点观察:成都“汉服爷爷”:寻找更多中
- 今天最新消息 印外长称只有中印走到一起
- 抗氧化导电膏 环球观速讯
- 天天即时看!内外壁热镀锌钢管与普通镀锌
- 煮鸡蛋冷水下锅还是热水_正确的煮鸡蛋方
- 全球通讯!日本公布H3火箭发射失败初步调
- 长高电新获5家机构调研:长高电新科技股
- 浙江自驾游去哪好玩_人少/景美/小众的海
- 3月8日基金净值:易方达核心优势股票A最
- 合成表情是什么意思_合成表
- 【环球播资讯】浙矿股份(300837.SZ):进
- 身高不足160cm的小个子,这个夏天就学她
- cx是什么意思
- 水解|全球快资讯
- 吉利联合中科创达共设汽车软件科技新公司
- 活螃蟹怎样保存? 世界头条
- 天天快资讯丨西斯廷教堂
- 泰国电动车市场被国产车包了!2月销量哪
- 韩国电视剧听见你的声音插曲是什么
- 当前热点-三方人才培养协议合同范本(合集
- 广州中华广场
- 材料出入库登记表图片-材料出入库登记表
- 天天观热点:耳机lr哪个是左哪个是右边的
- 今日nvi2.dll时出现问题(关于xvidcore2.
- 天天滚动:公交车着火怎么办_这些逃生方法
- hf是什么意思网络用语_hf是什么意思-全球
- 前女友再度起诉老虎伍兹 要求解除二人保
- 世界热推荐:活动预告|3月12日烟台,快
- 【天天新视野】深山合作取消个人商品住房
- 中交一航局三公司好进吗_中交一航局三公司
- 本周钼市呈下跌态势,成交量有所增加
- 安法护航 巾帼有力量
- 通讯!小学毕业歌曲100首_小学毕业歌曲
- 溴的四氯化碳溶液是什么意思_溴的四氯化
- 3月10日,猪价、蛋价“大变脸”,豆粕行
- 【天天时快讯】遂平一高录取分数线2021中
- 詹姆斯生涯的十大纪录!哪一个最可能被打
- 手工博主用微缩模型完美复刻“高启强老家
- 陈光标破产了_陈光标破产
- 武汉会计继续教育入口登录_武汉会计继续
- 焦点观察:成都“汉服爷爷”:寻找更多中
- 今天最新消息 印外长称只有中印走到一起
- 抗氧化导电膏 环球观速讯
- 天天即时看!内外壁热镀锌钢管与普通镀锌
- 煮鸡蛋冷水下锅还是热水_正确的煮鸡蛋方
- 全球通讯!日本公布H3火箭发射失败初步调
- 长高电新获5家机构调研:长高电新科技股
- 浙江自驾游去哪好玩_人少/景美/小众的海
- 3月8日基金净值:易方达核心优势股票A最
- 合成表情是什么意思_合成表
- 【环球播资讯】浙矿股份(300837.SZ):进
- 身高不足160cm的小个子,这个夏天就学她
- cx是什么意思
- 水解|全球快资讯
- 吉利联合中科创达共设汽车软件科技新公司
- 活螃蟹怎样保存? 世界头条
- 天天快资讯丨西斯廷教堂
- 泰国电动车市场被国产车包了!2月销量哪
- 韩国电视剧听见你的声音插曲是什么
- 当前热点-三方人才培养协议合同范本(合集
- 广州中华广场
- 如何建立局域网共享文件夹_如何建立局域
- 先锋模范作用发挥不够的整改措施_发挥党
- 美甲光疗是什么意思
- 全国政协委员刘连新:综合性国家区域医疗
- 唐好辰
- 当前视点!两会快讯 | 全国政协委员、
- 【全球新要闻】生 意 宝: 第六届董事
- 无锡招商城
- 为什么一到冬天手脚冰凉是什么原因_一到
- qq空间音乐怎么链接|环球视讯
- 日本宣布:失败!-当前消息
- 星辰的眼睛_对于星辰的眼睛简单介绍_当前
- 【天天时快讯】闪电修
- 柳条像什么比喻句二年级_柳条像什么比喻
- 环球百事通!济南好吃的饭店
- 世界热文:伊朗:发现的锂矿储量可能位居
- 天天热点!当日快讯:加纳庆祝独立66周年
- 结构陶瓷-微资讯
- 吉林外援琼斯成为CBA历史助攻王
- 【世界新要闻】NDS游戏王2011什么卡组强