tidb集群升级

【 TiDB 使用环境】 生产环境
【概述】
从 v3.1.2 升级到 v4.0.12 失败
【背景】
使用tiup工具正常进行升级
【现象】
升级失败
【TiDB 版本】
v3.1.2
【附件】
tiup版本 : v1.8.0
升级命令 : tiup cluster upgrade cluster-name v4.0.12
升级异常信息:提示说tikv的data dir 有问题,可目前集群的正常目录就是这个


正常的tikv的目录就是报错中提到的:

1 个赞

感谢大佬的支持,我操作一下

我刚才看了一下,不能切换到tidb用户,因为当时这个集群部署的时候就是使用root用户进行的。这个改如何操作?

好的,感谢大佬的支持

3升级到4请按照文档操作进行,非默认目录要更改拓扑文件
https://docs.pingcap.com/zh/tidb/stable/upgrade-tidb-using-tiup/#使用-tiup-升级-tidb

可以看看这个实操文章,是否会有启发:基于阿里云ECS部署的TiDB 2.1.14升级到4.0.0-rc实践

感谢大佬的支持,那这个更改了拓扑文件后会对原集群的数据造成影响吗?

从ansible到tiup转换会有这个问题,之前也遇到,就是SSH参数问题,实际没多大影响,可以参考下https://asktug.com/t/topic/273860/2
visudo ##模式下打开,注释如下信息即可

#Defaults requiretty

感谢大佬的支持,目前的情景是 : 我们的这个 v3.0.12 的集群也是使用tiup进行部署的,:fearful:

正常来说是不会有的,但是最好还要备份下操作,请问是线上场景么,我理解你的目录是/home/tidb/deploy…这个吧,前面的那个目录是默认文件的目录,升级之后应该会按这个默认的文件走,所以你升级之前要先把这个文件改下

嗯,对就是这个情况,前面的那个 /home/tidb/data/tikv-20160 目录我看了一下,在这个集群的 meta.yaml文件中 的global是这样配置的:

请问您说的这个默认的目录修改是什么操作呢?

如果原来的global也是这样的话,那应该不用处理这块,把你需要把对应节点的目录配上就行,可以先看下edit-config与meta.yml是否一致

tidb_servers:

  • host: 123…
    deploy_dir: 当前使用的data目录
    log_dir: 当前使用的log目录

我这里没有注意格式,你写的时候要注意下格式,另外如果是正式环境的话一定要做好备份,慎重操作

global的目录只是在你没有指定对应节点目录起作用,如果你原来指定了的话,这种情况是正常的,不过看你的meta.yml现在应该没有指定吧

我又查看了一下,meta.yaml中指定了data_dir ,感觉这就与理论不相符了,难道是这个节点的实例配置没有生效吗?:fearful:

edit-config这个节点是什么样的呢

我使用 tiup cluster edit-config cluster-name命令进行如下查看:
这里面的配置与meta.yaml中的一致

还有个很奇怪的事情,我在测试环境上试了五六遍了,都没有模拟出这个问题来。在当前的集群上的确不行。

辛苦看下


这个目录下的对应节点的run_…sh文件,看里面的文件的config内容,然后再找到对应节点这个文件的内容。tikv.toml,一般应该是这个文件,然后看下里面的内容是啥

这个文件中也是默认的配置,都是注释的内容:

还有这个run _tikv_xxx.sh文件中的配置内容如下:

额,我知识盲区了,你可以看下config-cache下.sh文件与对应节点的scripts下的.sh文件是否一致,如果一致我真的不知道它读的是哪的配置文件了