- 【TiDB 版本】:v3.0.5
- 【问题描述】:在 pd-ctl 中将某个 TiKV 节点设置为
Offline
状态后,该节点仍然会成为相关 region 的 follower,而且下线很长一段时间也无法变更为tomestone
状态
确认集群有几个 TiKV 节点,默认三副本下,集群三个 TiKV 节点,下线某个 TiKV 后无法变更为 tombstone 状态;如果有多于三个 TiKV,检查 PD 是否存在其他 TiKV 的 evict 调度策略,另外如果有 region 存在缺少多数副本的情况也会导致无法调度。
10 个节点缩减成 7 个,之前并没有 evict 调度策略的。
region 存在缺少是通过哪个指标来判断?region_balance_ratio
?
目前 leader_balance_ratio
和 region_balance_ratio
均为 100%
miss-peer-region-coount
为 31
1、检查是否有多副本或者少副本可以通过 pd-ctl 相关的命令查看
2、使用 pd-ctl 查看下各个 store 当前的状态
3、pd 监控面板 region health 、Scheduler(整个面板),包括 delete store 前后的时间段的监控情况请提供下
是有几个 miss-peer 存在下线的节点中
请提供下上面提到的相关信息
当前的 store 状态:
最近一段时间的 region_health
状态,上升的曲线是开始执行 store delete {store-id}
下面是 Schduler 面板的部分信息,其中 evict-leader 三个策略是刚刚手动增加的
1、因为屏蔽了 ip 和 store id ,请确认下,在 scheduler 面板中的 balance leader movement 和 balance region movement 是否都是在将下线节点的 leader 或者 region 向非下线的 7 个节点调度。
2、“其实 evict-leader 三个是刚刚手动增加的”,这句话是什么意思?是说手动的添加了 evict-leader 的调度吗?请使用 pd-ctl 命令查看下当前环境中的 scheduler show 情况,参考命令如下:
https://pingcap.com/docs-cn/stable/reference/tools/pd-control/#scheduler-show--add--remove
3、使用 pd-ctl 命令查看下各个 store 中 leader 和 region 数量,参考命令如下:
没有任何一个下线节点在执行 balance leader movement
,有两个下线节点在执行 balance region movement
evict-leader
调度是我手动加上的。下图是当前的所有 scheduler
至于 store 的 leader 和 region 数量,下线的三台节点,其中两台已经无 leader
,剩余一台还有 200 来个,正常的节点 leader
数量是在 50k 左右。下线节点的 region
数量保持在 10k 左右,正常的节点 region
数量是 120k 的样子。
1、此次下线节点是 1,4,5 吗?
2、从上面的信息来看,请使用 pd-ctl region check miss-peer 看下是否有缺少 peer 的 region
3、可以观察下,下线 store 的 leader 和 region 数量是否在逐渐减少。如果在逐渐减少,表示调度还在进行。此处也可以看下 pd 监控面板的 operator 部分或者 scheduler 部分。如果想要加速调度,可以参考下述文档:
https://pingcap.com/docs-cn/stable/reference/best-practices/pd-scheduling/#节点下线速度慢
是这批 id。下线的节点中有缺少 peer 的 region,主要是在 id = 1 和 id = 5 的 store 上。
region 数量缩减得非常缓慢,基本可以忽略不计。
1、先将缺少 peer 的 region 手动的补充 peer,因为在缺失 peer 的情况下,也会影响下线调度。add peer 的命令可参考:
https://pingcap.com/docs-cn/stable/reference/tools/pd-control/#operator-show--add--remove
2、另外检查下剩余 online 的 7 个 store 磁盘空间是否充足,是否已用空间超过了 80%
3、当前环境中 empty region 较多 18w+,在下线 store 时,可以暂时关闭 region merge,减少 region merge 对下线的影响。节点下线完成后,再开启。关闭方式请参考:
https://pingcap.com/docs-cn/stable/reference/tools/pd-control/#operator-show--add--remove
4、如果是下线速度慢,那么可参照下述连接适当调整参数,加快下线:
https://pingcap.com/docs-cn/stable/reference/best-practices/pd-scheduling/#节点下线速度慢
即使将所有的 miss-peer
修复了并停止 region merge
行为,整体基本也没什么进展。
而且有个很奇怪的现象,其中的某个 store 启用了 evict-leader-scheduler
,依然有 200 多个 leader 一直保持着在该节点上。
尝试用 pd-ctl operator add transfer-leader 命令 transfer 某个 leader 看是否能成功, 并用 operator show admin 查看当前的调度是否正常,如果异常,region 命令检查下该 leader region 的三副本的分布和状态是否正常。
手动增加 transfer-leader
操作可以瞬时将某个 region
的 leader
进行迁移。
当前查看 operator
的调度状态,并没有看到任何的 transfer-peer
或者 transfer-region
操作。
好奇对于下线 TiKV 节点还有没有别的更粗暴点的办法?
默认三副本并且不存在缺少副本的情况下,如果关闭其中一个 tikv,该 tikv 上的 region leader 在选举时间超时后会在其他 tikv 的 region 上选出新 leader,且默认三十分钟后会在其他 tikv 上补充缺少的副本,如果 region 数量比较多,比如每个 tikv 上有数万个 region,扫描这些 region 需要花费较长时间,可能影响补副本或调度的速度,如果希望更快的下线,可以调大相关的调度参数或手动执行调度操作。
直接关闭某个 TiKV 的话,最终 PD 状态会从 Offline
变更为 Tomestone
么