我们非常高兴地宣布 Vitess 21 的发布,同时推出 Vitess Kubernetes Operator 的 2.14.0 版本!
Vitess 21 专注于增强查询兼容性、改进集群管理以及扩展 VReplication 功能,并实验性地支持**原子分布式事务**和**递归 CTE(Common Table Expressions)**。主要功能包括:

  • 参考表物化
  • 多指标限流器支持
  • 增强的在线 DDL 功能
  • 备份和恢复流程中新增实验性 mysqlshell 引擎;
  • vexplain 提供详细的执行追踪和模式分析;
  • Vitess Kubernetes Operator 引入了对 VTGate Pod 的水平自动伸缩功能,并支持 Kubernetes v1.31,从而提升整体可扩展性和部署灵活性。

Vitess 21 的新功能

  • 查询兼容性:实验性支持原子分布式事务和递归 CTE
  • VReplication:参考表物化、动态工作流配置
  • 集群管理和 VTOrc:更多指标帮助跟踪无效 GTID
  • 限流器(Throttler):支持多指标
  • 在线 DDL:各类改进
  • 备份与恢复:实验性 mysqlshell 引擎
  • Vitess Operator:VTGate 部署扩展、自定义镜像、支持 Kubernetes v1.31
  • VTAdmin:管理和监控 VReplication 工作流、分布式事务管理
  • VExplain:通过 trace 提供详细的查询执行洞察;通过 keys 优化分片密钥的使用和查询性能

查询兼容性

原子分布式事务

我们重新引入了更强健的设计版本,用于支持原子分布式事务。新功能与 Vitess 的核心组件和工作流(例如在线 DDL 和 VReplication 的 MoveTables、Reshard 等操作)进行了更深入的集成,并显著简化了使用分布式事务的配置要求。此功能当前为实验性,我们欢迎你探索并提供反馈,以帮助我们进一步优化。

递归 CTE

Vitess 21 新增了对递归 CTE 的实验性支持,允许构建更复杂的层次化查询和图遍历。这一功能显著提升了查询灵活性,特别是适用于管理父子关系(如组织架构或树形数据)。该功能仍处于实验状态,我们鼓励你尝试并提供改进建议。


集群管理和 VTOrc

我们在 VTOrc 中新增了一个指标,用于显示所有 tablets 中无效 GTIDs 的计数,从而提升可见性和报警能力。这将帮助运维团队更好地跟踪和管理整个集群中的无效 GTIDs。


VReplication

参考表物化

Vitess 提供参考表作为一种机制,将未分片 keyspace 中常用的查找表复制到分片 keyspace 的所有分片中。这类表可用于存储国家列表、州列表、邮政编码等数据,并与分片 keyspace 中的其他表在分片内部进行连接,从而避免跨分片连接。
Vitess 21 在 Materialize 命令中新增了显式支持,可轻松完成参考表复制工作。

动态工作流配置

之前,许多 VReplication 工作流的配置选项需要通过 VTTablet 标志控制,这意味着任何更改都需要重启所有 VTTablets。现在,工作流创建或运行过程中可以动态更新配置,无需重启。


限流器(Throttler):支持多指标

Tablet 限流器经过重新设计,现在支持多指标。新限流器不仅处理复制延迟或自定义查询,还可以针对不同客户端或工作流同时处理多指标,帮助用户根据生产环境的具体需求进行限流器行为的细化调节。

额外改进:

  • 新增数个指标,计划在未来版本中进一步扩展可用指标列表;
  • 向后兼容:v21 限流器与 v20 限流器兼容。例如,可以使用 v20 的主库收集 v21 限流数据,反之亦然。向后兼容性将在 v22 中移除,届时所有 tablet 限流器将需要同步多指标数据。
  • SHOW VITESS_THROTTLER STATUS 和 SHOW VITESS_THROTTLED_APPS 等相关命令和 API 将在未来版本中废弃。

在线 DDL

Vitess 21 对 Online DDL 进行了数个改进,包括:

  • 增加了 ALTER VITESS_MIGRATION CLEANUP ALL 命令支持;
  • 更多 INSTANT DDL 场景分析,突破文档的部分限制;
  • 在模式变更中,若列 charset 更改,在线 DDL 会对文本进行程序转换,而非使用 CONVERT(... USING utf8mb4),提升效率;
  • 修复了自引用外键表的相关问题(适用于 PlanetScale MySQL 构建时)。

备份与恢复

引入了实验性 **mysqlshell 引擎**:

  • 支持逻辑备份和恢复;
  • 可创建完整备份、增量备份和时间点恢复;
  • 与 Vitess Kubernetes Operator 集成。

此功能由 Slack 工程团队贡献。


VExplain 增强功能

VExplain Trace

新增 vexplain trace 命令,提供深入的查询执行路径洞察,捕获详细的执行轨迹。这有助于开发者和 DBA 分析性能瓶颈、查看查询计划,以及了解 Vitess 跨分布式节点处理查询的方式。输出以 JSON 对象形式提供,方便集成外部分析工具。

VExplain Keys

新增 vexplain keys 功能,可帮助分析查询与模式互动的情况,显示哪些列被用于过滤、分组和连接。这对优化索引、分片或性能调节非常有用,无论使用的是 Vitess 还是独立 MySQL。


Vitess Kubernetes Operator

Vitess 21.0.0 附带 Kubernetes Operator v2.14.0:

  • 新增支持 VTGate 部署的水平自动伸缩(HPA);
  • 升级支持 Kubernetes 最新版本(v1.31);
  • 支持按 keyspace 选择 Docker 镜像,而非整个集群使用单一设置。

VTAdmin

新增 VTAdmin 页面,用于创建、监控和管理 **VReplication 工作流**,同时增加了用于查看和完成分布式事务的仪表板。


Vitess 和社区

作为一个开源项目,Vitess 的成长离不开社区的贡献、洞察和反馈。你的经历和建议对于塑造 Vitess 的未来至关重要。我们鼓励你在 GitHub 或 Slack 社区分享你的故事并提出问题。


入门指南

为了平稳过渡到 Vitess 21,我们强烈建议你阅读详细的[发布说明](链接)。此外,可以浏览我们的文档以获取指南、最佳实践和使用 Vitess 21 的技巧。无论你是从之前的版本升级,还是首次运行 Vitess,我们的资源都会全程为你提供支持。



宣布 Vitess 21 发布插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://choupangxia.com/2025/09/14/vitess-21/