canal icon indicating copy to clipboard operation
canal copied to clipboard

canal instance 配置 canal.mq.topic 参数后topic接收到巨量不需要的消息

Open callmedba opened this issue 1 year ago • 1 comments

canal 版本 为 1.1.7

数据库实例内有几千个表 ,配置 canal.mq.topic 参数值为 topic2 后 ,除了db1.table1表外的所有其它表的修改都会写消息进topic2 ,且只会写入0号分区 ,这部分消息实际上是不需要的,会引起0分区所在的kafka broker带宽瓶颈 ;本想配置 canal.instance.filter.black.regex 参数避免tps最大的 db2 库内的所有表的修改消息写入 topic2 中 ,但配置后不生效 ,同没有配置一样 , topic1消息监听都正常 。具体配置如下

1> 请问没有配置监听的库与表的修改,有办法可以忽略掉不写进kafka吗

2> 如下 canal.mq.topic 和 canal.instance.filter.black.regex 两个参数配置格式正确吗

谢谢 🙏

canal.mq.topic=topic2

canal.instance.filter.regex=\
db1.table1,\

canal.instance.filter.black.regex=db2\\..*

canal.mq.dynamicTopic=\
topic1:db1\\.table1,\

canal.mq.partition=0
canal.mq.partitionsNum=12
canal.mq.partitionHash=\
db1\\.table1:id,\

callmedba avatar Apr 30 '24 09:04 callmedba

期望是 db1.table1 表的监听写进 topic1 中 ,canal目前是OK的可以做到 ;但其它表的修改的监听都写进了 topic2 中,且只写0分区 ,这些消息实际上是不需要的 ,希望是可以丢弃掉这部分消息 。 canal 1.1.4 也有这个现象

上游是 mysql 5.7

谢谢

callmedba avatar Apr 30 '24 09:04 callmedba

1.canal.instance.filter.regex不生效问题 首先确认一下是不是 binlog_rows_query_log_events=ON 这个开关打开了,如果不是的话就跳过 如果是的话,修改这一行配置 canal.instance.filter.query.dml = true (默认为 false,改为 true)试试 ————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/line_on_database/article/details/127494796

hirolee88 avatar May 09 '24 08:05 hirolee88

1.canal.instance.filter.regex不生效问题 首先确认一下是不是 binlog_rows_query_log_events=ON 这个开关打开了,如果不是的话就跳过 如果是的话,修改这一行配置 canal.instance.filter.query.dml = true (默认为 false,改为 true)试试 ————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/line_on_database/article/details/127494796

大佬,测试了一下,修改 canal.instance.filter.query.dml = true 果然可以解决问题 非常感谢 🙏

不过也测试了 binlog_rows_query_log_events 打开与否的情况 ,结果是不影响 ,只要 canal.instance.filter.query.dml = true 就行 ,不清楚是什么原因

callmedba avatar May 10 '24 02:05 callmedba