EventType这个枚举里有很多事件,请问能否在canal.properties里或者其他配置了,只让canal.entry里存insert,update,delete的数据?
原提问者GitHub用户shawn-happy
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
我们可以通过配置来筛选需要监控的类型
https://github.com/alibaba/canal/wiki/AdminGuide
SQL 语句主要可以划分为以下 3 个类别。
DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。
DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、udpate 和select 等。(增添改查)
DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。
原回答者GitHub用户shubiao-yao
可以通过canal.instance.filter.regex配置项来过滤不需要的事件类型,只保留insert、update、delete等事件。具体的操作步骤如下:
在Canal的配置文件(canal.properties或application.properties)中添加以下配置:
canal.instance.filter.regex=...(INSERT|UPDATE|DELETE).* # 只保留insert、update、delete事件
其中,canal.instance.filter.regex表示过滤事件的正则表达式。这里的正则表达式表示只保留库名.表名中包含INSERT、UPDATE或DELETE的事件类型。
重启Canal服务,让配置生效。
这样,Canal就会过滤掉不需要的事件类型,只保留insert、update、delete事件。注意,因为CanalInstanceManager支持多实例,所以这个配置项是针对每个实例的,如果你有多个实例,需要针对每个实例进行配置。