Guest post by Alkin Tezuysal, Vitess maintainer

On behalf of the Vitess maintainers, I am pleased to announce the general availability of Vitess 10.

Major Themes #  

In this release, Vitess Maintainers have continued to focus on compatibility. It is still the most critical component of Vitess being part of the MySQL ecosystem. We have also started working on benchmarking and performance optimizations. These improvements have given us a clear vision of which areas of Vitess can be improved in terms of performance. 

Please take a moment to review the Release Notes. Please read them carefully and report any issues via GitHub.

Compatibility (MySQL, frameworks) #

It’s now been a little over a year since we started spending serious time making sure that Vitess can be a drop-in replacement for MySQL. We’ve done work on every level of Vitess – from what the TCP packets look like to parsing and query planning.

Since the beginning of this year, we have made a push to create automated tests running a popular database framework. During testing, we have found and fixed various issues that would have stopped most users from being able to use Vitess with this framework.

With the release of V10.0, we can proudly say that Vitess (unsharded)  passes all automated end-to-end tests of the Ruby on Rails framework.

Now, even if Rails isn’t what you use, the improvements might still benefit you. There is a large overlap between frameworks in terms of what type of queries are issued and which expectations they have on results coming back.

Rails is just the beginning – we’ll continue adding tests for more frameworks, which should flush out discrepancies between MySQL and Vitess that we need to address.

We’ll continue with this work, making sure that Vitess can be used as a database wherever you can use MySQL.

Migration #

Freno-style throttling has been added to VReplication workflows. Both source and target tablets can be throttled based on replication lag of the corresponding shards.

New commands Mount and Migrate let you import data from another Vitess cluster. 

The release also includes Improved metrics, bug-fixes and fine-tuning of the VReplication V2  user commands.

Schema Management # 

Online DDL continues to evolve on top of version 9. New and noteworthy:

Performance Optimizations  #

This new release of Vitess has had a particular focus on performance optimization. Some highlights include:

User Interface #

Vitess 10.0 introduces an experimental multi-cluster admin API and web UI, called VTAdmin. Deploying the vtadmin-api and vtadmin-web components is completely opt-in. If you’re interested in trying it out and providing early feedback, come find us in #feat-vtadmin in the Vitess slack. Note that VTAdmin relies on the new VtctldServer API, so you must be running the new grpc-vtctld service on your vtctlds in order to use it.

Benchmarking #

To ensure that Vitess delivers high performance to its users, we have improved our benchmarking and performance monitoring techniques ever since Vitess 9.0. The project arewefastyet is at the core of these techniques and is still under development at the moment, its goal is to measure and observe Vitess’s performance in an automatic manner.

Since the release of Vitess 9.0 it underwent major improvements, including:

We will be presenting arewefastyet during a lightning talk at the KubeCon EU 2021.

There is a shortlist of incompatible changes in this release. We encourage you to spend a moment reading the release notes and see if any of these will affect you.

Please download Vitess 10 and try it out!