解决了人大金仓KingbaseFlysync(KFS) 源端KES V8无主键表不解析UPDATE和DELETE的问题

61 阅读2分钟

关键字

KingbaseFlysync,KFS,KES,V8,无主键,不解析,UPDATE,DELETE

问题描述

源端KES V8无主键表的INSERT操作能正常解析,但是不解析UPDATE和DELETE操作。

问题分析

出现上述问题有以下几个原因:

  1. KES数据库不支持自动记录无主键表的oldTuple功能

a. KFS没有配置autoIdentify参数

b. 在对无主键表执行update/delete操作前没有将无主键表的复制标识符设置为完整模式(full)

  1. KES数据库支持自动记录无主键表的oldTuple功能

没有把数据库参数log_supplement_replica_identity配置为auto

没有配置a)中的数据库参数,且KFS没有配置autoIdentify参数

没有配置a)中的数据库参数,且在对无主键表执行update/delete操作前没有将无主键表的复制标识符设置为完整模式(full)

解决方案

KES数据库不支持自动记录无主键表的oldTuple功能

在flysync.ini文件中添加autoIdentify参数

配置使用方法

property=replicator.extractor.dbms.autoIdentity=none

取值:

none:

保持原有的行为,如果无主键,提示告警,不解析UPDATE和DELETE

index:

如果有上无主键,但是有非空的唯一索引,就在非空的唯一索引上加附加日志

如果无主键有唯一索引,但索引没有非空约束,提示告警,不解析UPDATE和DELETE

如果无主键无唯一索引,但有非空约束,提示告警,不解析UPDATE和DELETE

full

如果有上无主键,但是有唯一索引,就在表上加唯一索引

如果无主键也无唯一索引,则为所有列加附加日志

  1. 若未配置a)中的KFS参数,则在update/delete操作前将无主键表的复制标识符设置为完整模式(full)

ALTER TABLE YourTableName REPLICA IDENTITY FULL;

  1. KES数据库支持自动记录无主键表的oldTuple功能

将数据库参数log_supplement_replica_identity配置为auto,然后重启数据库使其生效

在kingbase.conf文件中,修改/添加参数log_supplement_replica_identity=auto

  1. 若未配置a)的参数,则按照“1. KES数据库不支持自动记录无主键表的oldTuple功能”中的方法进行处理

更多信息,参见help.kingbase.com.cn/v8/index.ht…