其中在canal.properties里面设置的 canal.serverMode = kafka canal.mq.flatMessage = false
在instance.properties里面设置的 canal.instance.filter.regex=dbs1.mem,dbs2.mem,dbs3.mem #canal.mq.topic=canal
canal.mq.dynamicTopic=....* canal.mq.partition=0
#canal.mq.partitionsNum=3 canal.mq.partitionHash=...:id
根据官网的介绍应该是监听的三张表应该都会发送到mem这个topic里面,但是出现了三个topic,分别是dbs1_mem,dbs2_mem,dbs3_mem,对应的分别以库名和表名为名的topic。。
分库分表的时候想要将数据同步到一个topic里面是不是我少设置了什么,还是设置错了什么
canal.mq.dynamicTopic 表达式说明 canal 1.1.3版本之后, 支持配置格式:schema 或 schema.table,多个配置之间使用逗号或分号分隔
例子1:test.test 指定匹配的单表,发送到以test_test为名字的topic上 例子2:... 匹配所有表,则每个表都会发送到各自表名的topic上 例子3:test 指定匹配对应的库,一个库的所有表都会发送到库名的topic上 例子4:test.* 指定匹配的表达式,针对匹配的表会发送到各自表名的topic上 例子5:test,test1.test1,指定多个表达式,会将test库的表都发送到test的topic上,test1.test1的表发送到对应的test1_test1 topic上,其余的表发送到默认的canal.mq.topic值
官网给出的设置例子2,但是设置还是发送到了dbs1_mem,dbs2_mem,dbs3_mem,,并不是只发到mem 现在过滤:canal.instance.filter.regex=dbs1.mem,dbs2.mem,dbs3.mem 想只发送到一个名字为mem的topic里面,需要这么配置canal.mq.dynamicTopic的值
原提问者GitHub用户BigData-YC
自己的问题还是得自己回答: canal.mq.dynamicTopic=mem:dbs.*.mem 不同库的同一张表
canal.mq.dynamicTopic=mem:dbs..mem, mem1:dbs..mem1,mem2:dbs..mem2,mem3:dbs..mem3 不同库的多张表(mem1,mem2,mem3)
原回答者GitHub用户BigData-YC
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。