使用 BR 恢复备份新起一个集群后,binlog 同步后条数不一致

【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5.0
【复现路径】做过哪些操作出现的问题
这边是在云上有一个实例 TiDB,现在想自建一个 TiDB 集群,利用云 TiDB 备份的数据进行 BR 恢复新起了一个 TiDB 集群。然后按照 BR 恢复完成后的 [BackupTS=440998830574141450] [RestoreTS=441006517827928066] [total-kv=11929595697] [total-kv-size=1.623TB] 其中的 BackupTS 作为 binlog 同步的 CommitTS,但是看到某个表的数据还是相差了 6k ,请问是我作法哪里有问题吗?还是说新集群的 tidb_gc 参数要调时间长一些,现在都是默认的参数。怎样可以将数据完整的迁移过来呢

还是说在同步中是缓慢恢复的?因为云 TiDB 实例备份是四点完成,我刚查询凌晨四点至早上九点的某个表数据从 15 条到现在到了 17 条,按道理是不会有增长的。是因为还在恢复吗

集群有业务的话,需要根据binlog给的TSO进行数据比对,你可以看一下tidb_binlog下的checkpoint表中的TSO目前同步到了什么状态,在有业务的情况下数据有差异很正常,通过sync-diff进行指定时间点做数据比对会更好一些。

1 个赞

是用 binlog 设置 commitTS 时应该用 /checkpoints/checkpoint.lock 下的 lock-id 是嘛。再用 sync-diff 工具对某一个时间段恢复

不是,binlog是增量同步工具,sync-diff是数据校验工具

我意思你可以看,binllog在增量的同步时候,会在下游创建一个tidb_binlog库,然后下面有个checkpoint表,看一下这个表的commit-ts值,然后转换成正常时间看一下是否跟当前时间差不多,然后用里面的primary-ts值和secondary-ts值做上下游的数据比对

为什么不用ticdc,tidb binlog从5.X开始就已经有不兼容的参数了。。。

binlog 是不是在备份之前就已经开启了,如果没有开始,可能存在丢数据

谢谢,用 sync-diff 校验恢复了

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。