一个canal client连接canal server上配置的多个destination

项目场景:已通过canal client创建了一个连接,连接服务器的12004端口的mysql并监听所有库所有表的变化,由于新增业务需求,需要再监听服务器的12003端口的mysql中的一个库下的两种表的变化问题描述:更改现有配置文件中的canal相关的配置,canal的destination和subscribe配置字段分别更改为destinations和subscribes来配置canal server的多个destination,把多个destination和subscribe用";"拼接存
摘要由CSDN通过智能技术生成

项目场景:

已通过canal client创建了一个连接,连接服务器的12004端口的mysql并监听所有库所有表的变化,由于新增业务需求,需要再监听服务器的12003端口的mysql中的一个库下的两种表的变化


问题描述:

更改现有配置文件中的canal相关的配置,canal的destination和subscribe配置字段分别更改为destinations和subscribes来配置canal server的多个destination,把多个destination和subscribe用";"拼接存到destinations和subscribes中,加载配置时用";"把destinations和subscribes分割成字符串列表,两个字符串列表个数要一致,然后创建多个canal client,每个client都去连接canal server,部署到服务器上后,总是会报错,canal server断开canal client的链接,无法正常监听数据库的变更

原因分析:

研究了canal go sdk源码后发现,NewSimpleCanalConnector创建出的所有链接共用一个链接句柄,代码如下:

type SimpleCanalConnector struct {
	Address           string
	Port              int
	U
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您使用的是 Canal 1.x 版本,可以按照以下步骤配置 Canal 支持事务: 1. 在 Canal Server配置文件 `conf/canal.properties` 中,配置 `canal.instance.enableDdlSync=true`,表示开启 DDL 同步功能。 2. 在 Canal Client配置文件 `conf/example/instance.properties` 中,配置 `canal.instance.filter.regex=.*`,表示同步所有的表。 3. 在 Canal Client配置文件 `conf/example/instance.properties` 中,配置 `canal.instance.transactionSize=1000`,表示每次事务同步的最大条数为 1000。 4. 在 Canal Client 的启动代码中,使用 `CanalConnector` 的 `connect()` 方法建立连接,并使用 `subscribe()` 方法订阅需要同步的数据库和表。 5. 在 Canal Client 的启动代码中,使用 `start()` 方法启动监听,然后使用 `while` 循环不断读取数据,直到程序停止。 如果您使用的是 Canal 2.x 版本,可以按照以下步骤配置 Canal 支持事务: 1. 在 Canal Server配置文件 `conf/canal.properties` 中,配置 `canal.instance.enableDdlSync=true`,表示开启 DDL 同步功能。 2. 在 Canal Client配置文件 `conf/canal.yaml` 中,配置 `destination: example`,表示指定同步的目标为 `example`。 3. 在 Canal Client配置文件 `conf/canal.yaml` 中,配置 `filter: .*`,表示同步所有的表。 4. 在 Canal Client配置文件 `conf/canal.yaml` 中,配置 `group: example`,表示使用 `example` 分组。 5. 在 Canal Client 的启动代码中,使用 `CanalConnector` 的 `connect()` 方法建立连接,并使用 `subscribe()` 方法订阅需要同步的数据库和表。 6. 在 Canal Client 的启动代码中,使用 `start()` 方法启动监听,然后使用 `while` 循环不断读取数据,直到程序停止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值