PD TSO时间戳问题

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】
【遇到的问题:问题现象及影响】对于PD的TSO有点疑问,假如PD的三台机器的NTP时间没有对齐,主节点PD时间准确,follower时间延后,假如主节点故障后,follower变成主,TSO会变小吗? 这样数据会不会有异常
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

2 个赞

不会变小,分配的时候会和上一次作比较的,只能大不能小的。

1 个赞

不会 。因为 TSO 的全局版本号由物理时间和逻辑时间组成,即使从节点的物理时间较旧,逻辑时间仍会保持单调递增,不会出现异常数据。

TSO 时钟同步

PD 竞选成功后不能立即开始服务,需要确保分配的 ts 不能小于之前 leader 分配的 ts。首先 PD 会从 etcd 读出上一个 leader 可能分配过的最大 ts,接着检查本地时钟确保大于之前的 ts(如果不同 PD 之间时钟不同步,会需要 sleep 等待),最后再把当前时间+3s(可通过 tso-save-interval 调整)作为新的“可以分配的最大 ts” 持久化 etcd。

这一步的时间主要取决于时钟不同步的程度,如果正常开启 ntp 的话很快就能完成。

1 个赞

@TiDBer_jYQINSnf @forever @TiDBer_CQ 谢谢各位的解释

tso 这种逻辑时钟,保持单调递增,不会存在回退的可能的,
但是如果跨 中心部署的化,可能会出现时钟问题,一般都放在一个中心上,或者大多数节点pd再一个中心

不会的,这个设计的时候肯定会考虑这个问题

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