如何安全地升级TiDB
如何使用这个工具包来测试你的升级过程,以及它如何帮助你轻松愉快地升级你的TiDB。
作为一个快速发展的开源NewSQL数据库,TiDB经常发布新的功能和改进。如果你是一个TiDB用户,你可能已经发现很难决定是否升级你的版本。你可能也曾想过如何让你的升级之旅更安全、更顺利,甚至不被企业察觉。
一方面,新的TiDB版本有新的功能,可以支持你业务中的一些新需求,或者可以修复一些已知的安全漏洞或错误。
然而,另一方面,升级本身也有潜在的风险。例如,新的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数据库咨询公司的主要升级工具。它在实践中被证明是有价值和可靠的。
- 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版本
测试升级过程如下:
- 使用备份和恢复(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集群进行升级。事实证明,真正的升级过程是安全和顺利的,没有引起任何问题,也没有影响他们的任何业务流量。事情的进展与测试升级时完全一样。
因为测试和实际升级的结果是一样的,你可能想知道为什么使用升级工具来事先测试升级过程是如此重要。
原因是在数据库升级过程中存在不确定因素。我们的升级工具旨在通过识别潜在的风险来减少这些不确定因素,以便你事先解决这些问题,保证升级的安全性和可靠性。在升级方案面前,你不必再为得失而犹豫不决。