关键字:
KingbaseFlysync、KFS、同步程序、replicator、高可用、跳过异常事务
1.功能描述
KingbaseFlySync replicator目标端在实际运行过程中,可能会遇到一些阻塞同步的异常,造成的原因可能有:
- 客户误操作造成
- 前期需求统计疏漏造成
- 目标端数据库有存量数据造成
- KingbaseFlySync功能有缺陷
- 服务器磁盘空间不足/IO异常造成 ………… 这些异常如果需要从根本上解决,通常需要花费大量时间,此期间KingbaseFlySync将不能正常工作,可能会造成源端数据库数据和目标端数据库数据大量不一致。 针对此类场景,KingbaseFlySync提供了跳过异常事务的功能,先快速恢复数据同步,然后再根据跳过事务中的实际异常情况,人工在目标端采用对应措施进行修复。
2.使用介绍
KingbaseFlySync跳过异常事务功能适用于所有的数据库,具体的使用方法如下: 假定flysync.ini中配置的服务名是:servicename A、通过fsrepctl –service servicename status查看具体的报错seqno B、通过kufl -service servicename list -seqno XXX查看该事务中具体的信息 C、根据实际情况,跳过整改事务或跳过事务中的指定sql
- 跳过整个事务 fsrepctl -service servicename online -skip-seqno XXX
- 跳过事务中指定的SQL fsrepctl -service servicename online -skip-seqno XXX -frag-sql x1_y1,y2:x2_y2,y3 注:frag-sql是kufl中的分片(KingbaseFlySync有大事务拆分功能,可以将大事务拆分为多个分片,用以提高性能), -frags-sql 0_1,3-6:2_5是指跳过分片0中SQL编号为1、3、4、5、6和分片2中sql编号为5的sql
注:跳过异常事务功能,虽然保证了实时同步业务的连续性,但是会导致源端、目标端数据库数据不一致。针对此问题,KingbaseFlySync提供了数据比对修复方案,通过比对源端、目标端数据库的数据差异,然后进行修复,从而保证源端、目标端数据库数据的一致性。
3.示例
1、跳过整个事务
A、查看错误状态
B、跳过指定报错的事务:fsrepctl -service s_kes_3112 online -skip-seqno 0
C、查看目标端状态:
2、跳过事务中的指定sql
A、查看错误状态
B、查看kufl中指定的sql
C、跳过事务中的指定sql:fsrepctl -service s_kes_3112 online -skip-seqno 1 -frag-sql 0_0-9:1_0
D、查看目标端最终状态