是不是如果mysql 的binlog为mixed模式 canal.instance.filter.regex 就无效
原提问者GitHub用户keepljg
过滤条件只针对row模式的数据有效(ps. mixed/statement因为不解析sql,所以无法准确提取tableName进行过滤)
原回答者GitHub用户agapple
不是的,canal.instance.filter.regex
参数不会受到 MySQL binlog 模式的影响。无论 binlog 模式是 ROW、STATEMENT 还是 MIXED,都可以使用该参数来进行过滤。但是需要注意的是,如果 binlog 模式为 ROW,那么对于更新操作,canal.instance.filter.regex
参数中所指定的字段值变化信息可能会比较详细,因为 ROW 模式会将每一行数据的变化都记录下来。而对于 binlog 模式为 STATEMENT,canal.instance.filter.regex
参数则可能只能过滤掉整条 SQL 语句,而不能精确到每个字段的变化。
不是的,Canal支持解析mixed模式的binlog,并且正常情况下,canal.instance.filter.regex也是生效的。可以尝试在Canal的配置文件中添加以下配置:
canal.instance.filter.regex=... canal.instance.filter.black.regex=test..,abc..
这里的正则表达式表示订阅所有库、所有表,但是过滤掉test和abc库中的所有表。你可以根据实际情况修改正则表达式来过滤需要订阅的表和库。需要注意的是,正则表达式中需要对"."进行转义,因为"."在正则表达式中表示任意字符。因此,需要使用"."来表示一个真实的"."字符。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。