开发者社区> 问答> 正文

不同表的数据可以分到不同的topic或者partition

现在想要不同的表数据能分开订阅,这样订阅端就不会收到其他表的数据,配置了 canal.mq.partitionHash 没有用啊

原提问者GitHub用户362228416

展开
收起
古拉古拉 2023-05-08 17:05:24 99 0
2 条回答
写回答
取消 提交回答
  • 考虑到表的关联关系, 同一库内表间并行消费的话会有数据不一致问题

    原回答者GitHub用户rewerma

    2023-05-09 18:36:51
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    canal.mq.partitionHash用于配置分区哈希的算法,以将不同的表数据分配到不同的分区中。但是需要注意的是,使用分区哈希功能只能将数据分配到不同的分区中,不能达到不同的表数据能分开订阅的效果。

    如果需要订阅不同的表数据,可以在canal的配置文件中,为不同的表创建不同的客户端,通过配置表名或正则表达式,来订阅对应的表数据。例如:

    配置表名

    canal.instance.filter.regex = mydb.mytable

    配置正则表达式

    canal.instance.filter.regex = mydb.(mytable1|mytable2)

    这样可以将所有订阅mydb.mytable表的数据,分配到一个客户端中进行同步,其他表的数据则分配到其他客户端中进行同步,从而达到不同的表数据能分开订阅的效果。

    2023-05-08 17:32:25
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

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