作为一个快速成长的开源 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集群,测试不会受到空region的影响。)
在升级后的 TiDB 集群 v4.0.14 上使用Workload-sim回放刚刚在生产环境采集的流量数据,收集回放信息。
对比分别从测试 TiDB 集群 v4.0.9 和 TiDB 集群 v4.0.14 采集的播放信息。
使用TiDBA对比 TiDB v4.0.9 在生产环境和 TiDB v4.0.14 测试集群的参数。
测试升级过程流程图测试升级过程流程图
升级比较
接下来我们对比一下测试升级前后收集到的播放信息。
升级前
升级前的流量数据如下图所示。
升级前的流量数据
升级前的流量数据
升级后
升级后的流量数据如下图所示。
升级后的流量数据
升级后的流量数据
从上图可以清楚地看出,业务流量并未受到测试升级的影响。测试结果在预期之内。
在使用我们的升级工具测试升级三天后,我们的客户决定在他们的非高峰时段升级他们的生产中的 TiDB 集群。事实证明,真正的升级过程是安全和顺利的,没有造成任何问题或影响他们的任何业务流量。事情与测试升级中一样。
因为测试的结果和实际升级的结果是一样的,你可能想知道为什么事先使用升级工具测试升级过程如此重要。