升级 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 集群 - 图2注意

    TiDB(v4.0.2 起)默认会定期收集使用情况信息,并将这些信息分享给 PingCAP 用于改善产品。若要了解所收集的信息详情及如何禁用该行为,请参见遥测

    1. 正常情况下,集群内的各组件应该使用相同版本,所以一般修改 即可。如果要为集群内不同组件设置不同的版本,可以修改 spec.<pd/tidb/tikv/pump/tiflash/ticdc>.version

      version 字段格式如下:

      • spec.version,格式为 imageTag,例如 。
    2. 查看升级进度:

      当所有 Pod 都重建完毕进入 Running 状态后,升级完成。

    注意

    如果需要升级到企业版,需要将 配置为企业版镜像,格式为 pingcap/<tidb/pd/tikv/tiflash/ticdc/tidb-binlog>-enterprise

    如果因为 PD 配置错误、PD 镜像 tag 错误、NodeAffinity 等原因,导致 PD 集群不可用,此时无法成功升级 TiDB 集群版本。这种情况下,可使用 强制升级集群以恢复集群功能。

    强制升级的步骤如下:

    1. 为集群设置 annotation:

    2. 修改 PD 相关配置,确保 PD 进入正常状态。

    完成上述步骤后,TiDB 集群功能将恢复正常,可以正常进行升级。