【TiDB 使用环境】开发环境
【TiDB 版本】新集群A: v8.1.2,旧集群B: v7.1.5
【操作系统】ubuntu20.04
【部署方式】云上部署(腾讯云)/ 单个数据节点配置16核64G内存
【集群数据量】4GB
【集群节点数】 A和B集群 均是 1个monitor节点 + 3 个tidb-server/tikv/tiflash数据节点(3个tidb3个tikv3个tiflash共用3个数据节点), A集群的3个ticdc服务是部署在B集群的3个数据节点上。
【问题复现路径】
1、业务流量先是使用的旧集群B,然后新集群A是新部署的v8版本,没有数据;
2、关闭新旧集群的GC,调整tidb_gc_life_time和tidb_gc_run_interval时间为1h,用br将旧集群B的全量数据导入新集群A,执行一次sync-diff-inspector,新旧集群数据一致。在旧集群部署ticdc和创建changefeed,同步增量数据到新集群。数据将业务流量切换到新集群,然后停掉旧集群的tidb-server、停掉changefeed、停掉ticdc。
3、开启旧集群的tidb-server,在新集群部署ticdc服务,创建新集群到旧集群的changefeed,等checkpoint ts到当前时间,同步任务状态为normal, 然后获取旧集群里的tidb_cdc.syncpoint_v1表里最新的primary_ts和secondary_ts 配置到sync-diff-inspector的上、下游时间戳配置里。
4、开启新旧集群的GC
【遇到的问题:问题现象及影响】
1、新集群到旧集群的sync-diff-inspector校验结果总是显示有三个表(这三个表的数据量分别是百万级、十万、千,表名称后缀_audit)的数据新旧集群不一致。
2、即使手动执行了sync-diff-inspector给出的fix-on-downstream目录里这三个表的修复sql,过一会儿还是会出现数据同步不一致,甚至出现执行过的sql补入数据在旧集群表里又丢了。
【资源配置】
新集群:
【复制黏贴 ERROR 报错的日志】
新集群cdc的日志:没有明显错误
旧集群tikv有很多这种日志: