为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
- 【TiDB 版本】:v4.0.7
- 【问题描述】:4.0.7 升级到 4.0.8 时 tikv 一直等待: Still waitting for 1 store leaders to transfer…
tikv.log
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
tikv.log
这是正常的日志,滚动升级过程中,为了防止避免对集群产生大的影响,在关闭一个 tikv 节点之前,会将这个 tikv 节点上的 leader 迁移到别的 tikv 节点上,等 leader 迁移完成之后再关闭重启这个 tikv 节点。 这个是在检测 tikv 节点上的 leade 是否已经全部迁移完成,如果迁移完成则可以重启。默认是是等待 300s 。可以通过 --transfer-timeout
参数控制。如果达到超时时间还没有迁移完 leader 会直接关闭 TiKV 进程。
在等待 111 节点迁移 leader 的时候,剩余 1 个 leader 无法迁移走,这个需要当时通过 pd-ctl 看下这个 stoer 剩余的 region 信息以及通过 pd leader 日志看下对应 region 的操作。
迁移不走 leader 这个正常是不会影响升级操作的,看集群信息还没有升级到 v4.0.8 这是因为 tiup cluster upgrade 报错了,还是人为取消了升级操作?
剩余 1 个 leader 一直无法迁移走,卡住1个多小时了
一直卡这就取消升级了,改成 强制升级了
如果下次升级的时候还是出现这个问题的话,可以在当时通过 pd-ctl 看下这个 stoer 剩余的 region 信息以及通过 pd leader 日志看下对应 region 的操作日志,确认一下 leader 一直没有迁移的原因。
然后根据 region id 的信息看下 pd leader 节点的 pd.log 日志以及 tikv.log 看下操作情况
拿到 store 上剩余的两个 region 的 id ,然后根据 region id
grep ‘region_id=xxxx’ 的方式将对应的 region 操作日志过滤一下,拿一下过滤之后的文本信息吧
pd-ctl 执行 region store x 的结果也可以贴一下
tiup ctl pd -u 192.168.1.102:2379 -i 连接 pd
>> stores 查看所有 store 节点的信息,根据 IP 找到正在迁移 leader 的 store 对应的 store_id
>> region store ${store_id} 看下迁移 leader 的 store 上剩余的 region ,看下对应剩余 leader 的 region id
根据 region_id=xxx 过滤 pd.log 以及 tikv.log 日志
另外补充一下 pd-ctl 执行 stores 以及 config show all 的结果
store id为:2552676。执行 store 2552676 结果如图:
执行 region store 2552676 的话显示的结果非常多,无法看到剩余的region
pd-ctl 执行一下
>> region --jq=".regions[] | {id: .id, leader_store_id: .leader.store_id | select(.==2552676) }"
并根据结果的 id 执行一下
region ${region_id}
yum install jq 安装一下这个命令可以么