关键字:
中电科金仓、KingbaseFlySync、KFS、同步程序、replicator、数据同步、数据解析、SQLServer、自增列、实时同步
1. 使用场景
SQLServer中,自增列是一种常见的需求,用户自动生成唯一的标识符,实现自增列的方法主要有两种:使用IDENTITY属性和使用Sequence对象。
当使用Sequence对象时,KingbaseFlySync对象将会解析出自增列实际的值,这样同步到目标端无任何问题。
当使用IDENTITY属性时,KingbaseFlySync对象在源端也是解析出自增列实际的值,但是在目标端插入时,如果对自增列显示赋值,就需要先开启表的IDENTITY_INSERT属性(且该属性在同一数据库中,不能有多张表同时开启)。
基于此场景,KingbaseFlySync提供了对应参数,既支持对自增列的显示插入功能,也支持对自增列的隐式插入。
2. 配置使用方式介绍
2.1 配置方式
- 在flysync.ini中新增如下配置:
## sqlserver源端存在自增列且需要显式的在目标端插入时,目标端需要配置如下参数:
property=replicator.applier.dbms.enableIdentity=true
## 配置下列相关的参数,将会对源端生成的、符合条件的sql进行整改:
## 例如配置了dropUpdateSet=true且假设ID列是自增列
## 会将:update tablename set ID=1,A=2 where ID=1 and A=1
## 整改为:update tablename set A=2 where ID=1 and A=1
svc-remote-filters=dropcolumnbydesc
##后续的这四项配置默认值是true,如果使用默认值,则ini中无需配置
property=replicator.filter.dropcolumnbydesc.dropInsert=false
property=replicator.filter.dropcolumnbydesc.dropUpdateSet=true
property=replicator.filter.dropcolumnbydesc.dropUpdateWhere=false
property=replicator.filter.dropcolumnbydesc.dropDelete=true
2. 在KingbaseFlySync的replicator安装包中执行安装/更新,使配置生效
3. 参数生效的规则
KingbaseFlySync同步过程中dropcolumnbydesc过滤器在enableIdentity属性之前生效,所以如果需要配置enableIdentity属性,那么property=replicator.filter.dropcolumnbydesc.dropInsert参数需要配置为false。
否则dropInsert会先将kufl中的自增列先删除,此时enableIdentity属性也就没有实际意义了。
4. 支持的拓扑配置
自增列同步功能支持的拓扑如下:
SQLServer -> SQLServer
SQLServer -> KES(SQLServer兼容模式)
KES(SQLServer兼容模式)-> SQLServer
KES(SQLServer兼容模式)-> KES(SQLServer兼容模式)
参考资料
《Kingbase FlySync 安装部署手册》




