金仓KFS数据过滤-类型过滤

85 阅读2分钟

关键字:

KingbaseFlysync、数据同步、数据过滤、 类型过滤、skipeventbytype

一、需求背景

针对数据同步,分发,以及业务需求或保密性等多项目需求,需要kfs支持按操作类型过滤掉不需要进行同步的dml操作类型

二、原理介绍

KFS的列过滤功能使用skipeventbytype过滤器实现,我们获取源端表数据(存量、增量)的同时获取表结构,KFS数据是通过流的方式进行两端迁移和同步,流的过程中是一个节点一个节点的方式,每个节点都有过滤器,过滤器将对应dml操作类型识别过滤(会严格按照大小写进行模式、表、列名匹配),然后重组数据流转到下一个节点

三、配置使用方式

在flysync.ini文件中添加如下配置:

svc-remote-filters= skipeventbytype  
-----过滤器中添加skipeventbytype过滤器
property = replicator.filter.skipeventbytype.definitionsFile=/home/flysync/replicator/flysync/flysync-replicator/support/filters-config/10.10.3.199_flysync_m_kes_3112_skipeventbytype.json
---------------指定skipeventbytype过滤规则文件路径

四、示例及配置效果展示

4.1 配置文件说明

{
    "public": {
        "test": "UPDATE,DELETE"  /* 过滤掉 UPDATE和DELETE 操作 */
    },
    "vip": {
        "test1": "DELETE",         /* 过滤掉 DELETE 操作 */
        "test2": "UPDATE,DELETE"  /* 过滤掉 UPDATE和DELETE 操作 */
    }
}

以上配置文件表示过滤public模式下的test表对应dml操作及vip模式下的test1,test2下的dml对应操作

4.2 效果展示

创建测试表public.test test=# create table test(a int primary key,b varchar(64)); 向test表中执行对应的dml操作(插入,更新)

图片.png

查看源端kufl解析,update更新操作被过滤 源端kufl

图片.png

查看目标端数据,insert正常入库,update操作未入库

图片.png

五、常见问题

Skipeventbytype过滤器一般配置在源端,需要严格匹配才能正常过滤,且过滤器使用串行的方式运作,当与其他过滤器结合使用时,需要考虑顺序处理带来的影响