开发者社区> 问答> 正文

单个CanalInstance是否能支持多个clinet,该如何配置?

当多个下游都需要消费同一个MySQL实例的binlog信息时,如何配置来实现这个需求? 每个下游可能消费进度、filter存在差异

原提问者GitHub用户zhoujinsong

展开
收起
山海行 2023-04-28 15:06:42 170 0
2 条回答
写回答
取消 提交回答
  • 值得去的地方都没有捷径

    一个 canalinstance 实例可以支持多个客户端消费同一个 mysql 实例的 binlog 信息,可以通过在 instance.properties 文件中配置多个客户端的 canal 配置来实现。具体配置如下:

    在 instance.properties 文件中添加多个 canal 配置,每个配置都需要指定不同的 canal 端口,例如: canal.instance.network.port=11111 canal.instance.network.port=11112 canal.instance.network.port=11113 在不同的客户端中,指定不同的 canal 端口来连接 canalinstance 实例,例如: canal.instance.master.address=127.0.0.1:11111 canal.instance.master.address=127.0.0.1:11112 canal.instance.master.address=127.0.0.1:11113 对于每个客户端,可以单独配置消费进度和过滤规则,例如: canal.instance.filter.regex=.\.. canal.instance.filter.black.regex=mysql\.slave_.* canal.instance.filter.black.regex=mysql\.slave_.* canal.instance.filter.black.regex=mysql\.slave_.* canal.instance.filter.black.regex=mysql\.slave_.* canal.instance.filter.regex=.\.. canal.instance.filter.black.regex=mysql\.slave_.* canal.instance.filter.black.regex=mysql\.slave_.* canal.instance.filter.black.regex=mysql\.slave_.* canal.instance.filter.black.regex=mysql\.slave_.* canal.instance.filter.regex=.\.. canal.instance.filter.black.regex=mysql\.slave_.* canal.instance.filter.black.regex=mysql\.slave_.* canal.instance.filter.black.regex=mysql\.slave_.* canal.instance.filter.black.regex=mysql\.slave_.* 需要注意的是,对于每个客户端,需要使用不同的 canal 端口来连接 canalinstance 实例,并且需要单独配置消费进度和过滤规则。

    2023-04-29 14:42:00
    赞同 展开评论 打赏
  • 可以参考:https://github.com/alibaba/canal/wiki/ClientAdapter

    原回答者GitHub用户Kaiux

    2023-04-28 15:18:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载