开发者社区> 问答> 正文

replace into 操作的语句filter无效

replace into table 不订阅这个表,客户端也能收到消息

原提问者GitHub用户linuke

展开
收起
绿子直子 2023-05-09 15:54:13 82 0
2 条回答
写回答
取消 提交回答
  • query语句没有严格按表进行过滤

    原回答者GitHub用户agapple

    2023-05-10 10:49:06
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    1、replace into 操作的语句 filter 无效:

    在 Canal 中,filter 是在 Canal Server 端进行的,它会根据订阅的规则来过滤出需要传输的数据。而 replace into 操作是写操作,不是读操作,因此 filter 在这种操作中是无效的。如果您需要对写操作进行过滤,可以尝试使用 Canal 的 CanalFilter 接口进行自定义过滤操作。

    2、replace into table 不订阅这个表,客户端也能收到消息:

    Canal 的订阅规则是基于数据库和表的,如果您没有订阅某个表,那么在该表上的操作不应该被传输给对应的客户端。因此,如果您的客户端收到了没有订阅的表的操作消息,可能有以下几种情况:

    订阅规则设置不正确:请确认您的订阅规则配置正确,是否正确设置了订阅的数据库和表名。

    Canal Server 配置错误:请确认您的 Canal Server 配置是否正确,并且是否正确连接到了数据库。

    Canal Server 版本过低:如果您的 Canal Server 版本过低,可能会存在 Bug 或限制,建议将 Canal Server 版本更新到最新版本。

    需要注意的是,如果客户端收到了没有订阅的表的操作消息,建议在客户端程序中进行过滤操作,避免因为业务逻辑问题或数据安全问题导致数据不一致或数据泄露的问题。

    2023-05-10 09:47:22
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

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