环境信息
canal version 1.1.1 mysql version 5.6
问题描述
源数据异常宕机恢复后,binlog文件从000001开始,如何只处理一个instance [zk: 10.138.232.213:2181,10.138.232.214:2181,10.138.232.215:2181(CONNECTED) 27] ls /otter/canal/destinations/oms2 [running, cluster]
原提问者GitHub用户jxyzmahuan
canal.properties中canal.instance.global.spring.xml配置有误,使用的file-instance,不是default-instance,导致位点没有写入到zookeeper中。
原回答者GitHub用户jxyzmahuan
分析解答
在canal 1.1.1版本中,位点信息存储在zookeeper的/canal/destinations/instanceName/running节点下。其中,instanceName为canal的实例名称。因此,需要找到要处理的instance的名称,然后在zookeeper中查找该实例的running节点,即可找到该实例的位点信息。
在本例中,要处理的instance为oms2,因此在zookeeper中查找/canal/destinations/oms2/running节点即可找到该实例的位点信息。可以使用如下命令查找:
zkCli.sh -server 10.138.232.213:2181,10.138.232.214:2181,10.138.232.215:2181
ls /canal/destinations/oms2/running
执行该命令后,会显示该instance的位点信息。根据该信息,可以确定要从哪个binlog文件开始处理数据。
Canal 1.1.1版本的位点信息存储在Zookeeper的/otter/canal/destinations/{destinationName}/clusters/{clusterName}/nodes/{nodeName}节点下,其中destinationName是Canal实例的名字,clusterName是集群的名字,nodeName是Canal节点的名字。你可以使用以下命令获取到该节点的值:
get /otter/canal/destinations/{destinationName}/clusters/{clusterName}/nodes/{nodeName} 其中,{destinationName}需要替换成你的Canal实例名字,{clusterName}和{nodeName}可以在Canal的配置文件中进行配置。如果你只需要处理一个instance,可以将Canal的配置文件中,其他instance的配置注释掉,然后重启Canal服务,这样Canal只会读取到注释掉的instance的位点信息,从而避免处理其他instance的数据。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。