暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

中电科金仓KFS支持指定key值过滤(custompkey)功能介绍与配置使用

原创 KFS补给站 2024-10-29
124

关键字:

KingbaseFlySync、KFS、同步程序、replicator、custompkey、flysync.ini

1. 功能描述

当数据库中有无主键的表时,KFS解析update、delete语句时生成的key值带的所有列,配置custompkey过滤器可以对无主键表指定解析key值生成KUFL。

2. 使用场景介绍

用于无主键表的同步场景中,通过增加过滤器的方式,可以指定解析key值生成KUFL,来达到能够尽可能的正常同步无主键的表。同时能够支持一些无主键表的复杂类型(如大对象类型,本不可以用作where条件)用作where条件,并可以提升无主键表查询速度从而提升性能。

3. 配置使用方式介绍

  • 在源端flysync.ini文件中添加以下参数:
svc\_extractor\_filters=custompkey

property=replicator.filter.custompkey.definitionsFile=/home/kfs/flysync\_test/filters-config/custompkey.json

参数custompkey.definitionsFile可指定custompkey.json文件的路径。若不指定custompkey.json的路径,该文件存放在_${KFS安装目录}/ filters-config/custompkey.json_。

  • custompkey.json文件配置有两种方法,一种为手动配置custompkey.json文件,另外一种为使用repkeyclean工具一键生成custompkey.json配置文件。

3.1 手动配置custompkey.json文件

custompkey.json文件配置格式如下:

{

“模式名1”:{

“表名1”:“列名1,列名2,...”,

“表名2”:“列名1,列名2,...”,

...

“表名n”:“列名1,列名2,...”

}

“模式名2”:{

“表名1”:“列名1,列名2,...”,

“表名2”:“列名1,列名2,...”,

...

“表名n”:“列名1,列名2,...”

}

...

“模式名n”:{

“表名1”:“列名1,列名2,...”,

“表名2”:“列名1,列名2,...”,

...

“表名n”:“列名1,列名2,...”

}

}

例如,指定dbo模式下的表test的ID列和A列为key值,此时custompkey.json文件如下:

{

“dbo”:

{

“test”: “ID,A”

}

}

3.2 利用repkeyclean生成custompkey.json文件

repkeyclean命令行工具可以一键生成custompkey.json配置文件。其主要参数如下:

参数名称 参数含义
-dbtype 数据库品牌类型,如KES、mysql、oracle
-host 数据库所在机器的IP
-port 数据库端口号
-user 数据库用户名
-pass 数据库用户密码
-db 数据库名称(oracle对应服务名称)
-pattern 指定数据库模式或者表名,默认*.*(所有模式下所有表)

如对KESV8的sourcedb数据库中test模式下的所有表无主键表过滤操作,则命令如下:

repkeyclean -dbtype kingbase8 -host 10.10.5.68 -port 54322 -user system -pass 123 -db sourcedb -pattern test.\*

执行该命令后则会自动生成custompkey.json文件。

4. 使用示例

4.1 前置条件

假设有两张无主键表test1和test2,其需要指定所有id列和a列作为key值解析。

4.2 操作步骤

  1. 部署源端KFS时,在flysync.ini文件中添加指定解析key值过滤(custompkey)。图1给出了flysync.ini的配置示例

图1 添加custompkey参数的flysync.ini文件示例

  1. custompkey.json配置示例:

图2 custompkey.json文件配置示例

  1. 参考《Kingbase FlySync 安装部署手册》完成安装部署
  2. 源端数据库创建表test1和test2。
create table dbo.test1(id int,a varchar(10),b datetime);

create table dbo.test2(id int,a varchar(10),b datetime);

insert into dbo.test1 values(1,’小明’,’9999-12-31 23:59:59.998’);

insert into dbo.test2 values(1,’小红’,’2018-10-24 11:30:28.007’);

update dbo.test1 set a=’小张’where id=1;

update dbo.test2 set a=’小王’where id=1;

4.3 结果展示

查看KUFL解析出的update语句:

图3 test1表update时KUFL解析值

图4 test2表update时KUFL解析值

从图3和图4的KUFL解析值可以看到,由于配置了custompkey参数,test1表和test2表执行update生成KUFL时指定了id列和a列作为key值解析,即过滤掉了test1表和test2表的b列值,成功实现了对无主键表指定key值生成KUFL。

最后修改时间:2024-10-29 15:42:23
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论