0
1
1
0
专栏/.../

汽车之家 v5.1 到 v7.5 超详细 TiDB 版本升级实践,性能稳定性双提升!

 huixiang  发表于  2025-02-07

1. 背景介绍

TIDB数据库的分布式、易扩展、兼容MySQL协议的特点,解决了MySQL单机存储容量不足的痛点,在行业得到广泛使用。汽车之家也有一些重要业务使用在TIDB,如论坛,好友关系,818车展等。

之家使用TIDB版本为5.1,随着业务的发展,尤其是跨机房双活集群数据同步需求,遇到5.1版CDC同步不稳定等问题,依TiDB官方建议,我们决定将TiDB版本进行升级。

2. 版本选择及方案

TIDB升级版本选择:版本选择以稳定性及满足业务需求为先, 优先选LTS版本并测试,之家依官方建议选择7.5.3版本。

no-alt

升级方案:TiDB 升级通常有两种方案,原地升级或迁移升级。

  • 原地升级:使用TiUP工具直接升级在线TiDB集群。
  • 迁移升级:搭建一套新版本 tidb 集群,使用 TiCDC 或 Drainer做实时同步,数据追平后流量割接来实现升级。
升级方案 优点 缺点
原地升级 升级方式简单,不需要额外的硬件 升级时间较长 ,不支持将 TiFlash在线升级为5.3后版本
迁移升级 升级异常可以回退原集群,不受版本限制 ,可充分测试 需额外机器资源来搭建新集群,同步数据表必须有主键或者唯一键。

3. 汽车之家TIDB升级

整体的TIDB升级过程可以分三个阶段: 1)升级方案制定 2)功能测试 3)迁移变更实施。 本节将展开说明。

no-alt

3.1 方案制定

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

image.png

3.2 新集群布署及测试

待升级的业务实例确定后,DBA提供高版本TIDB从库集群(版本7.5.3)供研发及测试人员来测试新集群的功能、性能是否满足业务需求。

新集群布署:

  • 新集群布署: 使用br工具备份/还原数据,搭建新集群。
  • 集群参数检查: 注意新旧集群参数对比,可使用tidba工具来检查。
  • 数据同步: TICDC或Drainer进行新集群的数据同步。
  • 账号同步: 账号同步可使用pt-show-grants工具协助。

no-alt

3.3 变更操作

新集群功能、性能测试通过后,就可以和业务方协商TIDB迁移升级变更时间,并实施变更操作。

3.3.1 变更前检查

TIDB版本升级是一个有风险的重大变更,在变更操作前需要认真检查。

no-alt

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

image.png

3.3.2 变更实施

汽车之家业务通过域名访问TIDB数据库(域名后端是VIP来负载均衡),TIDB迁移升级迁移的流量切换,是通过修改域名后端VIP地址来完成。

变更操作步骤分两种情况:

a) 业务可短时停写:

"建立反向数据同步-->新集群切流量-->旧集群只读-->旧数据同步停止"

b) 业务不可停写:

有些业务非常核心不接受短时停写。在域名变更短时间,会有主从集群双写冲突问题。为解决此类场景需求,我们对新旧集群进行自增奇偶设置来解决此问题。也希望同行有更好的解决方法。

no-alt

no-alt

3.3.3 变更收尾

DBA检查新集旧集群运行状态,数据同步状态等。若是各项DB监控指标健康,通知业务方测试业务各功能是否合预期,若均正常,则当天变更结束。

要注意的是:此时新集群版本是7.5,但原集群版本仍为旧版本(5.1),为了安全可新旧集群需并行运行一段时间,一切正常合预期,则可对旧集群原地升级,彻底完成升级操作。

4. 升级经验

4.1 升级级验

  1. 升级前认真检查新旧TIDB参数一致性: 检查新旧集群参数配置是否一致(如sql_mode,new_collation_enabled,tidb_txn_mode,tidb_mem_quota_query,txn-entry-size-limit等)
  2. 新集群定期ANALYZE TABLE 确保新集群bingding计划全部导入,并定期ANALYZE TABLE。避免性能问题。
  3. 多看官网上升级文档,减少升级风险 官网上有升级Tips,行业升级经验提前学习。TiDB 版本升级的小 Tips

4.2 问题及解决

汽车之家TIDB升级整体比较顺利,但也遇到过一些问题如下,最终在社区的帮助下都得到解决。

no-alt

5. 升级收益

升级后,TiDB 集群在性能和稳定性等方面取得了显著提升。

  1. 性能提升

升级后集群性能有所提升,某集群升级后TP99性能较旧集群有明显提升。(旧集群是31ms ->升级新集群15ms)

  1. 数据同步稳定性提升

原来TIDB版本为 5.1时使用TICDC对主从集群数据同步,某集群常有CDC同步中断情况,升级后此类问题较少遇到。 no-alt

  1. 新特性使用
  • Fast DDL: TiDB7.5的Fast DDL功能,实现加索引性能提升10倍+,提升运维效率。
  • TTL (Time to Live): TIDB7支持TTL(Time-To-Live),允许为表设置自动清理过期数据,简化数据生命周期管理。
  • 资源管控(多租户: TIDB7支持多租户,可有效隔离不同租户的资源使用,提高资源利用率。

6. 致谢

在TiDB运维和升级的过程中,得到官方社区人员表妹、李仲舒、王军、刘爽等的帮助,非常感谢各位TIDB老师们给予的大力支持和耐心问题解答~

7. 参考文档

0
1
1
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论