kv打上标签,pd修改副本数不生效

【TiDB 版本】4.0.9

【问题描述】将tikv由3节点扩容为6节点后,等待平衡完毕,然后通过pd-ctl设置了location-labels
pd-ctl config set location-labels dc,rack,host
同时,通过tiup cluster 设置了每个kv的config
config:
server.labels:
dc: d2
host: h6
rack: r6
然后通过pd-ctl设置max-replica=6(之前为3)
config set max-replicas 6
发现没有任何反应,region副本没有补齐,tikv日志没有变化,仅在pd-ctl的store信息中看到一个奇怪的本地kv:


其他节点的region数没有变化,推测为更改的副本数和标签均未生效,重启群集后依然不生效,想请教下老师是哪里出问题了,感谢!

看一下每个store的label标签是否不一样, 然后从这个贴图看到这个store的状态是down的状态呢。
也进入 tiup ctl:v4.0.12 pd -u http://pd_ipaddress:pd_port -i , 看一下config show的返回结果,看看调度是否正常

标签是不同的,down是因为我只截了有问题的那个,调度等分别如下:



另外三台的tikv的label 是 什么呢

你把所有的tikv的label, dc都设置为d1
label的规划可以看一下该文章

dc没关系啊,副本数现在是6,只有rack和host是6>=副本数生效。dc分为1和2只是我们逻辑方便,tidb又不认

嗯嗯,pd-ctl里面看一下每个tikv的label是不是预期的。
pd-ctl里面也看一下scheduler show 有没有调度限制。

pt-ctl里面kv是没有标签那一栏的 和上面截图那样
scheduler应该也没有限制
image

region的调度是通过pd进行,如果pd-ctl里面没有看到标签可能会有问题。
参考一下文档,在pd-ctl进行 > store label xx xxx 设置一下

https://docs.pingcap.com/zh/tidb/v4.0/pd-control

pd-ctl的label是有设置好的内容的,但是store的信息里面没有:
» label
[
{
“key”: “rack”,
“value”: “r4”
},
{
“key”: “host”,
“value”: “h4”
},
{
“key”: “dc”,
“value”: “d2”
},
{
“key”: “rack”,
“value”: “r1”
},
{
“key”: “host”,
“value”: “h1”
},
{
“key”: “dc”,
“value”: “d1”
},
{
“key”: “rack”,
“value”: “r2”
},
{
“key”: “host”,
“value”: “h2”
},
{
“key”: “rack”,
“value”: “r3”
},
{
“key”: “host”,
“value”: “h3”
},
{
“key”: “rack”,
“value”: “r5”
},
{
“key”: “host”,
“value”: “h5”
},
{
“key”: “rack”,
“value”: “r6”
},
{
“key”: “host”,
“value”: “h6”
}
]

另外dashboard里面可以看到群集已经认可了label:

我们现在的问题是3kv扩容到6kv后,3副本改为6副本,并把kv打上标签(6副本6host),拓扑结构已经和标签一致,但是6个副本并没有补齐,也没有观察到补齐的过程,期望中的应该是6个kv上的region数一致并且单个上的region和3副本3kv的单个kv上的region数相同

额这么奇怪么, 应该pd-ctl里面store输出的标签和 dashboard的标签一致的呢:joy:
还是试试把store输出的label加上吧


https://docs.pingcap.com/zh/tidb/v4.0/troubleshoot-tiflash#tiflash-副本始终处于不可用状态

谢谢老师,已经添加为6副本成功了,和预期一样
还想请教下,这里面的count就是副本数的话,例子中
image
这个5副本的情况,该怎么理解,rule1和rule2怎么对应kv节点呢,store的信息中似乎不包含group_id和id的信息

感觉他应该加个label_constraints就好理解了,比如:
[
{
“group_id”: “pd”,
“id”: “d1”,
“start_key”: “”,
“end_key”: “”,
“role”: “voter”,
“count”: 3,
“label_constraints”: [
{“key”: “dc”, “op”: “in”, “values”: [“d1”]}
],
“location_labels”: [“dc”,“rack”, “host”]
},
{
“group_id”: “pd”,
“id”: “d2”,
“start_key”: “”,
“end_key”: “”,
“role”: “follower”,
“count”: 3,
“label_constraints”: [
{“key”: “dc”, “op”: “in”, “values”: [“d2”]}
],
“location_labels”: [“dc”, “rack”, “host”]
}
]
这样就是2个机房6kv6副本,且其中一个机房的3个kv不成为leader
然后将6个stroe分为2批各2个dc,6rack,6host即可

关于 placement rule 的解释可以参考下这个文档:https://docs.pingcap.com/zh/tidb/stable/configure-placement-rules