新建的表一会有一会没有

rollingback jobs 卡住.

跟这个帖子有没有关系呢

没有变化。但是出问题的时间内写入,在表存在的时候是可以正常写入的。目前不知道怎么复现

确实挺奇怪的,让我想到前几天有人发几个tidb执行计划不一样,感觉tidb有些元数据和统计缓存可能哪里出问题了

除了被删除 权限问题 TTL表 想不出有其他可能不能访问 出灵异事件么

1min30s 整,应该是走到了慢速 ddl 的逻辑,也就意味着走 etcd 快速变更那块有问题。

原理是这样的:ddl 的算法要保证,在 tidb1 上面执行了这个操作,tidb 2 3 4 … 上面都能看到最新的 schema 信息。有两种方式,一种是慢速路径,要求每个 tidb 去 load 最新的 schema,在一个 lease 时间内,schema 变更不会有两次。一个 tidb 不知道其它 tidb 是否使用了正确的 schema,但是它可以等待。其它 tidb 会在 lease 时间内加载最新的 schema,如果加载不到就自己停止服务。ddl owner 节点只要等完 lease 就可以执行下一个状态变更,并且一定是安全的。

另一种是快速路径,tidb 是无状态的,并不知道其它所有 tidb 节点的存在。不过我们使用了 etcd (pd 内嵌的),可以往 etcd 写消息,推送给其它 tidb,相当于 ddl owner 执行完变更后,就立即通过 etcd 确认其它 tidb 是否都获知了这次的 schema 变更,如果全部 tidb 都回应了消息,则可以走快速变更逻辑,不走 lease

lease 的默认时间如果我没记错应该是 45s,所以 1min30s 是两次的 lease , 走了慢速路径

4 个赞

:+1: :+1: :+1:

有点跑题了, 这个表都创建几天了, 但是其他tidb节点看不到,全部重启就恢复,这个很奇怪