关键字:
KFS,实时同步,过滤器
概述
KFS源端的工作流分为两个阶段:binlog-to-q和q-to-kufl。binlog-to-q阶段,KFS从源端的数据库日志中抽取增量数据,经过extractor模块解析封装后,以DBMSEvent的形式在内存队列queue中暂存,此阶段的主要工作是将数据库的元组信息抽取转化为DBMSEvent,我们称此阶段为“解析”阶段。对于全部的数据库操作,我们都要进行抽取解析吗?并不是,根据业务需求的不同,我们会选择需要的操作来进行解析,为了应对不同的业务需求,KFS提供了许多过滤器来进行操作过滤。
过滤器
我们知道JavaWeb的三大组件之一就是过滤器(Filter),使用它可以对请求进行拦截,也可以响应进行处理,KFS中的过滤器在功能上与之类似,也是用来实现特定操作的过滤,例如我们可以使用dropstatement过滤器来过滤掉DDL语句(即不让DDL语句进行同步)。
KFS中的过滤器
- replicate
作用:用于配置指定/忽略指定表的同步(注:该过滤器只针对DML数据的处理,DDL不支持)
配置(flysync.ini文件中):
svc-remote-filter=replicate
property=replicator.filter.replicate.ignore=
property=replicator.filter.replicate.do= property=replicator.filter.replicate.filePrefix=${replicator.home.dir}/support/filters-config/table
- skipeventbytype
作用:用于指定表DML类型的过滤
配置(flysync.ini文件中):
svc-extractor-filters=skipeventbytype property=replicator.filter.skipeventbytype.definitionsFile&