以下配置内容对整个表的字段都进行了监听,我这边想实现只对指定字段的变化进行监听。如何配置实现呢?
#canal.instance.filter.black.field=
这个配置除了label_name 字段外,表内其他字段发生变化后。通过zookeeper也会监听到。
原提问者GitHub用户yuanshishuju
可以使用canal.instance.filter.regex或canal.instance.filter.rule配置项来实现只监听指定字段的变化,而忽略其他字段的变化。
使用canal.instance.filter.regex 可以通过正则表达式匹配要监听的字段,具体步骤如下:
1)在canal.properties中配置canal.instance.filter.regex,指定要匹配的正则表达式。例如,如果只想监听表t1中的id和name字段,可以这样设置:
canal.instance.filter.regex=^test.(t1.)?(id|name)$
其中test为数据库名,t1为表名。
2)在mysql数据库中执行命令:alter table t1 modify id int default 0; alter table t1 modify name varchar(100) default 'test';
使用canal.instance.filter.rule 可以通过定义过滤规则来实现只监听指定字段的变化,而忽略其他字段的变化。具体步骤如下:
1)在canal.properties中配置canal.instance.filter.rule,指定过滤规则,例如:
canal.instance.filter.rule=db1.test1:id,name;db1.test2:id,name;
表示只监听数据库db1中表test1和test2中的id和name字段。
2)在mysql数据库中执行命令:alter table test1 modify id int default 0; alter table test1 modify name varchar(100) default 'test';
注:canal.instance.filter.regex和canal.instance.filter.rule两者只能使用其中一个,不能同时使用。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。