一、环境介绍
当前版本:4.0.15
升级版本:5.3.1
二、操作步骤
1.升级tiup版本
tiup update --self
tiup --version
2.升级tiup cluster版本
tiup update cluster
tiup cluster --version
3.离线部署的准备操作(非离线部署方式可以跳过此步骤)
3.1 更新离线镜像
tar xzvf tidb-community-server-${version}-linux-amd64.tar.gz
sh tidb-community-server-${version}-linux-amd64/local_install.sh
source /home/tidb/.bash_profile
3.2 升级cluster组件
tiup update cluster
此时离线镜像已经更新成功。如果覆盖后发现 TiUP 运行报错,可能是 manifest 未更新导致,可尝试 rm -rf ~/.tiup/manifests/* 后再使用。
4.编辑配置确保兼容性
tiup cluster edit-config <cluster-name>
4.1 tidb5.3版本已经废弃的参数
pessimistic-txn.enabled
server.request-batch-enable-cross-command
server.request-batch-wait-duration
配置文件参数地址:
4.2 检查集群健康状态
tiup cluster check <cluster-name> --cluster
5.升级集群
5.1 不停机升级
tiup cluster upgrade <cluster-name> <version>
注意:
- 滚动升级会逐个升级所有的组件。升级 TiKV 期间,会逐个将 TiKV 上的所有 leader 切走再停止该 TiKV 实例。默认超时时间为 5 分钟(300 秒),超时后会直接停止该实例。
- 使用 --force 参数可以在不驱逐 leader 的前提下快速升级集群至新版本,但是该方式会忽略所有升级中的错误,在升级失败后得不到有效提示,请谨慎使用。
- 如果希望保持性能稳定,则需要保证 TiKV 上的所有 leader 驱逐完成后再停止该 TiKV 实例,可以指定 --transfer-timeout 为一个更大的值,如 --transfer-timeout 3600,单位为秒。
- 从 5.3 之前的老版本升级到 5.3 及之后的版本时,不支持在线升级 TiFlash,只能先将 TiFlash 实例关闭,然后离线地升级集群,最后 reload 整个集群,保证除 TiFlash 之外的组件不停机升级。
5.2 停机升级
5.2.1 停止集群
tiup cluster stop <cluster-name>
5.2.2 停机升级
tiup cluster upgrade <cluster-name> <version> --offline
5.2.3 启动集群
tiup cluster start <cluster-name>
三、报错处理
1.使用 tiup cluster audit 命令查看操作记录:
tiup cluster audit
# 在其中找到失败的升级操作记录,并记下该操作记录的 ID,下一步中将使用 <audit-id> 表示操作记录 ID 的值。
2.使用 tiup cluster replay 命令重试对应操作:
tiup cluster replay <audit-id>
官网地址:官网文档