Skip to content
Choose a tag to compare

Vitess 2.1

@michael-berlin michael-berlin released this
· 16200 commits to main since this release
Choose a tag to compare

Vitess 2.1 brings many new features since the last major release 2.0.

Highlights are Two-Phase Commit (2PC) support and early support for the native MySQL protocol.

See below for full details.


  • Server binaries are available in the Docker image "vitess/lite:v2.1.0".
  • Java client packages are published on Maven Central.
  • Source code is available via the tag "v2.1.0".


All Vitess 2.1 changes are backward compatible with the 2.0 release. Please make sure that you follow our recommended upgrade order.

If you use custom start scripts, you will have to change the command line flags which specify the topology (zookeeper or etcd) addresses. New flags are:

-topo_implementation zookeeper|etcd|zk2|etcd2|consul
-topo_global_server_address global_server1,global_server2
-topo_global_root /vitess/global

Additionally, for the zk2/etcd2/consul implementations, you'll have to register cell local topology servers with the vtctl AddCellInfo command. See our documentation for details.

This version also adds new topology plugins ("zk2", "etcd2") with a different storage format. The legacy plugins "zookeeper" and "etcd" will continue to work in 2.1 but will be deprecated in the next major version. Therefore, we recommend to migrate to one of the new plugins once you updated to 2.1.

Changes since the 2.0 Release

  • Our website has a new logo! :)
  • Kubernetes:
    • Added Helm chart and support for StatefulSet.
  • all:
    • Topology:
      • Rewrote plugins for etcd and Zookeeper (etcd2, zk2). Please see the doc how to migrate to the new storage format.
        Command line flags have changed as well (shipped examples are updated).
      • New plugin: Consul.
    • Internal: We have changed the internal error representation in the RPC messages in a backward compatible way.
  • clients:
    • Java:
      • TLS support in client and JDBC driver.
      • Unified package structure under new root io.vitess.
      • 2.1.0 packages are published on Maven Central e.g. our JDBC driver as artifact vitess-jdbc.
    • Map Reduce:
      • Faster execution on tables with a non-uniform distribution by sampling rows and splitting the table into equal-sized row ranges.
  • vtctld:
    • New Angular 2 based UI.
    • Online Schema Swap: Apply complex schema changes without any downtime.
    • Resharding workflow. Automatically runs the resharding steps and shows them in the Workflow UI Tab. New tutorials added which use the workflow.
  • vtgate:
    • 2PC: Support for distributed transactions.
    • Native MySQL server protocol (alpha).
    • Direct access to shards via "keyspace:shard" database name.
    • Buffer master traffic during failovers and retry to avoid client errors (disabled by default).
    • Support for SHOW statements to expose Vitess metadata.
    • Increase large installation scalability with (optional) two-layer vtgate pools (l2vtgate, applicable to 100+ shard installations).
  • vttablet:
    • Native MySQL client protocol (instead of using libmysqlclient) (disabled by default).
    • Support for MySQL Row-based-Replication e.g. needed when resharding (alpha).
    • Update Stream: Applications can subscribe to a change stream (e.g. to invalidate an app level cache).
    • Messages: Native support for a queue processing framework (alpha).
    • Hot Row Protection: Serializes write transaction for the same row (range) to prevent that all transaction pool slots can be exhausted (disabled by default).
    • Transaction Throttler: Rejects new transactions with retryable error if replication lag on replicas is too high (disabled by default).

Other Noteworthy Changes

  • Minimum required Go version changed to 1.8 (from 1.5).
  • Updated to gRPC 1.0.4 (from 1.0.0).