关键字
KingbaseFlysync,KFS,KES,V8,无主键,不解析,UPDATE,DELETE
问题描述
源端KES V8无主键表的INSERT操作能正常解析,但是不解析UPDATE和DELETE操作。
问题分析
出现上述问题有以下几个原因:
1.KES数据库不支持自动记录无主键表的oldTuple功能
a) KFS没有配置autoIdentify参数
b) 在对无主键表执行update/delete操作前没有将无主键表的复制标识符设置为完整模式(full)
2.KES数据库支持自动记录无主键表的oldTuple功能
a)没有把数据库参数log_supplement_replica_identity配置为auto
b)没有配置a)中的数据库参数,且KFS没有配置autoIdentify参数
c)没有配置a)中的数据库参数,且在对无主键表执行update/delete操作前没有将无主键表的复制标识符设置为完整模式(full)
解决方案
1.KES数据库不支持自动记录无主键表的oldTuple功能
a)在flysync.ini文件中添加autoIdentify参数
配置使用方法
property=replicator.extractor.dbms.autoIdentity=none
取值:
none:
保持原有的行为,如果无主键,提示告警,不解析UPDATE和DELETE
index:
如果有上无主键,但是有非空的唯一索引,就在非空的唯一索引上加附加日志
如果无主键有唯一索引,但索引没有非空约束,提示告警,不解析UPDATE和DELETE
如果无主键无唯一索引,但有非空约束,提示告警,不解析UPDATE和DELETE
full
如果有上无主键,但是有唯一索引,就在表上加唯一索引
如果无主键也无唯一索引,则为所有列加附加日志
b)若未配置a)中的KFS参数,则在update/delete操作前将无主键表的复制标识符设置为完整模式(full)
ALTER TABLE YourTableName REPLICA IDENTITY FULL;
2.KES数据库支持自动记录无主键表的oldTuple功能
a)将数据库参数log_supplement_replica_identity配置为auto,然后重启数据库使其生效
在kingbase.conf文件中,修改/添加参数log_supplement_replica_identity=auto
3.若未配置a)的参数,则按照“1. KES数据库不支持自动记录无主键表的oldTuple功能”中的方法进行处理
更多信息,参见https://help.kingbase.com.cn/v8/index.html