mysql-tidb数据在线一致性对比

【 TiDB 使用环境】
linux

【概述】 场景 + 问题概述

【背景】 做过哪些操作

【现象】 业务和数据库现象

【问题】 当前遇到的问题

【业务影响】

【TiDB 版本】
4.0.13

有没有大佬做过tidb-mysql的数据在线一致性对比,官方的工具是非在线的,通过pt也暂时没有实现,会有一些报错

来自:@jinxianqi 的回复
假设MySQL主库是A,从库是B,然后从B向tidb同步数据。
检验时,临时停掉B的复制,然后使用tidb官方检验工具进行检验,这样就间接的实现了在线一致性检验。
其实和实时也差不多了,达到目的了。

@db_user 的回复是: 我的是mysql a-tidb c
然后mysql a - mysql b -mysql d,这样做的目的是我要实现平滑迁移,mysql a,b是在线业务不能停,d是要废弃的业务,不能做源头

@jinxianqi 老师你们沟通一下

我的是mysql a->tidb c
然后mysql a ->mysql b,这样做的目的是我要实现平滑迁移
a,b读写分离,业务不能停,请问老师还有别的办法么

答复1:
新搭建一个从库d,然后从d同步到tidb c,校验数据之前临时停掉 d 的主从复制,用下面工具工具检验mysql和tidb之间的数据一致性
https://github.com/pingcap/tidb-tools/tree/master/sync_diff_inspector

答复2:
下面是晓光老师的答复:
如果业务表里有时间字段的话可以做一些额外的开发工作接入 MySQL binlog 来做数据一致性验证。拿到 binlog 后按照主键做 key 打到有足够多 partition 的 Kafka 或者 Pulsar 里,写消费者消费 Kafka 里的数据和 TiDB 中的数据进行比对。如果 MySQL 的数据时间戳更新并且同 TiDB 的其它字段数据对不上的话,就等待一段时间重新比对,如果持续等待时间超过一定阈值则报警并记录不一致数据然后继续校验下一行数据。在写入量低谷的时刻校验的 lag 足够短的时刻可以短暂停写然后切主操作。

2 个赞

已沟通并回复

感谢老师~

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