人大金仓KFS支持数据同步数据标记功能介绍

人大金仓KFS支持数据同步数据标记功能介绍

关键字:

KingbaseFlysync、KFS、同步程序、replicator、DML、数据同步、人大金仓、KFSMC、KFS管理控制台

功能介绍

配置在目标端,在原数据基础上增加两列,记录对数据的修改(INSERT,UPDATE,DELETE)类型和修改时间。

使用场景

对于需要保留修改记录的数据,可以使用该功能。对于DELETE操作。该功能还提供了DI和DU两种模式,可以以UPDATE的方式更新删除的目标行以记录删除操作,或者以INSERT的方式单独插入一行数据来记录删除操作。

配置使用方式介绍

首先需要在目标端的flysync.ini文件中配置数据标记的行为。因为用于演示我们都保留默认值。

svc-remote-filters = datamark

# 忽略增加标记的表(模式.表名;模式.*)

property=replicator.filter.datamark.markignore=

# 指定增加标记的表(模式.表名;模式.*)

property=replicator.filter.datamark.markdo=

# 指定需要增加标记的DML类型【默认值为:insert,update,delete】

property=replicator.filter.datamark.dmltype=insert,update,delete

# 指定增加标记的列(modtype为DML类型标记列,modtime为时间标记列)【默认值为:

modtype,modtime】

property=replicator.filter.datamark.markcolumn=modtype,modtime

# 指定delete操作更换标记的情况【默认值为:DU】

property=replicator.filter.datamark.deltype=DU

# 指定DML类型标记的列名【默认值为:mod_type】(不支持中文和特殊字符)

property=replicator.filter.datamark.modtypename=mod_type

# 指定DML类型标记的列值【默认值为:I,U,D】(仅支持单字符的数字和英文字母)

property=replicator.filter.datamark.modtypeval=I,U,D

# 指定时间标记列的列名【默认值为:mod_time】(不支持中文和特殊字符)

property=replicator.filter.datamark.modtimename=mod_time

其次需要在目标使用repdatamark工具在目标表上增加两列用于记录修改数据。

repdatamark

#数据类型

-dbtype kingbase8

#数据库IP地址

-host 10.10.5.99

#数据库端口

-port 54333

#数据库用户名

-user system

数据库密码

-pass 123

#使用哪个数据库

-db zdxtest_tar

#需要进行数据标记的表

-appendMarkDataColumn public.test

#需要数据标记类型

-columnType modtype,modtime

#如果使用的是kingbase,需要选择兼容模式

-dbMode oracle

示例

前置条件

  1. 按照第三小节提到的方式配置FLYSYNC.INI文件
  2. 完成同步程序的安装部署,源端目标端同步服务正常;

操作步骤

目标端源端插入演示用的数据库,因为同步服务已开启,我们在源端创建数据库会自动同步到目标端。

zdxtest=# create table test(id int primary key, value int);

CREATE TABLE

在目标端中使用repdatamark工具添加标记列到目标表中。

repdatamark -dbtype kingbase8 -host 10.10.5.99 -port 54333 -user system -pass 123 -db zdxtest_tar -appendMarkDataColumnle

运行结果:

2023-09-22 08:12:59 | | [ - main] INFO database.AbstractDatabase Loading database driver: com.kingbase8.Driver

Appending mark data column for tables...

"public"."test" successful

Finished appending command.

此时我们在源端向演示的表中插入数据。

zdxtest=# Insert into test values (1,99);

INSERT 0 1

从源端KUFL日志中我们可以看到数据已经发送

[kfs@- ~]$ kufl list -last

SEQ# = 1 / FRAG# = 0 (last frag)

- TIME = 2023-09-22 07:54:56.024

- EPOCH# = 0

- EVENTID = kb:2094059776:2094496880

- SOURCEID = 10.10.5.99

- METADATA = [tz_aware=true;dbms_type=kingbase;client_id;all_tables=[public.test];service=kingbase;shard=public]

- TYPE = com.kingbase.flysync.replicator.event.ReplDBMSEvent

- OPTIONS = []

- SQL(0) =

- ACTION = INSERT

- SCHEMA = public

- TABLE = test

- ROW# = 0

- COL(1: id) = 1

- COL(2: value) = 99

从目标端kufl日志我们可以看到附件消息已经被添加

[kfs@oracle ~]$ kufl list -last

SEQ# = 1 / FRAG# = 0 (last frag)

- TIME = 2023-09-22 07:54:56.024

- EPOCH# = 0

- EVENTID = kb:2094059776:2094496880

- SOURCEID = 10.10.5.99

- METADATA = [tz_aware=true;dbms_type=kingbase;client_id;all_tables=[public.test];service=kingbase;shard=public]

- TYPE = com.kingbase.flysync.replicator.event.ReplDBMSEvent

- OPTIONS = []

- SQL(0) =

- ACTION = INSERT

- SCHEMA = public

- TABLE = test

- ROW# = 0

- COL(1: id) = 1

- COL(2: value) = 99

- COL(0: mod_type) = I

- COL(0: mod_time) = 2023-09-22 23:54:32.775

在目标端数据库中我们也可以看到数据标记已被正确添加。I代表INSERT,后面一列代表操作时间。

zdxtest_tar=# select * from test;

id | value | mod_type | mod_time

----+-------+----------+----------------------------

1 | 99 | I | 2023-09-22 23:54:32.775000

参考资料

《Kingbase FlySync 安装部署手册》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值