概述
canal主备切换配置
首先根据https://github.com/alibaba/canal/wiki/AdminGuide中的文档,配置好主备节点的相关信息。
以下配置摘选自官方文档:
# position info
canal.instance.master.address = 10.20.144.25:3306
canal.instance.master.journal.name =
canal.instance.master.position =
canal.instance.master.timestamp =
canal.instance.standby.address = 10.20.144.29:3306
canal.instance.standby.journal.name =
canal.instance.standby.position =
canal.instance.standby.timestamp =
##detecing config
canal.instance.detecting.enable = true ## 需要开启心跳检查
canal.instance.detecting.sql = insert into retl.xdual values(1,now()) on duplicate key update x=now() ##心跳检查sql,也可以选择类似select 1的query语句
canal.instance.detecting.interval.time = 3 ##心跳检查频率
canal.instance.detecting.retry.threshold = 3 ## 心跳检查失败次数阀值,超过该阀值后会触发mysql链接切换,比如切换到standby机器上继续消费binlog
canal.instance.detecting.heartbeatHaEnable = true ## 心跳检查超过失败次数阀值后,是否开启master/standby的切换
切换异常说明
异常范围
-
当canal.instance.global.mode = spring时,由于此时会在启动canal的机器上配置canal.properties、destinations相关的配置文件,此时canal的MySQL主备切换不会有问题
-
当canal.instance.global.mode = manager时(canal-admin模式必须设置为manager),通过canal-admin模式,canal.properties、destinations相关的配置会写在canal-admin对应的数据库中。
而启动canal的机器上实际是没有canal.properties、destinations相关的配置文件,此时canal的MySQL主备切换时,会出现无法初始化tsdb的情况(用于保存监听的表的结构以及快照的数据库)。
异常详解
1.canal-admin在启动时,CanalInstanceWithManager类中会请求canal-admin中的http接口,获取对应的配置。此时可以正常获得tsdb的配置,可以正常初始化tsdb。CanalInstanceWithManager会将tsdb对应赋予MysqlEventParser对象。
2.当进行MySQL宕机,canal在MysqlEventParser自动切换的时候。此时会重新初始化tsdb对象。此时在AbstractMysqlEventParser会去机器的目录中拿tsdb的配置信息,而不是在canal-admin中获取。此时就会出现无法正常初始化tsdb的问题,导致无法及时进行切换。
解决方案
把配置文件conf/spring/tsdb/下的mysql-tsdb.xml或h2-tsdb.xml中的以下参数,直接替换为对应的url、username、password。因为canal-admin模式下,是无法读取到canal.properties、destinations相关的配置信息的。
<property name="url" value="${canal.instance.tsdb.url:}" />
<property name="username" value="${canal.instance.tsdb.dbUsername:}" />
<property name="password" value="${canal.instance.tsdb.dbPassword:}" />
最后
以上就是心灵美帆布鞋为你收集整理的canal-admin模式下,canal切换MySQL主备节点异常的全部内容,希望文章能够帮你解决canal-admin模式下,canal切换MySQL主备节点异常所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复