设置 isolation-level

新部署一套集群,单机多实例部署,当前有四个 label :zone、dc、rack、host,有什么好的方法实现 同一个 Region 的 Leader 以及 follower 不同时出现在一个交换机的一个机器上面

ps:已经尝试设置多层 isolation-level ,但是不行

1 个赞

https://docs.pingcap.com/zh/tidb/stable/schedule-replicas-by-topology-labels#设置-pd-的-location-labels-配置

1 个赞

错误信息指出 isolation-level 的值必须是 location-labels 中定义的一个标签,或者为空。是一个噢

1 个赞

1 个赞

确实是这样,看文档只能设置标签中的一个

2 个赞

其实用 label 就够了。虽然是软限制。

我们有这样的一个场景的需求,3副本:
单机多实例的业务场景下,隔离级别需要设置成 host,因为需要避免同一个 region 的leader 和 follower 同时出现在一个主机上,如下图:

但是对于上游链路来说,同一个交换机可能管理多个主机,如果需要 region 的高可用一个 host 是不符合需求的,如下图:

那么能想到的解决方案如下:

  1. 业务侧自行控制 host 和 rack 的对应关系,避免一个交换机管理多台 tikv host
  2. 当交换机调整后,变更 host 的 label (需要 4 个主机)

所以想确认一下是否有 rack,host 的隔离级别

1 个赞

label 可以陪着多层。
pd 陪着 和 一律 配置即可。
比如你 pd 和 tikv label 配置:
pd: label : jijia, host
tikv :
jijia1,host1
jijia2,host2
jijia3,host3

只要 jijia 这个 label 符合 节点数大于副本数需求,就会先按照 jijia 来分配 region 副本。
你可以认为就是个 group by jijia,host.

1 个赞

我的意思是,如果有机架变更,那么 tikv 要重新打 label,而重新打 label 则有可能导致一个 region 出现在同一个交换机下,隔离在 host 上就有问题了,解决方案如上,所以 tidb 的隔离不能设置两个吗?
tikv :
jijia1,host1
jijia1,host2
jijia3,host3

你截图中不需要配置 level。按照 label 走就行了吧。

1 个赞

pd-ctl config set isolation-level rack

pd-ctl config set location-labels zone,rack,host

结帖,经过验证发现只设置local-label:zone、dc、rack、host,isolation-level 为空,也可以满足 region 的 Leader 和 Follower 均衡分布,不会出现同一个交换机的不同机器上同时存在 L 和 F 的现象(假设出现,该交换机宕机,则无法从该 Region 读取数据)

3 个赞

请问同一交换机的标签是设置在zone、dc、rack的那层?dc吗?
另外,tidb节点有做相同的标签吗?tidb做了标签之后,可以避免跨交换机访问tikv吗?

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