MySQL 兼容性改进

Vitess 18现已正式发布,包含众多旨在改善可用性、性能和 MySQL 兼容性的增强功能。


外键约束

在过去,外键约束需要在 Vitess 外部进行管理,这成为了 Vitess 采纳过程中的一个显著障碍。现在,我们已支持 Vitess 管理的外键约束(仅限于同一分片内)。这包括从带有外键约束的现有 MySQL 数据库向 Vitess 导入数据的能力。我们计划在未来的版本中扩展外键约束支持范围,使其能够适用于跨分片的关系。
注意: PlanetScale 已支持外键约束。你可以在数据库设置页面启用该功能。


通用兼容性

Vitess 的查询规划器已被显著增强,为高级查询功能奠定了基础。全新的规划器版本更加健壮和灵活。这些改进使 Vitess 更好地支持复杂聚合、高级子查询和派生表。由于这些变化,分片数据库上的复杂查询性能得到了提升。


可用性增强

Cobra

Vitess 的 CLI 已迁移至 Cobra 框架。除了规范化和现代化 CLI 基础设施外,这一改变还带来了两个主要优势:

  1. 我们现在可以自动生成 Vitess 已发布版本和开发版本的参考文档。这意味着开发者可以将更多时间专注于功能开发、错误修复以及更深入的文档编写,而非耗时的机械式文档更新。终端用户可以从更可靠且最新的引用文档中获益。
  2. Vitess 命令现在支持 **shell 自动补全**:

Vitess 命令支持 shell 自动补全


Vtctldclient

我们已完成将所有客户端命令迁移到 vtctldclient 的工作。传统的 vtctl/vtctlclient 二进制文件现已完全被弃用,并计划在 Vitess 19 中移除。
这一迁移带来了以下几个优势:

  • 命令的清晰分离使得开发新功能时更容易,不会影响其他命令。
  • 提供了一个 API,使其他客户端(包括 Vitess 和第三方客户端)能够与 Vitess 交互。
  • 支持未来的功能。例如,现在可以使用配置文件,并开始构建对动态配置的支持。

VReplication 和在线 DDL

我们现已支持以正确维护外键关系的方式来导入具有外键关系的数据。
此外,我们支持几乎零停机时间从外部数据库迁移数据。此前,在切换过程中会有可感知的短暂错误发生。
在线 DDL 现在可以提供更好的进度估算。


时间点恢复 (Point in Time Recoveries)

Vitess 多年来一直支持时间点恢复 (PITR),但这一功能依赖于运行 binlog 服务器,这导致它的使用范围有限。在这一版本中,我们增加了无需外部 binlog 服务器即可恢复到特定时间戳的功能。从 Vitess 17 开始,已经支持无 binlog 服务器的 GTID 位点恢复。
依赖 binlog 服务器的旧功能现已被弃用,并将在未来版本中移除。


Tablet 限速器 (Tablet Throttler)

限速器现在使用 gRPC 与其他 Tablet 进行通信,而不再使用 HTTP,除非在版本升级期间作为后备方式使用。使用 HTTP 存在安全性问题,并将在下一版本中移除。


Arewefastyet

Arewefastyet(我们的性能基准系统)现已进行了全面视觉更新,以提高网站的可靠性和可用性。同时,我们对基准测试系统进行了多个错误修复和增强。



宣布 Vitess 18 发布插图

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

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

本文链接:https://www.choupangxia.com/2025/09/13/vitess-18-version/