tikv打label时报错,版本:5.1.1

【 TiDB 使用环境】
【概述】:场景 + 问题概述
我们在生产上,按上面来调整两地三中心时遇到几个问题
1,» config set location-labels dc,zone,rack,host
Failed to set config: [400] “cannot to update replication config, the default rules do not consistent with replication config, please update rule instead”
出现这个报错,在参考在原实例上进行TiKV扩容的问题 - #3,来自 qwjcool 帖子中的需要先设置
config set enable-placement-rules “false”
却又又下面的报错
» config set enable-placement-rules false
Failed to set config: [400] “cannot disable placement rules with TiFlash nodes”

2,其中有tikv节点出现Disconnected状态,tikv日志中报错如下:

【背景】:做过哪些操作
【现象】:业务和数据库现象
【问题】:当前遇到的问题
【业务影响】:
【TiDB 版本】:
v5.1.1
【附件】:

哪个版本的问题~

有tiflash 不能修改
set enable-placement-rules 为 “false”

那要如何config set location-labels dc,zone,rack,host呢?

刚试了下我的5.2.3版本true也没问题,pd-ctl config placement-rules show 看下
$ pd-ctl config set location-labels dc,zone,rack,host
Success!
]$ pd-ctl config show
{
“replication”: {
“enable-placement-rules”: “true”,
“isolation-level”: “”,
“location-labels”: “dc,zone,rack,host”,
“max-replicas”: 3,
“strictly-match-label”: “false”
},

版本?

5.1.1

是的,我们测试环境也没有问题,下面是测试环境的
测试环境是v5.2.2

pd-ctl config placement-rules show , pd-ctl config show all 和测试环境对比下

生产
image

测试
image

其他看不出来区别啊

新发现,生产环境中tiflash访问pd时,有两个访问不通。
原来是3个pd,后面新加了两个,现在是tiflash访问新加的这两个pd不通。

上面的这些报错与tiflash访问pd不通是否有关?

tikv/tidb和新加的pd通吗

都是通的

我一个个telnet试的时候,发现tiflash对新加的这两个pd不通

把tiflash和pd的网络弄好了再试试,以前也碰上过非leader的pd有问题导致tikv不正常的情况

现在防火墙都开通了,但是在打label时还是报错
» config set location-labels dc,zone,rack,host
Failed to set config: [400] “cannot to update replication config, the default rules do not consistent with replication config, please update rule instead”

» config set enable-placement-rules “false”
Failed to set config: [400] “cannot disable placement rules with TiFlash nodes”

现在拓扑和 label 逻辑是怎么样的 ?现在希望在有 tiflash 情况添加两地三中心的拓扑吗 ?

下面是我们计划做的
replication.location-labels: [“dc”,“zone”,“rack”,“host”]

tikv_servers:

  • host: xx.xx.xx.xx
    config:
    server.labels: { dc: “beiyan”, zone: “beiyan1”, rack: “beiyan1”, host: “134” }
    server.labels: { dc: “beiyan”, zone: “beiyan1”, rack: “beiyan1”, host: “141” }
    server.labels: { dc: “beiyan”, zone: “beiyan1”, rack: “beiyan1”, host: “179” }
  • host: xx.xx.xx.xx
    config:
    server.labels: { dc: “beiyan”, zone: “beiyan2”, rack: “beiyan2”, host: “154” }
    server.labels: { dc: “beiyan”, zone: “beiyan2”, rack: “beiyan2”, host: “157” }
    server.labels: { dc: “beiyan”, zone: “beiyan2”, rack: “beiyan2”, host: “158” }
  • host: xx.xx.xx.xx
    config:
    server.labels: { dc: “shunyi”, zone: “shunyi1”, rack: “shunyi1”, host: “67” }
    server.labels: { dc: “shunyi”, zone: “shunyi1”, rack: “shunyi1”, host: “75” }
    server.labels: { dc: “shunyi”, zone: “shunyi1”, rack: “shunyi1”, host: “86” }
  • host: xx.xx.xx.xx
    config:
    server.labels: { dc: “shenyang”, zone: “shenyang1”, rack: “shenyang1”, host: “108” }
    server.labels: { dc: “shenyang”, zone: “shenyang1”, rack: “shenyang1”, host: “111” }
    server.labels: { dc: “shenyang”, zone: “shenyang1”, rack: “shenyang1”, host: “132” }

下面是edit-config中配置

我们再看一下tikv,以两台为例吧

现在有个tiflash,但是没有用到,奇怪的是,我们测试环境中set location-labels是可以的,测试环境中也有台tiflash,区别是生产版本是v5.1.1而测试环境是v5.2.2

1.官网有注意事项说明,开启 Placement rules 之后(一般早期版本包含 tiflash 节点会开,新版本已默认开启),location-labels 不再生效。所以在 5.1.1 上已有集群需要补打 label,需要使用 placement rules 接口实现,详细请参考官网 https://docs.pingcap.com/zh/tidb/v5.1/configure-placement-rules#规则字段

2.新版本,也就是 5.2 以上版本,支持 max-replica 和 location-labels 和 placement rules 之间的双向同步了,所以你的测试环境中使用 set location-labels 是可行的,但是生产环境中 5.1.1 版本使用 set location-labels 不可行。

温馨提示:5.0 以后发版是按照火车发版模型,5.0 5.1 5.2 可能 feature 差距较大,强烈建议测试环境和生产环境版本保持一致哈~

3 个赞

那我们现在可以直接升级到v5.2.2版本吗?因为已经做了部分调整,不知道这些调整会不会对升级有影响?