关键字:
KingbaseFlySync、KFS、同步程序、replicator、在线修改同步范围、DML
1. 功能描述
KFS支持在线修改同步的范围,用来对指定表对象的DML语句进行解析或过滤。
2. 使用场景介绍
开启同步服务后,当用户需要在不中断同步业务的情况下,在线修改同步的范围,对指定表对象的DML语句进行解析或过滤时,可采用该命令进行实现。
注:该命令目前只能用于源端。
3. 介绍
(1)前提条件:源端同步服务处于online状态
(2)使用方式:
① 解析指定表对象DML语句
在源端输入如下命令:
fsrepctl -service [服务名] add-replicate-do [*.*/模式名.*/模式名.表名]
注:该命令是在原来指定表对象的范围上追加同步的表,来解析这些表的DML语句
② 过滤指定表对象DML语句
在源端输入如下命令:
fsrepctl -service [服务名] add-replicate-ignore [*.*/模式名.*/模式名.表名]
注:该命令是在原来指定表对象的范围上追加过滤的表,来过滤这些表的DML语句
4. 使用示例
4.1 前置条件
1. 环境介绍:

l 数据库版本:V009R001C002B0014
l 同步服务版本:V002R002C004B20241122
2. 对象创建:
(1)在源端创建本文所需模式:zxyt、zxyt01。具体sql语句如下:
create schema zxyt;
create schema zxyt01;
(1)在源端zxyt模式下创建表t1、t2,在源端zxyt01模式下创建表t3。具体sql语句如下:
create table zxyt.t1(id int);
create table zxyt.t2(id int);
create table zxyt01.t3(id int);
3. 源端flysync.ini文件包含如下配置:
property=replicator.filter.replicate.do=zxyt.*
该配置表示仅同步模式zxyt下所有表对象的DML语句。
4.2 操作步骤
1. 在线添加do范围解析指定表对象DML示例
(1)未执行在线添加do的范围(add-replicate-do)
① 在源端zxyt01.t3中插入数据:
insert into zxyt01.t3 values(47);


② 查看源端kufl:
kufl -service kes_oracle_master01 list


由上图可知,未解析zxyt01.t3的insert语句。这是由于源端flysync.ini文件配置了property=replicator.filter.replicate.do=zxyt.*,仅解析模式zxyt下所有对象的DML语句。
(2)执行在线添加do的范围(add-replicate-do)
① 在源端执行:
fsrepctl -service kes_oracle_master01 add-replicate-do zxyt01.t3
② 在源端zxyt01.t3中插入数据:
insert into zxyt01.t3 values(54);


③ 查看源端kufl:
kufl -service kes_oracle_master01 list


由上图可知,在线添加do命令生效,已成功解析指定对象zxyt01.t3的insert语句。
④ 查看目标端同步结果:


由上图可知,目标端已同步往zxyt01.t3插入数据54。
2. 在线添加ignore范围过滤指定表对象DML示例
(1)未执行在线添加ignore的范围(add-replicate-ignore)
① 在源端zxyt.t1和zxyt.t2中插入数据:
insert into zxyt.t1 values(47);


insert into zxyt.t2 values(54);


② 查看源端kufl:


由上图可知,zxyt.t1和zxyt.t2的insert语句已被成功解析
③ 查看目标端同步结果:



由上图可知,目标端已同步往zxyt.t1插入数据47,往zxyt.t2插入数据54。
(2)执行在线添加ignore的范围(add-replicate-ignore)
① 在源端执行:
fsrepctl -service kes_oracle_master01 add-replicate-ignore zxyt.t1
fsrepctl -service kes_oracle_master01 add-replicate-ignore zxyt.t2
② 在源端zxyt.t1和zxyt.t2中插入数据:
insert into zxyt.t1 values(555);


insert into zxyt.t2 values(777);


③ 查看源端kufl:


由上图可知,未解析指定对象zxyt.t1和zxyt.t2的insert语句,说明在线添加ignore命令生效,已成功过滤指定对象zxyt.t1和zxyt.t2的insert语句。
参考资料
《KFS特性配置&命令行工具列表》




