升级 Kubernetes 上的 TiDB 集群
如果你使用 TiDB Operator 部署管理 Kubernetes 上的 TiDB 集群,可以通过滚动更新来升级 TiDB 集群的版本,减少对业务的影响。本文介绍如何使用滚动更新来升级 Kubernetes 上的 TiDB 集群。
滚动更新功能介绍
Kubernetes 提供了滚动更新功能,在不影响应用可用性的前提下执行更新。
使用滚动更新时,TiDB Operator 会等待新版本的 Pod 正常运行后,再处理下一个 Pod。
滚动更新中,TiDB Operator 会自动处理 PD 和 TiKV 的 Leader 迁移。因此,在多节点的部署拓扑下(最小环境:PD * 3、TiKV * 3、TiDB * 2),滚动更新 TiKV、PD 不会影响业务正常运行。对于有连接重试功能的客户端,滚动更新 TiDB 同样不会影响业务。
升级前准备
查阅升级兼容性说明,了解升级的注意事项。注意包括补丁版本在内的所有 TiDB 版本目前暂不支持降级或升级后回退。
查阅 TiDB release notes 中各中间版本的兼容性变更。如果有任何变更影响到了你的升级,请采取相应的措施。
例如,从 TiDB v6.4.0 升级至 v6.5.2 时,需查阅以下各版本的兼容性变更:
- TiDB v6.5.0 release notes 中的兼容性变更和废弃功能
- TiDB v6.5.1 release notes 中的兼容性变更
- TiDB v6.5.2 release notes 中的兼容性变更
如果从 v6.3.0 或之前版本升级到 v6.5.2,也需要查看中间版本 release notes 中提到的兼容性变更信息。
升级步骤
修改待升级集群的各组件 Group 的版本配置,通过
version
字段指定每个组件的目标版本。例如:spec: template: spec: version: v8.5.2你可以使用
kubectl apply
命令一次性更新所有组件的配置,也可以通过kubectl edit
逐个修改组件。TiDB Operator 会自动处理升级顺序,并在组件未满足升级前置条件时阻止升级继续执行。查看升级进度:
watch kubectl -n ${namespace} get pod -o wide当所有 Pod 都重建完毕进入
Running
状态后,升级完成。