求问pd监控里的问题


这里面的none跟host:unknown分别代表什么

集群本来是没有用label调度,之前修改增加了label调度

什么版本号?

v4.0.0

一般情况下 label 的问题都可以通过 PD Dashboard -> cluster -> Region label isolation level 来检查是否满足所需要的隔离级别。

  • none:表示没有隔离
  • 假设 PD 配置了 zone,rack,host,那么这里如果出现了 zone,就表明存在 Region 的两个 peer 在同一个 rack 内;同理如果出现了 rack,则表明存在 Region 的两个 peer 在同一个 host 内。正常情况应该是所有的 Region 都在 host 级别被隔离。但调度的中间状态可能会导致少量的 Region 的隔离级别被破坏。看你的情况应该是 host 级别被隔离的吧。

之前没有打 label ,后面增加上的,不确定是否是监控历史记录未清理的原因,可以从 pd-ctl 中确认下 label 的信息有没有成功打上。

1 个赞


这里的【调度的中间状态】,怎么理解?调度的时候不是严格按照隔离级别调度的吗?

在 5.0 之前有可能有问题,5.0 之后引入 Raft Joint Consensus,基本上就没有问题了。

举个简单的例子,5.0 之前版本
原集群存在 TiKV1 TiKV2 TiKV3 三个节点,分别对应 label1 label2 和 label3,现在扩容一台 tikv4 节点,label 设置为 label3,假设 region2 迁移到新的 tikv4 节点上,首先是以 learner 的角色接入到 region group 中,数据同步完成后会变成 follower,如果此时发生网络隔离,对于 region2 来说就会存在一个 4 副本的危险状态,主要是因为引入 Joint Consensus 之前成员变更是单步变更

5.0 TiDB 引入的 Raft Joint Consensus 算法将成员变更操作中的 “添加”和“删除”合并为一个操作,并发送给所有成员,提升了 Region 成员变更时的可用性。可以参考下文档,有问题还可以继续交流哈~
https://docs.pingcap.com/zh/tidb/stable/release-5.0.0#whats-new-in-tidb-50

2 个赞

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