Cluster bombs away: Vitess 6 is here – let the upgrading begin (warning: may take a while)


Version 6 of database clustering system Vitess is out, providing users of the CNCF graduated project with improved SQL support and VReplication-based workflows, amongst other things – if they’re willing to work for it.

Since the last big release, which landed in early January, VReplication has made the move from an experimental feature to a general available one, thanks to some stability improvements. Version 6 also includes a dedicated debugging interface, and dry run options for MoveTables, SwitchReads and SwitchWrites (formerly Migrate/MigrateReads/MigrateWrites), which users will surely appreciate.

Command line tools vtctl and vtcld also got some attention from the Vitess team. While the latter now sports a health check for tablet servers, and a flag to turn it into a reverse proxy for the tablets it manages, vtctl has a new option to handle scenarios in which source and destination use different MySQL versions. Should the topology server be permanently shut down, a -force flag now ensures DeleteCellInfo can still work.

In version 6, the system learned to better understand MySQL syntax, meaning issues causing the return of wrong results for example should happen less and formatting should feel smoother. The next major release is supposed to see the addition of an implementation to make session variables a thing, which should get rid of what the project calls “one of the largest outstanding compatibility issues”.

Though this all sounds pretty good, users should be aware that upgrading could get tricky due to the amount of backward incompatible changes. A slimmed-down vttablet schema loading process could lead to issues when using Sequences, VStreamer, and Messages, for instance.

As we mentioned, working with SQL has become easier. However, keywords are no longer lowercase and parentheses are removed from expressions, which could affect applications that bank on those being options. 

The messaging feature not only supports direct inserts now, but also comes with a new priority field, which needs to be filled in in order to still work. Users still relying on statement-based replication, SplitQuery, and UpdateStream will have to switch to row-based replication with this release, since the features mentioned have been removed from the project.

Other than that, the Vitess Helm Chart now defaults to using Kubernetes as the Topology Server provider to get rid of the project’s dependency on the no longer supported etcd-operator. Users wondering where the binaries they have just installed are, should try the system standard paths instead of the /vt directory, which was used in earlier versions.

To make the transition as smooth as possible, admins are advised to follow the recommended order when upgrading components, since some failure handling improvements depend on that procedure being correctly done. More details still can be found in the release notes.