汽车之家 v5.1 到 v7.5 超详细 TiDB 版本升级实践,性能稳定性双提升!
作者: huixiang 原文来源:https://tidb.net/blog/eb237faa
1. 背景介绍
TIDB 数据库的分布式、易扩展、兼容 MySQL 协议的特点,解决了 MySQL 单机存储容量不足的痛点,在行业得到广泛使用。汽车之家也有一些重要业务使用在 TIDB,如论坛, 好友关系,818 车展等。
之家使用 TIDB 版本为 5.1,随着业务的发展,尤其是跨机房双活集群数据同步需求,遇到 5.1 版 CDC 同步不稳定等问题, 依 TiDB 官方建议,我们决定将 TiDB 版本进行升级。
2. 版本选择及方案
TIDB 升级版本选择: 版本选择以稳定性及满足业务需求为先, 优先选 LTS 版本并测试,之家依官方建议选择 7.5.3 版本。

升级方案:TiDB 升级通常有两种方案,原地升级或迁移升级。
原地升级:使用 TiUP 工具直接升级在线 TiDB 集群。
迁移升级:搭建一套新版本 tidb 集群,使用 TiCDC 或 Drainer 做实时同步,数据追平后流量割接来实现升级。
3. 汽车之家 TIDB 升级
整体的 TIDB 升级过程可以分三个阶段: 1) 升级方案制定 2) 功能测试 3)迁移变更实施。 本节将展开说明。

3.1 方案制定
汽车之家 TIDB 实例已实现了机房双活 (同一业务会有主 / 从 2 个独立集群布署),考虑到升级异常回滚的需求,我们使用迁移升级,方案如下:

3.2 新集群布署及测试
待升级的业务实例确定后,DBA 提供高版本 TIDB 从库集群 (版本 7.5.3) 供研发及测试人员来测试新集群的功能、性能是否满足业务需求。
新集群布署:
新集群布署: 使用 br 工具备份 / 还原数据,搭建新集群。
集群参数检查: 注意新旧集群参数对比,可使用 tidba 工具来检查。
数据同步: TICDC 或 Drainer 进行新集群的数据同步。
账号同步: 账号同步可使用 pt-show-grants 工具协助。

3.3 变更操作
新集群功能、性能测试通过后,就可以和业务方协商 TIDB 迁移升级变更时间,并实施变更操作。
3.3.1 变更前检查
TIDB 版本升级是一个有风险的重大变更,在变更操作前需要认真检查。

为避免遗漏检查项,可以使用 “ 变更操作检查表 ”,逐项仔细核对。

3.3.2 变更实施
汽车之家业务通过域名访问 TIDB 数据库 (域名后端是 VIP 来负载均衡),TIDB 迁移升级迁移的流量切换,是通过修改域名后端 VIP 地址来完成。
变更操作步骤分两种情况:
a) 业务可短时停写:
b) 业务不可停写:
有些业务非常核心不接受短时停写。在域名变更短时间,会有主从集群双写冲突问题。为解决此类场景需求,我们对新旧集群进行自增奇偶设置来解决此问题。也希望同行有更好的解决方法。


3.3.3 变更收尾
DBA 检查新集旧集群运行状态,数据同步状态等。若是各项 DB 监控指标健康,通知业务方测试业务各功能是否合预期,若均正常,则当天变更结束。
要注意的是:此时新集群版本是 7.5,但原集群版本仍为旧版本 (5.1),为了安全可新旧集群需并行运行一段时间,一切正常合预期,则可对旧集群原地升级,彻底完成升级操作。
4. 升级经验
4.1 升级级验
升级前认真检查新旧 TIDB 参数一致性:检查新旧集群参数配置是否一致 (如 sql_mode,new_collation_enabled,tidb_txn_mode,tidb_mem_quota_query,txn-entry-size-limit 等)
新集群定期 ANALYZE TABLE 确保新集群 bingding 计划全部导入,并定期 ANALYZE TABLE。避免性能问题。
多看官网上升级文档, 减少升级风险官网上有升级 Tips, 行业升级经验提前学习。TiDB 版本升级的小 Tips
4.2 问题及解决
汽车之家 TIDB 升级整体比较顺利,但也遇到过一些问题如下,最终在社区的帮助下都得到解决。

5. 升级收益
升级后,TiDB 集群在性能和稳定性等方面取得了显著提升。
性能提升
升级后集群性能有所提升,某集群升级后 TP99 性能较旧集群有明显提升。(旧集群是 31ms -> 升级新集群 15ms)
数据同步稳定性提升
原来 TIDB 版本为 5.1 时使用 TICDC 对主从集群数据同步,某集群常有 CDC 同步中断情况,升级后此类问题较少遇到。
新特性使用
Fast DDL: TiDB7.5 的 Fast DDL 功能, 实现加索引性能提升 10 倍 +,提升运维效率。
TTL (Time to Live): TIDB7 支持 TTL(Time-To-Live),允许为表设置自动清理过期数据,简化数据生命周期管理。
资源管控 (多租户: TIDB7 支持多租户,可有效隔离不同租户的资源使用,提高资源利用率。
6. 致谢
在 TiDB 运维和升级的过程中,得到官方社区人员表妹、李仲舒、王军、刘爽等的帮助,非常感谢各位 TIDB 老师们给予的大力支持和耐心问题解答~
7. 参考文档
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/0a828c58b793661fb6d7bcc05】。文章转载请联系作者。
评论