label name 'host' is not specified in pd config (replication.location-labels: [])

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v4.0.7
  • 【问题描述】:WARN: there is something wrong with TiKV labels, which may cause data losing:
    10.99.35.235:20160:
    label name ‘host’ is not specified in pd config (replication.location-labels: [])
    10.99.35.235:20161:
    label name ‘host’ is not specified in pd config (replication.location-labels: [])
    10.99.35.235:20162:
    label name ‘host’ is not specified in pd config (replication.location-labels: [])

我是单机创建的集群如下:

tiup cluster display second_floor

Starting component cluster: /root/.tiup/components/cluster/v1.2.0/tiup-cluster display second_floor
Cluster type: tidb
Cluster name: second_floor
Cluster version: v4.0.7
SSH type: builtin
ID Role Host Ports OS/Arch Status Data Dir Deploy Dir


10.99.35.235:3000 grafana 10.99.35.235 3000 linux/x86_64 Up - /data/tidb-deploy/grafana-3000
10.99.35.235:3379 pd 10.99.35.235 3379/3380 linux/x86_64 Up|L|UI /data/tidb-data/pd-3379 /data/tidb-deploy/pd-3379
10.99.35.235:9090 prometheus 10.99.35.235 9090 linux/x86_64 Up /data/tidb-data/prometheus-9090 /data/tidb-deploy/prometheus-9090
10.99.35.235:4000 tidb 10.99.35.235 4000/10080 linux/x86_64 Up - /data/tidb-deploy/tidb-4000
10.99.35.235:9000 tiflash 10.99.35.235 9000/8123/3930/20170/20292/8234 linux/x86_64 Up /data/tidb-data/tiflash-9000 /data/tidb-deploy/tiflash-9000
10.99.35.235:20160 tikv 10.99.35.235 20160/20180 linux/x86_64 Up /data/tidb-data/tikv-20160 /data/tidb-deploy/tikv-20160
10.99.35.235:20161 tikv 10.99.35.235 20161/20181 linux/x86_64 Up /data/tidb-data/tikv-20161 /data/tidb-deploy/tikv-20161
10.99.35.235:20162 tikv 10.99.35.235 20162/20182 linux/x86_64 Up /data/tidb-data/tikv-20162 /data/tidb-deploy/tikv-20162
Total nodes: 8

对于这个集群我是通过edit-config做修改的,相关修改如下两个地方:
1,添加了replication.location-labels: [“host”]在reload后变成如下了
pd:
replication.enable-placement-rules: true
replication.location-labels:
- host
replication.strictly-match-label: true

2,tikv是通过不同端口做了三个如下:
tikv_servers:

  • host: 10.99.35.235
    ssh_port: 22
    port: 20160
    status_port: 20180
    deploy_dir: /data/tidb-deploy/tikv-20160
    data_dir: /data/tidb-data/tikv-20160
    config:
    server.labels:
    host: 10.99.35.235
    arch: amd64
    os: linux
  • host: 10.99.35.235
    ssh_port: 22
    port: 20161
    status_port: 20181
    deploy_dir: /data/tidb-deploy/tikv-20161
    data_dir: /data/tidb-data/tikv-20161
    config:
    server.labels:
    host: 10.99.35.235
    arch: amd64
    os: linux
  • host: 10.99.35.235
    ssh_port: 22
    port: 20162
    status_port: 20182
    deploy_dir: /data/tidb-deploy/tikv-20162
    data_dir: /data/tidb-data/tikv-20162
    config:
    server.labels:
    host: 10.99.35.235
    arch: amd64
    os: linux

在保存后退出,然后reload,完成后display出现上面的warn,我想问一下,这样修改是否是正确的,能否给出一个单机多个tikv带有label的样例?

已经设置tikv 和 pd 的 label ,如下
image

如果所有的 tikv 都部署在一台主机上就没有必要设置 label ,设置 label 的初衷就是为了让 tikv 尽可能在物理层面分散,PD 调度器根据 TiKV 的拓扑信息,会自动在后台通过调度使得 Region 的各个副本尽可能隔离,从而使得数据容灾能力最大化。

根据https://docs.pingcap.com/zh/tidb/stable/schedule-replicas-by-topology-labels#%E8%AE%BE%E7%BD%AE-pd-%E7%9A%84-location-labels-%E9%85%8D%E7%BD%AE中的描述,需要pd-ctl 工具进行在线更改。

我的集群已经初始化,所以需要在线更改,如下
tiup ctl pd -u 10.99.35.235:3379 config set location-labels host
tiup ctl pd -u 10.99.35.235:3379 config show
Starting component ctl: /root/.tiup/components/ctl/v4.0.7/ctl pd -u 10.99.35.235:3379 config show
{
“replication”: {
“enable-placement-rules”: “true”,
“location-labels”: “host”, 如果没有在线更改,这里是""
“max-replicas”: 3,
“strictly-match-label”: “false”
},

后面带来另一个小问题,在线更改后, “location-labels”: “host”,没有体现在配置文件中吗?
我通过edit-config打开配置文件并没有发现 “location-labels”: “host”,,如下
image

感谢反馈,请看下私信

还是要及时更新官方文档才行啊.
v4.0.7版本必须加上lable才能进行快速单机部署