开发者社区> 问答> 正文

canal 1.1.1版本 位点存在zookeeper哪个znode下

环境信息

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

展开
收起
古拉古拉 2023-05-08 14:50:58 105 0
3 条回答
写回答
取消 提交回答
  • canal.properties中canal.instance.global.spring.xml配置有误,使用的file-instance,不是default-instance,导致位点没有写入到zookeeper中。

    原回答者GitHub用户jxyzmahuan

    2023-05-09 18:00:31
    赞同 展开评论 打赏
  • 分析解答

    在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文件开始处理数据。

    2023-05-08 15:29:18
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    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的数据。

    2023-05-08 15:17:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《MSE 微服务网关》 立即下载
微服务引擎 MSE 治理中心重磅发布 立即下载
阿里云微服务引擎 MSE 2.0 线上发布 立即下载