关键字:
KingbaseFlySync、KFS、同步程序、replicator、高可用、错误处理、flysync.ini
1.功能描述
KingbaseFlySync是一种能够在异构数据平台间实现实时、增量数据同步的产品。replicator在目标端数据入库时,不可避免的会遇到各种入库异常场景(可能是技术人员误操作、软件缺陷等),这些异常可能会导致入库中断,进而影响源端和目标端的数据一致性。
针对此类场景,KingbaseFlySync提供了一种精细化配置错误处理策略的方案(仅覆盖到不同故障的处理策略,不涉及数据的冲突处理):针对DML入库异常,可以设置默认处理策略,也可以设置单表的错误处理策略;不同的表还可以根据错误类型设置不同的处理策略。
2.配置使用方式介绍
A、flysync.ini中配置如下:
property=replicator.applier.dbms.enable_handle_error=true
property = replicator.applier.dbms.failure_policy_file=/home/hes/slavenode/filters-config/failure_policy_code.json
B、配置文件中配置如下:
{
//全局的默认处理策略
"DEFAULT": "STOP",
//配置public模式下的任意表
//23505错误采用DISCARD_ROW策略
//42P01错误采用IGNORE_TRANSACTION策略
"pulic.*":{"23505":"DISCARD_ROW","42P01":"IGNORE_TRANSACTION"},
//配置mytest.test表,42703错误采用IGNORE_ROW
"mystest.test":{"42703":" IGNORE_ROW "}
}
匹配优先级为:
如果配置文件中配置了该表的、指定该类型错误的处理策略,则使用该策略处理;
否则使用默认的全局处理策略
C、KingbaseFlySync支持的策略如下:
STOP : 默认处理方式,遇到错误停止继续入库
IGNORE_ROW : 忽略事务中报错的sql
IGNORE_TRANSACTION :忽略整个事务
DISCARD_ROW :将报错信息打印到日志文件,并跳过报错的SQL
DISCARD_TRANSACTION :将报错信息打印到日志文件,并跳过整个事务
注:日志文件的路径为{$repolicator目录}/ flysync/flysync-replicator/log/{flysync.ini中服务名}/discard.log_0000000001
3.使用示例
本示例中,通过配置错误处理,对public模式下的所有表,如果目标端入库时报主键冲突(错误码:23505),则按照DISCARD_ROW的策略跳过错误;如果目标端入库时报表不存在(错误码:42P01),则按照DISCARD_TRANSACTION策略跳过错误。具体示例截图如下:
A、flysync.ini中配置

B、failure_policy_code.json文件配置示例

C、输出日志:





