金仓KingbaseFlySync 高可用功能-断点续传功能配置与说明

133 阅读2分钟

关键字:

KingbaseFlySync、KFS、同步程序、replicator、高可用、断点续传、KUFL

1.名称解释

KUFL:KingbaseFlySync以统一的数据存储格式存放数据操作信息的中间文件 KDTS:金仓数据传输服务(Kingbase Data Transformation Service) oldestLSN:表示KFS上次解析源端数据时未提交事务的最开始位置 commitLSN:表示KFS上次解析源端数据时已提交事务的最新位置

2.功能描述

KingbaseFlySync从源端数据库解析数据过程中,不可避免的会因为某些异常而停止解析(如服务器掉电、数据库异常、网络异常等)。针对这样的异常场景,KingbaseFlySync提供断点续传的功能,可以从特定断点处继续解析,从而保证KFS不重复解析数据、不漏解析数据,从而保证源端数据库和目标端数据库的数据一致性。

3.断点续传原理简介

KingbaseFlySync在解析数据时,会在KUFL和中间表中记录oldestLSN、commitLSN,并以此来保证KFS从异常中恢复后数据的完整性。

3.1断点记录规则

图片.png 如上图,假设当前的oldestLSN是1: 当事务3读取完后,commitLSN则为5,此时KFS记录断点信息则为1:5; 事务4读取完后断点信息更新为1:6; 当事务1读取完后,oldestLSN向后浮动,所以此时断点信息为2:7。

3.2断点续传规则

源端解析时 源端服务器修复并重启KingbaseFlySync后,KFS会优先从KUFL中获取断点信息(如果KUFL为空,则从KFS的中间表中获取断点信息),然后从源端数据库的指定断点继续进行解析。 从KUFL获取断点信息: 图片.png

  • 从中间表获取心跳信息: 图片.png
  • 目标端从源端获取KUFL时 目标端服务器修复并重启KingbaseFlySync后,KFS会优先从KUFL中获取断点信息,再定位到需要继续拉取的KUFL的seqno,然后从指定的seqno开始、从源端拉取KUFL到本地。
  • 目标端入库时 目标端服务器修复并重启KingbaseFlySync后,KFS会从中间表获取到已经入库完成的KUFL的seqno,然后从下一个seqno开始继续入库。 图片.png

4.从指定断点解析

KingbaseFlySync还支持从指定断点解析,主要应用场景包括:

  • KFS初始化:KFS初始化时,可以设置开始解析的断点
  • 不停机迁移场景:通常是使用KDTS或其它的方式从指定断点处将存量数据整体搬迁到目标端,然后使用KFS从指定断点处同步搬迁过程中增加的数据 具体效果如图: 初始化解析的数据: 图片.png

重置后从指定断点解析的数据: 图片.png