PingKai Logo下载

使用 TiUP 降级 TiDB 集群

本文档适用于使用 tiup cluster downgrade 支持的降级路径。具体支持的版本范围以 TiUP 内置的降级规则为准。

1. 降级兼容性说明

  • 当前仅支持标准集群的版本降级,不支持 Fusion 集群。
  • 当前仅支持同一 minor 发布线内向低版本降级,不支持跨 major 或 minor 发布线回退。
  • 只有命中 TiUP 内置降级规则的版本路径才允许执行降级。即使目标版本位于同一 minor 发布线,如果没有对应规则,仍然无法降级。
  • TiUP 会校验当前集群 Edition 与目标安装包 Edition 是否一致;如果不一致,降级会失败。
  • 降级过程中会按照组件更新顺序逐步替换二进制并重启实例;同时会刷新监控相关配置,并重启 Node Exporter 和 Blackbox Exporter。

1.1 当前支持范围

  • 当前仅支持使用平凯发行版 TiUP 管理的标准集群。
  • tiup cluster downgrade 从平凯数据库 v7.1.9-0.2 开始支持。
  • 开源 TiUP 暂不支持该功能。
  • 具体允许路径以实际所用 TiUP 内置规则为准。

1.2 内置降级路径

下表汇总当前代码库中的 TiUP 内置降级路径,仅作为查阅参考。是否允许降级,最终以实际所用 tiup cluster 版本内置的规则为准。

Community Edition

支持的降级链
v8.5.4 -> v8.5.3 -> v8.5.2
v8.1.2 -> v8.1.1
v7.5.7 -> v7.5.6 -> v7.5.5 -> v7.5.4 -> v7.5.3
v7.5.1 -> v7.5.0
v7.1.6 -> v7.1.5 -> v7.1.4 -> v7.1.3 -> v7.1.2 -> v7.1.1 -> v7.1.0
v6.5.12 -> v6.5.11 -> v6.5.10 -> v6.5.9 -> v6.5.8 -> v6.5.7 -> v6.5.6 -> v6.5.5 -> v6.5.4 -> v6.5.3 -> v6.5.2 -> v6.5.1
v6.1.7 -> v6.1.6 -> v6.1.5 -> v6.1.4 -> v6.1.3 -> v6.1.2 -> v6.1.1 -> v6.1.0
v5.4.3 -> v5.4.2 -> v5.4.1
v5.3.4 -> v5.3.3 -> v5.3.2
v5.3.1 -> v5.3.0
v5.2.4 -> v5.2.3 -> v5.2.2 -> v5.2.1 -> v5.2.0
v5.1.5 -> v5.1.4 -> v5.1.3 -> v5.1.2 -> v5.1.1
v5.0.6 -> v5.0.5 -> v5.0.4 -> v5.0.3
v5.0.2 -> v5.0.1 -> v5.0.0
v4.0.16 -> v4.0.15 -> v4.0.14
v4.0.13 -> v4.0.12 -> v4.0.11 -> v4.0.10
v4.0.8 -> v4.0.7 -> v4.0.6 -> v4.0.5 -> v4.0.4 -> v4.0.3 -> v4.0.2
v4.0.1 -> v4.0.0
v3.1.2 -> v3.1.1
v3.1.0 -> v3.0.20 -> v3.0.19 -> v3.0.18 -> v3.0.17 -> v3.0.16 -> v3.0.15 -> v3.0.14 -> v3.0.13 -> v3.0.12 -> v3.0.11 -> v3.0.10 -> v3.0.9 -> v3.0.8
v3.0.7 -> v3.0.6 -> v3.0.5 -> v3.0.4 -> v3.0.3
v3.0.2 -> v3.0.1 -> v3.0.0

Enterprise Edition

支持的降级链
v9.0.1 -> v9.0.1-0.0
v7.1.8-5.5 -> v7.1.8-5.4 -> v7.1.8-5.3 -> v7.1.8-5.2 -> v7.1.8-5.1 -> v7.1.8-5.0
v7.1.1-4 -> v7.1.1-3 -> v7.1.1-2 -> v7.1.1-1

Pingkai Edition

支持的降级链
当前代码库中未提供可展示的内置允许路径

2. 降级前准备

本部分介绍实际开始降级前需要进行的更新 TiUP 和 TiUP Cluster 组件版本等准备工作。

2.1 查阅兼容性变更

查阅当前运行版本、目标版本以及中间版本的 release notes 中的兼容性变更。如果有任何变更影响到了你的降级,请采取相应的措施。

2.2 确认 TiUP 支持版本

当前平凯数据库客户均通过离线包部署。tiup cluster downgrade 从平凯数据库 v7.1.9-0.2 开始支持,请使用对应版本离线包中的平凯发行版 TiUP。开源 TiUP 暂不支持该功能。

2.3 编辑 TiUP Cluster 拓扑配置文件

  1. 进入拓扑文件的 vi 编辑模式:

    tiup cluster edit-config <cluster-name>
  2. 参考 topology 配置模板的格式,将希望修改的参数填到拓扑文件的 server_configs 下面。

修改完成后 :wq 保存并退出编辑模式,输入 Y 确认变更。

2.4 检查当前集群的 DDL 和 Backup 情况

为避免降级过程中出现未定义行为或其他故障,建议检查以下指标后再进行降级操作。

  • 集群 DDL 情况:

    建议使用 ADMIN SHOW DDL 语句查看集群中是否存在正在进行的 DDL job。如果存在,请等待 DDL job 执行完成或使用 ADMIN CANCEL DDL 语句取消该 DDL job 后再进行降级。

  • 集群 Backup 情况:建议使用 SHOW [BACKUPS|RESTORES] 命令查看集群中是否有正在进行的 Backup 或者 Restore 任务。如需降级,请等待 Backup 或 Restore 执行完成后,得到一个有效的备份后再执行降级。

2.5 检查当前集群的健康状况

为避免降级过程中出现未定义行为或其他故障,建议在降级前对集群当前的 region 健康状态进行检查,此操作可通过 check 子命令完成。

tiup cluster check <cluster-name> --cluster

执行结束后,最后会输出 region status 检查结果。如果结果为 "All regions are healthy",则说明当前集群中所有 region 均为健康状态,可以继续执行降级;如果结果为 "Regions are not fully healthy: m miss-peer, n pending-peer" 并提示 "Please fix unhealthy regions before other operations.",则说明当前集群中有 region 处在异常状态,应先排除相应异常状态,并再次检查结果为 "All regions are healthy" 后再继续降级。

3. 降级 TiDB 集群

本部分介绍如何滚动降级 TiDB 集群以及如何进行降级后的验证。

3.1 将集群降级到指定版本

当前 tiup cluster downgrade 仅支持滚动降级,不支持通过 --offline 执行停机降级。

滚动降级

tiup cluster downgrade <cluster-name> <version>

以降级到 v8.5.3 版本为例:

tiup cluster downgrade <cluster-name> v8.5.3

调整 Leader 迁移等待时间

可以指定 --transfer-timeout,给 Leader 迁移预留更长等待时间。命令如下,其中 <version> 为降级的目标版本,例如 v8.5.3

tiup cluster downgrade <cluster-name> <version> --transfer-timeout 3600

3.2 降级后验证

执行 display 命令来查看最新的集群版本 TiDB Version

tiup cluster display <cluster-name>
Cluster type:       tidb
Cluster name:       <cluster-name>
Cluster version:    v8.5.3

4. 降级 FAQ

本部分介绍使用 TiUP 降级 TiDB 集群遇到的常见问题。

4.1 降级时报错中断,处理完报错后,如何继续降级

重新执行 tiup cluster downgrade 命令进行降级,降级操作会重启之前已经降级完成的节点。如果不希望重启已经降级过的节点,可以使用 replay 子命令来重试操作,具体方法如下:

  1. 使用 tiup cluster audit 命令查看操作记录:

    tiup cluster audit

    在其中找到失败的降级操作记录,并记下该操作记录的 ID,下一步中将使用 <audit-id> 表示操作记录 ID 的值。

  2. 使用 tiup cluster replay <audit-id> 命令重试对应操作:

    tiup cluster replay <audit-id>

4.2 降级前提示 no built-in downgrade rule matched,如何处理

这表示 TiUP 内置规则中不存在从当前版本到目标版本的允许路径。常见原因包括:

  • 目标版本不在当前 minor 发布线内
  • 当前版本与目标版本之间没有可用的内置降级规则
  • 当前集群 Edition 与目标安装包 Edition 不匹配

此时不建议强行回退版本。应改为以下处理方式之一:

  • 选择一个规则允许的目标版本重新执行降级
  • 在测试环境验证其他可行路径
  • 通过备份恢复、重新部署等方式完成回退

4.3 降级过程中 evict leader 或 transfer leader 等待时间过长,如何跳过该步骤快速降级

可以指定 --force,降级时会跳过部分保护性等待,直接重启并降级版本,对线上运行的集群性能影响较大。命令如下,其中 <version> 为降级的目标版本,例如 v8.5.3

tiup cluster downgrade <cluster-name> <version> --force

4.4 降级完成后,如何更新 pd-ctl 等周边工具版本

可通过 TiUP 安装对应版本的 ctl 组件来更新相关工具版本:

tiup install ctl:v8.5.3

4.5 降级前提示当前集群为混合版本,如何处理

当 TiDB 实例配置了不同版本时,TiUP 无法判断一致的降级起点,因此会拒绝执行。

此时应先将 TiDB 实例版本收敛到同一版本,再重新执行降级命令。