为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
- 【TiDB 版本】:4.0.x
- 【问题描述】:下列配置实现远程IDC副本不选为leader,底层是这么实现的?
拒绝异地机房 TiKV 的 Raft 副本选举为 Leader。
label-property:
reject-leader:
- key: “dc”
value: “sha”
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
拒绝异地机房 TiKV 的 Raft 副本选举为 Leader。
label-property:
reject-leader:
- key: “dc”
value: “sha”
通过打 label 的方式,TiDB 中可以通过 PD 设置实例的 label,用于定义这个实例在哪个区域、哪个机房、那个机架,哪个机器等。
让远程 IDC 不选举成为 leader 是通过 label 来实现的,通过实例上的 label 实例,判断是否要让这个实例上的 region 选举成为 leader
replication.location-labels: [“zone”,“dc”,“rack”,“host”]
定义了4个级别label
label-property:
reject-leader:
label-property:
reject-leader:
location-lable 可以根据自己的需要进行设置的,不一定强制是 zone/dc/rack/host
region 副本调度的时候,会按照 localtion-label 中标签的定义顺序作为优先级进行 region 调度。
选举的时候根据 reject-leader 设置的 label 决定副本是否需要选举成为 leader
选举的时候根据 reject-leader 设置的 label 决定副本是否需要选举成为 leader
这个我理解,比如reject-leader:key是DC,关键是这么知道那个DC是远程idc,即以哪个IDC为基础来判断其他IDC是远程,基于什么原理判断本地IDC、远程2个IDC,我们副本是idc1–2,idc2–2,idc3–1
这样我就明白了,但 跨数据中心部署拓扑这个章节没有你说的配置,能发个链接吗,我要好好研究一下,这个配置写在什么地方
pd:
schedule.leader-schedule-limit: 4
schedule.region-schedule-limit: 2048
schedule.replica-schedule-limit: 64
replication.location-labels: [“zone”,“dc”,“rack”,“host”]
replication.max-replicas: 5
label-property:
reject-leader:
- key: “dc”
value: “sha”
这种格式写,要这么加
label-property reject-leader dc dc3
这段配置,还有,DC是指最近的IDC,DC3是指最远的IDC吗,那本地IDC值在哪里?
DC 根据您机房的远近,自己分配名称就可以了