我们非常高兴地宣布 Vitess 20 正式发布,同时推出 Vitess Kubernetes Operator 的 2.13.0 版本!
Vitess 20 版本专注于提升现有功能的可用性和成熟度,同时继续基于之前版本所奠定的强大的可扩展性和性能基础进行构建。我们的承诺始终如一,致力于为你的数据库扩展需求提供强大、可扩展且可靠的解决方案。


Vitess 20 的新特性

  • 查询兼容性:增强了 DML 支持,包括改进查询兼容性、Vindex 提示,以及扩展对各种分片更新和删除操作的支持。
  • VReplication:支持多租户数据导入(实验性功能)。
  • 在线 DDL:改进了对各种模式变更场景的支持,同时不再支持 gh-ost。
  • Vitess Operator:新增自动化和定时备份功能。

让我们深入探讨这个版本的一些关键亮点。


查询兼容性

Vitess 20 增强了对 DML(数据操作语言)的支持,引入了一些新特性,比如 Vindex 提示、带限制的分片更新、多表更新和高级删除操作。
Vindex 提示使用户能够影响分片路由:

SELECT * FROM user USE VINDEX (hash_user_id, secondary_vindex) WHERE user_id = 123;
SELECT * FROM order IGNORE VINDEX (range_order_id) WHERE order_date = '2021-01-01';

带限制的分片更新现已支持:

UPDATE t1 SET t1.foo = 'abc', t1.bar = 23 WHERE t1.baz > 5 LIMIT 1;

多表更新和**多目标更新**为用户提供更大的灵活性:

UPDATE t1 JOIN t2 ON t1.id = t2.id JOIN t3 ON t1.col = t3.col SET t1.baz = 'abc', t1.apa = 23 WHERE t3.foo = 5 AND t2.bar = 7;
UPDATE t1 JOIN t2 ON t1.id = t2.id SET t1.foo = 'abc', t2.bar = 23;

高级删除操作支持子查询和多目标操作:

DELETE FROM t1 WHERE id IN (SELECT col FROM t2 WHERE foo = 32 AND bar = 43);
DELETE t1, t3 FROM t1 JOIN t2 ON t1.id = t2.id JOIN t3 ON t1.col = t3.col;

这些功能为管理分片数据提供了更大的控制和效率。有关具体细节,请参考 Vitess 和 MySQL 文档。


VReplication:多租户数据导入(实验性)

许多大规模应用程序使用多租户架构,通常为每个租户提供一个单独的数据库(具有相同的架构)。这种方法存在许多挑战,例如需要管理和扩展数以万计的数据库,以及统一更新这些数据库的模式。
一个分片 Vitess keyspace 是这种系统的绝佳选择,它能够通过单个逻辑数据库服务所有租户。Vitess 20 新增支持将这种多租户设置的数据导入到单个 Vitess keyspace 中,并为此创建了新的 --shards--tenant-id 参数,用于 MoveTables 工作流。你每次可以为一个租户运行这样的工作流,导入的租户将由 Vitess 集群服务。


在线 DDL 的改进

  • Vitess 迁移现已支持重新排序 enum 定义。Vitess 选择使用别名(即其字符串表示)而非内部的整数表示(即 ordinal 值)来处理 enum 类型。
  • Vitess 现在能够更好地分析 INSTANT DDL 场景,可通过 --prefer-instant-ddl 标志启用此策略,预测某些迁移是否可以由 INSTANT 算法完成,并在可能情况下使用这一算法。
  • 改进了对范围分区迁移的支持,并优先采用直接分区查询,而非在线 DDL。
  • VDiffs(数据对比工具)现已能够在尚未完成剪切(cut-over)的在线 DDL 工作流中运行。

此外,Vitess 20.0 不再支持 gh-ost 作为在线 DDL 的策略。尽管 gh-ost 策略仍能被识别,但:

  • Vttablet 二进制文件不再捆绑 gh-ost 二进制文件。用户需提供自己的 gh-ost 二进制文件,并通过 vttablet --gh-ost-path 参数指定路径。
  • Vitess 不再在 CI 或端到端测试中测试 gh-ost。

Vitess Operator

Vitess Kubernetes Operator 的 2.13.0 版本提供了自动化和定时备份功能(实验性)。我们为此特性新增了一份用户指南,可供参考。


Vitess 与社区

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


入门指南

为了顺利迁移至 Vitess 20,我们强烈推荐你阅读详细的发布说明。此外,你可以浏览 Vitess 文档,了解指南、最佳实践以及如何充分利用 Vitess 20 的提示。无论你是从之前的版本升级还是首次运行 Vitess,我们的资源旨在全程为你提供支持。



宣布 Vitess 20 发布插图

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

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

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