作为一个快速成长的开源 NewSQL 数据库,TiDB频繁发布新特性和改进。如果你是 TiDB 用户,你可能很难决定是否升级你的版本。您可能还想知道如何让您的升级之旅更安全、更顺畅,甚至不会被企业注意到。
一方面,新的 TiDB 版本有新的特性,可以支持你业务中的一些新需求,或者可以修复一些已知的安全漏洞或 bug。
但另一方面,升级本身也存在潜在风险。比如新的 TiDB 版本中有新的配置参数需要你的系统去适配,这个过程中可能会出现问题;新版本的访问权限通常会更严格,以修复安全漏洞,因此您需要升级一些旧的访问方式,并且通过各种方式稳定了一些 SQL 执行计划,但新版本可能会带来不确定性。
在这篇文章中,我想为您提供一个解决方案——TiDB 升级工具包。通过介绍一个用户案例,我将向您展示如何使用该工具包来测试您的升级过程,以及它如何帮助您轻松愉快地升级您的 TiDB。
TiDB 升级工具包
如何确保您的 TiDB 升级安全顺畅?TiDB 升级工具包就是答案。它可以通过比较新旧版本以及模拟和回放整个升级过程来帮助您识别任何参数更改。您可以选择整个工具包或从该工具包中选择不同的工具组合,以最优惠的成本满足您的实际需求。
我们在 TiDB 升级工具包中有四个升级工具:TiDBA、Pt-upgrade、Plan Change Capturer (PCC) 和 Workload-sim。
- TiDBA通过对比 TiDB 新旧版本,帮助您快速识别参数变化。
- pt-upgrade通过慢查询日志在源集群(旧版本)和目标集群(新版本)上回放,帮助您测试 TiDB 的 SQL 兼容性。该工具已被我们的许多业务客户使用,例如 MySQL、MariaDB、Aurora,也是 Percona Database Consulting 的主要升级工具。它在实践中被证明是有价值和可靠的。
- PCC通过检测不同版本 TiDB 之间执行计划的变化,并在升级前进一步识别这些变化带来的潜在风险,帮助您识别回归的 SQL 语句。
- Workload-sim 通过收集真实的工作负载并在测试集群上重放它们来帮助您评估升级的效果。
这些工具消耗的资源数量和结果的粒度各不相同。您可以根据自己的需要选择任何工具或工具组合。
用户案例——领先的问答公司
该客户是中国领先的问答社区,拥有超过 1 亿用户和贡献者。他们想升级他们的 TiDB 数据库,因为更新的版本可以解决他们的一些已知问题。他们还想确保他们所有的业务都在同一个版本的 TiDB 上运行。这将统一数据库的操作、维护和管理。
这位客户打算升级他们最重要的 TiDB 集群之一——支持他们的商业和广告业务的集群。因此,他们非常重视 TiDB 升级的安全性。
他们决定使用我们的 TiDBA 和 Workload-sim 的升级工具组合来测试升级过程并识别潜在风险。
接下来,让我们详细了解这两个升级工具在实践中是如何工作的。
升级 环境
该客户的 TiDB 集群的部署规模和信息如下。
生产环境中的 TiDB 集群
| 业务支持 | XXXX |
| K8s版本 | v1.17.6 |
| 部署方式 | TiDB 算子 |
| 运营商版本 | 1.2.0-rc.2 |
| TiDB 版本 | v4.0.9 |
| 放置驱动程序 (PD) 节点 | 5 |
| TiDB 节点 | 30 |
| TiKV 节点 | 25 |
TiDB 集群在生产中的部署信息
测试环境中的 TiDB 集群
| 业务支持 | XXXX |
| K8s版本 | v1.17.6 |
| 部署方式 | TiDB 算子 |
| 运营商版本 | 1.2.0-rc.2 |
| TiDB 版本 | v4.0.9(将升级到 v4.0.14) |
| PD节点 | 3 |
| TiDB 节点 | 10 |
| TiKV 节点 | 20 |
TiDB 集群在测试环境中的部署信息
注意:为了使风险评估更加准确,我们建议创建一个新的集群进行测试,其规格与生产环境中的相似。
升级过程
现在,让我们看看如何测试升级过程。用于测试的 TiDB 版本如下表所示。
| TiDB 集群 | 版本 |
| 生产环境中的 TiDB 集群 | v4.0.9 |
| TiDB 测试集群 | V4.0.9(将升级到v4.0.14) |
用于测试的 TiDB 版本
测试升级流程如下:
- 使用 Backup & Restore (BR) 工具备份生产环境中 TiDB 集群的全量数据。
- 使用 BR 工具将所有备份数据恢复到 TiDB v4.0.9 测试集群。
注意:在步骤 3 中收集流量数据之前,您需要确认所有 TiDB 节点都支持均衡的业务流量。 - 在第 2 步进行时,使用Workload-sim从生产环境中的 TiDB 节点之一收集流量数据。
- 使用Workload-sim在 TiDB v4.0.9 测试集群上回放刚刚采集的流量数据,采集回放信息。
- 清除所有数据,然后将 TiDB 测试集群从 v4.0.9 升级到 v4.0.14。
- 使用 BR 工具将其备份数据再次恢复到升级后的 TiDB 集群 v4.0.14。(注:本次测试建议新建 TiDB 集群,测试不受空区影响。)
- 使用Workload-sim在升级后的 TiDB 集群 v4.0.14 上回放刚刚在生产环境中采集的流量数据,并采集回放信息。
- 对比测试 TiDB 集群 v4.0.9 和 TiDB 集群 v4.0.14 分别采集的回放信息。
- 使用TiDBA对比 TiDB v4.0.9 生产和测试集群 TiDB v4.0.14 的参数。
测试升级流程流程图升级比较
接下来我们对比一下测试升级前后采集到的播放信息。
升级前
升级前的流量数据如下图所示。

升级后
升级后的流量数据如下图所示。

从上图可以清楚地看出,业务流量并没有受到测试升级的影响。测试结果在预期之内。
在使用我们的升级工具进行测试升级三天后,我们的客户决定在非高峰时间升级他们的 TiDB 集群。事实证明,真正的升级过程是安全顺畅的,没有造成任何问题或影响他们的任何业务流量。事情和测试升级一样。
由于测试结果与实际升级结果相同,您可能想知道为什么使用升级工具预先测试升级过程如此重要。
原因是数据库升级过程中存在不确定性。我们的升级工具旨在通过识别潜在风险来减少这些不确定性,以便您提前解决这些问题并保证安全可靠的升级。面对升级选项,您不必再犹豫得失。
原文标题:https://dzone.com/articles/how-to-upgrade-tidb-safely
原文作者: Canyu Zhang原文链接:https://dzone.com/articles/how-to-upgrade-tidb-safely




