开发者社区 问答 正文

canal 支持监控不同库的 canal server 注册到同一个zk上吗?

canal 支持监控不同库的 canal server 注册到同一个zk上吗?谢谢!

原提问者GitHub用户baibingzhi

展开
收起
古拉古拉 2023-05-08 15:23:56 168 分享 版权
2 条回答
写回答
取消 提交回答
  • canal.properties这个配置文件中有个canal.destinations选项,它是指的当前server上部署的instance列表

    每个instance可以对应一个"数据库",这块的配置你可以参考: https://github.com/alibaba/canal/wiki/AdminGuide

    HA模式中已经提及canal server怎么与zookeeper如何交互

    当你配置canal.destinations为多个example后。 例:canal.destinations = example1,example2

    去zookeeper client中去分别查看example1,example2 当前最后一次消费成功的binlog位点。

    [zk: localhost:2181(CONNECTED) 16] get /otter/canal/destinations/example1/1001/cursor [zk: localhost:2181(CONNECTED) 16] get /otter/canal/destinations/example2/1001/cursor

    使用canal client去分别订阅消费canal server中的binlog CanalConnector connector = CanalConnectors.newClusterConnector("10.70.120.158:2181", "example1", "", "");

    CanalConnector connector = CanalConnectors.newClusterConnector("10.70.120.158:2181", "example2", "", "");

    以上内容我已经亲自尝试过了,希望可以帮助到你。

    原回答者GitHub用户shubiao-yao

    2023-05-09 18:13:42
    赞同 展开评论
  • 根据我对 Canal 的了解,它是支持监控不同库的 Canal Server 注册到同一个 ZooKeeper(以下简称 zk)上的。

    Canal Server 在启动时,需要通过配置文件指定 zk 地址和节点路径等信息。如果您的多个 Canal Server 都使用同一个 zk 地址和节点路径,那么它们就会在同一个 zk 上注册,并且可以共享相同的 Canal Manager。在这种情况下,您可以在 Canal Manager 中为每个库配置单独的 Instance,以便分别监控不同的数据库。

    例如,假设您有两个 Canal Server,分别用于监控数据库 A 和 B,它们都使用相同的 zk 地址和节点路径。那么,在 Canal Manager 中,您可以创建两个单独的 Instance,分别用于连接 A 和 B 数据库的 Canal Server。而这两个 Instance 都可以与同一个 Canal Manager 关联。

    2023-05-08 15:51:59
    赞同 展开评论
问答分类:
问答地址: