关键字:
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操作(插入,更新)
查看源端kufl解析,update更新操作被过滤
源端kufl
查看目标端数据,insert正常入库,update操作未入库
常见问题 Skipeventbytype过滤器一般配置在源端,需要严格匹配才能正常过滤,且过滤器使用串行的方式运作,当与其他过滤器结合使用时,需要考虑顺序处理带来的影响