Project cross-post by the Vitess Engineering Team

We are pleased to announce the general availability of Vitess 14.

Major Themes #

In this new release, major improvements have been made in several areas of Vitess, including usability and reliability.

Usability #

Command-Line Syntax Deprecation #

This release marks the beginning of Vitess standardizing its command-line and flags syntax. Some former syntaxes have been deprecated and will break in the next release. For details, as well as migration instructions, please refer to the release notes.

VtctldServer and Client #

The new gRPC API for vtctld cluster management, VtctldServer, is ready for use. We are targeting Vitess 15 to begin deprecating the old interface, so users should begin transitioning now. Refer to the grpc-vtctld documentation for how to enable the new service.

Vitess 14 also provides a new vtctld client (vtctldclient) to correspond to the new gRPC server interface. After enabling the new service, users may begin using the new client for executing cluster management commands. Please refer to the client documentation for the list of available commands, as well as their options. Both vtctldclient and the legacy vtctlclient provide shim mechanisms to use each other’s CLI syntaxes to ease the transition, which is described in the transition documentation. Just as with the legacy service, we are targeting Vitess 15 to begin deprecating vtctlclient, so users should begin transitioning now.

VTAdmin #

Vitess 14 includes the beta release of VTAdmin, the next generation of cluster management API and UIs for Vitess. VTAdmin provides a single control plane to manage multiple Vitess clusters and will replace the legacy VTCtld Web UI. We are targeting Vitess 15 for general availability, so we encourage users to try out VTAdmin and provide feedback in this release cycle. A guide on how to configure and run VTAdmin is available on the website.

Note that the new grpc-vtctld service is required for VTAdmin to make RPCs to the clusters you would like it to manage, so you must run your vtctld components with that service enabled.

Those interested in the details can read the original architecture RFC and join the #feat-vtadmin channel in the Vitess Slack.

GA Announcements #

Online DDL #

Vitess-native and gh-ost-based online DDL functionality is now GA. pt-osc is still considered experimental, mainly because there has not been sufficient adoption or feedback from the community.

Online DDL has many other improvements in this release. Please refer to the release notes for details.

Query Planner #

The Vitess team started working on a new query planner two years ago for several reasons. This query planner, called Gen4, is the default in Vitess 14. It replaces the older query planner called V3. Please be sure to read the related section of the release notes if you want to learn more or switch back to V3. The new planner has enabled us to add support for many more queries. Some examples of new query support include UPDATE/INSERT from SELECT and cross-shard aggregation queries.

Reliability #

VTOrc #

VTOrc remains experimental in Vitess 14. In this release, the work to make VTOrc a first-class component of Vitess is taken a step further.

The durability policy configuration has been refactored. Instead of being provided as command-line configuration, it is now stored in the topology server. Both VTOrc and VTCtld will read it from there and honor the provided durability policies.

Emergency Reparent Shard’s capabilities have been augmented to now allow for more than 1 failure based on the durability policies set for the keyspace.

You can follow the progress of VTOrc by watching the original RFC and the durability RFC.

Performance #

Our benchmarking system, arewefastyet, benchmarked this new version of Vitess. The comparison between v14.0.0 and v13.0.0 is available on the Vitess Benchmark page. We can observe a performance improvement of about ~10%. This improvement mainly comes from the removal of internal SAVEPOINT query execution.

Please download Vitess 14 and try it out! Issues can be reported via GitHub.