使用tiup cluster upgrade --offline后,tidb-server启动报错

升级步骤是从7.5.2升级到8.1.0,操作步骤是先通过cluster stop停掉集群,然后使用upgrade --offline来离线升级,但是升级后tidb-server启动不起来了

修复方法: 到其中某一台tidb-server机器上,用7.5.2版本的bin/tidb-server启动,手动将tidb_enable_dist_task关闭

cd ~/tidb-deploy/tidb-4000
mkdir bin.v8.1.0
cp bin/tidb-server bin.v8.1.0/
cp bin.old.v7.5.2/tidb-server bin

# 这个时候tidb-server就能启动成功了,之后关闭tidb_enable_dist_task,就能发现8.1.0的其他节点也启动成功了。
MySQL [(none)]> set global tidb_enable_dist_task=off;
Query OK, 0 rows affected (0.01 sec)

其实官方文档里有说让最好关闭一下tidb_enable_dist_task,但是我检查了一下并没有DDL任务,还是直接stop cluster离线升级的,以为没问题呢。

这个看起来是已知限制,https://docs.pingcap.com/zh/tidb/stable/smooth-upgrade-tidb#用户操作限制

不过不确定离线升级是否有这个问题。我感觉,你这个问题可能是 init 表卡主了。
https://docs.pingcap.com/zh/tidb/stable/upgrade-tidb-using-tiup#42-升级到-v620-及以上版本时如何解决升级卡住的问题

应该不是这个导致的,我是从7.5.2版本升上去的,已经开启了分布式 DDL 架构了。估计还是这个限制导致的,不过这个限制描述有些不清晰, 只看描述感觉是个软限制,像是在说「只要升级期间没有ADD INDEX的操作,就不会导致数据不一致」。
另外这个限制只出现在了「平滑升级」和 「release note」里,在标准的TiUP集群升级指南里反而没这个描述。

如果是预期内,一定会有问题,建议在 TiUP 升级指南里也加上一条说明吧

我这边确认了,这个是所有升级都会有这个限制,但是8.1 以后就不会有

好的,我们写的明确一些吧。

好的 :clap:

看大佬对话,受益匪浅

相关的文档说明 pr 可见:Improve upgrade limitations by lilin90 · Pull Request #18076 · pingcap/docs-cn · GitHub

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。