ITPub博客

首页 > 数据库 > 数据库开发技术 > 宣布 Vitess 21 — PlanetScale

宣布 Vitess 21 — PlanetScale

数据库开发技术 作者:ITPUB社群 时间:1970-01-01 08:33:44 0 删除 编辑


我们很高兴地宣布 Vitess 21 发布,同时发布 Vitess Kubernetes(容器编排平台) Operator 2.14.0 版本。

版本 21 专注于增强查询兼容性、改进集群管理以及扩展 VReplication 功能,并实验性支持原子分布式事务和递归 CTE。主要特性包括引用表物化、多指标限流器支持以及增强的在线 DDL 功能。备份和恢复流程受益于新的 mysqlshell 引擎,而 vexplain 现在提供详细的执行跟踪和模式分析。Vitess Kubernetes Operator 引入了 VTGate Pod 的水平自动扩缩容和 Kubernetes 1.31 支持,提升了整体可扩展性和部署灵活性。

Vitess 21 的新特性

  • 查询兼容性:实验性支持原子分布式事务和递归 CTE

  • VReplication:引用表物化、动态工作流配置

  • 集群管理和 VTOrc:VTOrc 中更多指标以跟踪异常 GTID

  • 限流器:多指标支持

  • 在线 DDL:多项改进

  • 备份与恢复:实验性 mysqlshell 引擎

  • Vitess Operator:VTGate 扩缩容、镜像自定义、Kubernetes 1.31 支持

  • VTAdmin:VReplication 工作流创建和管理、分布式事务管理

  • VExplain:vexplain trace 用于详细的查询执行洞察,vexplain keys 用于分析分片键使用情况和优化查询性能

查询兼容性

原子分布式事务

我们以全新的、更具弹性的设计重新引入了原子分布式事务。此功能现在与 Vitess 核心组件和工作流(如在线 DDL 和 VReplication,包括 MoveTables 和 Reshard 等操作)实现了更深入的集成。我们还大幅简化了使用原子分布式事务所需的配置。此功能目前处于实验阶段,我们鼓励您探索并提供反馈,以帮助我们进一步改进。

递归公用表表达式(CTE)

Vitess 21 引入了对递归 CTE 的实验性支持,允许更复杂的层次查询和图遍历。此功能增强了查询灵活性,特别适用于管理父子关系,如组织结构或树形数据。由于此功能仍处于实验阶段,我们鼓励您探索并提供反馈,以帮助我们进一步改进。

集群管理与 VTOrc

我们在 VTOrc 中新增了一项指标,用于显示所有 tablet 中异常 GTID 的数量,以便更好地进行可视化和告警。这将帮助运维人员跟踪和管理集群中的异常 GTID。

VReplication

引用表物化

Vitess 提供引用表(Reference Tables)作为一种机制,将未分片 keyspace 中常用的查找表复制到分片 keyspace 的所有分片中。这类表可用于存储国家、州、邮政编码等列表,这些数据通常用于与分片 keyspace 中的其他表进行 join。使用引用表可以让 Vitess 在每个分片上并行执行 join,从而避免跨分片 join。此前,我们建议为引用表创建 Materialize 工作流,但没有提供简便的方式来实现。在 v21 中,我们为 Materialize 命令添加了显式支持,可将一组引用表复制到分片 keyspace 中。

动态工作流配置

此前,VReplication 工作流的许多配置选项由 VTTablet 标志控制。这意味着任何更改都需要重启所有 VTTablet。现在,我们允许在创建工作流时覆盖这些配置,或在工作流进行中动态更新。

Throttler:多指标支持

tablet throttler 已重新设计,新增了多指标支持。由此,throttler 不再仅处理复制延迟或自定义查询,而是可以同时处理多个指标,并针对不同客户端或不同工作流检查不同的指标。这使用户能够更好地控制 throttler,根据其特定生产需求精细调整其行为。

v21 中引入了若干新指标,并计划在后续版本中扩展可用指标列表。

v21 中的多指标 throttler 与 v20 throttler 向后兼容。v20 主 tablet 可以从 v21 副本 tablet 收集 throttler 数据,反之亦然。此向后兼容性将在 v22 中移除,届时所有 tablet throttler 都将使用多指标数据进行通信。

其他关键 throttler 变更:

  • 基于上述内容,UpdateThrottlerConfig 命令的子标志 --check-as-check-self 和 --check-as-check-shard 已被弃用,并计划在未来的版本中移除。同样,SHOW VITESS_THROTTLER STATUS 和 SHOW VITESS_THROTTLED_APPS 查询,以及所有 /throttler/ API(应用程序编程接口) 访问点(/throttler/check 除外)已被弃用,并计划在 v22 中移除。

  • 启用时,throttler 确保其租约心跳更新,即使心跳配置未设置。换句话说,当需要心跳信息时,throttler 会覆盖配置。

  • Throttler 检查响应现在包含一个人类可读的摘要,详细说明请求被拒绝的确切原因(如果被拒绝)。

在线 DDL

若干错误修复和改进,包括:

  • 添加了对 ALTER VITESS_MIGRATION CLEANUP ALL 命令的支持。

  • 更多的 INSTANT DDL 场景分析,进一步超越了文档化的限制。

  • 在列更改字符集的模式变更中,在线 DDL 现在以编程方式转换文本,而不是使用 CONVERT(... USING utf8mb4) 子句,从而在此类列作为主键或迭代表的一部分时提高性能。

  • 在内部,更多的模式和差异分析现在委托给 schemadiff 库,这意味着更强大的编程能力和更好的可测试性。

  • 修复了自引用外键表的问题(仅在使用 PlanetScale MySQL 构建时相关)。

备份与恢复

引入了一个实验性的 mysqlshell 引擎。使用此引擎,可以运行逻辑备份和恢复。mysqlshell 引擎可用于创建全量备份、增量备份和基于时间点的恢复。它也可与 Vitess Kubernetes Operator 一起使用。

mysqlshell 引擎的工作由 Slack 工程团队贡献。

VExplain 增强

VExplain Trace

新的 vexplain trace 命令通过捕获详细的执行跟踪,提供对查询执行路径的更深入洞察。这帮助开发人员和 DBA 分析性能瓶颈、审查查询计划,并了解 Vitess 如何在分布式节点上处理查询。跟踪输出以 JSON 对象形式提供,便于与外部分析工具集成。

VExplain Keys

新的 vexplain keys 功能帮助您分析查询如何与模式交互,显示在跨表的过滤器、分组和连接中使用了哪些列。此工具特别适用于识别候选列以进行索引、分片或优化,无论您使用的是 Vitess 还是独立的 MySQL 设置。通过提供列使用的清晰视图,vexplain keys 使您更容易微调数据库以获得更好的性能,无论您的后端基础设施如何。

Vitess Kubernetes Operator

Vitess v21.0.0 附带发布了 vitess-operator v2.14.0。在 v2.14 中,我们新增了使用 HPA 对 VTGate 部署进行水平扩缩容的能力。我们将支持的 Kubernetes 版本升级到了最新版本(v1.31)。我们新增了一项功能,允许用户按 keyspace 选择 Docker 镜像,而不是为整个集群使用单一设置。

VTAdmin

新增了用于创建、监控和管理 VReplication Workflows 的 VTAdmin 页面。我们还新增了一个仪表盘,用于查看和结束分布式事务。

Vitess 与社区

作为一个开源项目,Vitess 的蓬勃发展离不开社区的贡献、见解和反馈。你的经验和意见对于塑造 Vitess 的未来非常宝贵。我们鼓励你在 GitHub 或我们的 Slack 社区中分享你的故事并提出问题。

快速开始

为了顺利过渡到 Vitess 21,我们强烈建议查看详细的发布说明。此外,你还可以浏览我们的文档,获取指南、最佳实践和技巧,以充分利用 Vitess 21。无论你是从旧版本升级,还是首次运行 Vitess,我们的资源都旨在全程为你提供支持。

感谢你对 Vitess 项目的支持和贡献!


转载声明:本文为转载整理,原文版权归原作者及原站点所有。

原文来源:PlanetScale Blog

原创地址:https://planetscale.com/blog/announcing-vitess-21

原文作者:PlanetScale Blog;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-11-21

  • 博文量
    1122
  • 访问量
    547175