升级 Kubernetes 上的 TiDB 集群
Kubernetes 提供了滚动更新功能,在不影响应用可用性的前提下执行更新。
使用滚动更新时,TiDB Operator 会按 PD、TiKV、TiDB 的顺序,串行地删除旧版本的 Pod,并创建新版本的 Pod。当新版本的 Pod 正常运行后,再处理下一个 Pod。
滚动更新中,TiDB Operator 会自动处理 PD 和 TiKV 的 Leader 迁移。因此,在多节点的部署拓扑下(最小环境:PD * 3、TiKV * 3、TiDB * 2),滚动更新 TiKV、PD 不会影响业务正常运行。对于有连接重试功能的客户端,滚动更新 TiDB 同样不会影响业务。
警告
- 升级前,请参考确认没有正在进行的 DDL 操作。
注意
TiDB(v4.0.2 起)默认会定期收集使用情况信息,并将这些信息分享给 PingCAP 用于改善产品。若要了解所收集的信息详情及如何禁用该行为,请参见遥测。
-
正常情况下,集群内的各组件应该使用相同版本,所以一般修改 即可。如果要为集群内不同组件设置不同的版本,可以修改
spec.<pd/tidb/tikv/pump/tiflash/ticdc>.version
。version
字段格式如下:spec.version
,格式为imageTag
,例如 。
查看升级进度:
当所有 Pod 都重建完毕进入
Running
状态后,升级完成。
注意
如果需要升级到企业版,需要将 配置为企业版镜像,格式为 pingcap/<tidb/pd/tikv/tiflash/ticdc/tidb-binlog>-enterprise
。
如果因为 PD 配置错误、PD 镜像 tag 错误、NodeAffinity 等原因,导致 PD 集群不可用,此时无法成功升级 TiDB 集群版本。这种情况下,可使用 强制升级集群以恢复集群功能。
强制升级的步骤如下:
为集群设置 annotation:
修改 PD 相关配置,确保 PD 进入正常状态。
完成上述步骤后,TiDB 集群功能将恢复正常,可以正常进行升级。