canal 支持监控不同库的 canal server 注册到同一个zk上吗?谢谢!
原提问者GitHub用户baibingzhi
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
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
根据我对 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 关联。