canal 关于过滤功能的5个问题与建议

iyr7buue  于 2022-04-21  发布在  Java
关注(0)|答案(1)|浏览(510)

常见问题解答中 设置了数据表的过滤条件,但貌似没有生效?

检查下CanalConnector是否调用subscribe(filter)方法;有的话,filter需要和instance.properties的canal.instance.filter.regex一致,否则subscribe的filter会覆盖instance的配置,如果subscribe的filter是...,那么相当于你消费了所有的更新数据 【特别注意】

这段描述.

下文的client = CanalConnector的含义

问题1: client的subscribe( )函数是必须调用的吗?

我查看了java php go三个语言的client示例代码 发现都有这个函数的使用
且.filter默认都是".*\\..*"
从subscribe( )函数的第二个参数来看,填写的是Instances的名字.
那么,我认识 这个函数必须调用

**问题2: 既然client的subscribe( )函数会覆盖服务端Instances的filter规则,

那为何服务端配置一次,client的subscribe( )再配置一次?
修改过滤配置要需改2个地方 这样不合理 还是只建议在client里配置?**
我希望只配置在Instances的规则中.
因为 我要监听的这个数据库示例 有60张表, 而我要监听的表只有6张.

如果全部都发给客户端,客户端再过滤,肯定会影响效率的.

问题3:一个Instances支持多个client吗?

我是否可以每个表 都启动一个client,然后把规则写在client的subscribe( )里?

问题4:php语言的client示例中 给出的性能数据是1秒312个. 这个速度目前不能满足需求,有什么加速的方法吗?

问题5: 当前需求是,只处理数据update场景, 数据insert不需要管 Instances中是否有用相关配置?

还是只能在client自己过滤?

感谢解答.

f3temu5u

f3temu5u1#

问题3 我尝试 启动2个php 的client程序,但是报错

get data error. error code:400, error message:something goes wrong with channel:[id: 0x18e355c0, /172.31.136.227:61609 =>

/172.16.64.178:11111], exception=com.alibaba.otter.canal.server.exception.CanalServerException: ack error , clientId:1001

batchId:2158 is not exist , please check\

相关问题