At a glance
| Supported databases | MySQL and Percona Server 8.0 and 8.4 (v24, the last release with 8.0); MariaDB only as an import source |
| Pooling modes | VTTablet connection pools multiplex client connections onto MySQL connections |
| Routing and read/write splitting | VTGate routes by VSchema and vindexes to shards; v24 adds tablet targeting through an extended USE statement |
| Load balancing and failover | Stateless VTGates scale horizontally; VTOrc handles failover and reparenting |
| Authentication and TLS | VTGate auth methods: none (default), static file, LDAP, TLS client certificates, Vault; TLS guide documented |
| Sharding and transactions | Single-shard transactions fully ACID; multi-shard best-effort by default, TWOPC mode for atomic commits |
| Deployment | Self-hosted on Kubernetes (operator) or VMs; managed as PlanetScale Vitess |
| Licensing | Apache 2.0, free; CNCF graduated project |
Vitess is the established way to scale MySQL horizontally while keeping the MySQL protocol: VTGate routes each query to the right shards, VTTablet manages each MySQL instance, and resharding happens online. It is a distributed system to operate, with real compatibility limits for sharded keyspaces, so it pays off when a single MySQL primary is no longer enough, not as a simple proxy.
Overview
Vitess is a database clustering system for horizontal scaling of MySQL, which served all of YouTube's database traffic for years and is now a graduated CNCF project. Applications connect to VTGate, a stateless proxy that speaks the MySQL protocol, looks up where rows live using the keyspace's VSchema and vindexes, and routes or scatters queries to shards. Each MySQL instance runs with a VTTablet agent that manages queries, connection pools and replication, and cluster state lives in a topology service (etcd, ZooKeeper or Consul). VTOrc handles automated failover, and VReplication powers resharding, MoveTables migrations and online schema changes.
Vitess 24 supports MySQL and Percona Server 8.0 and 8.4, and is the last release to support 8.0. Sharded keyspaces carry documented limits: multi-shard transactions are best-effort by default (TWOPC mode gives atomic cross-shard commits), stored procedures run only on unsharded keyspaces or a targeted shard, and auto-increment needs Vitess Sequences. PlanetScale, whose founders are Vitess co-creators and maintainers, runs Vitess as a managed service and publishes the Vitess Kubernetes Operator (2.17.0 shipped with v24). See the PlanetScale profile for the managed option.
Key features
- VTGate query router that speaks the MySQL protocol and routes or scatters queries across shards
- Horizontal and vertical sharding with pluggable vindexes and online resharding through VReplication
- Connection pooling in VTTablet, multiplexing application connections onto fewer MySQL connections
- Query protection: rewriting, blocking, killing long queries, row and time limits in OLTP mode, table ACLs
- VTOrc for planned and unplanned failover and reparenting
- Online schema changes and MoveTables migrations into Vitess from existing MySQL
- Kubernetes Operator (planetscale/vitess-operator) for running clusters on Kubernetes
Integrations and ecosystem
Pros and cons
Pros
- Proven way to shard MySQL while applications keep using MySQL drivers
- Online resharding and table moves through VReplication
- Apache 2.0 and CNCF governance, with a regular six-month major release cycle
- Managed option available from PlanetScale
Cons
- Many components to operate: VTGate, VTTablet, topology service, VTOrc and MySQL
- Documented limits on sharded keyspaces: stored procedures, temporary tables, views and cross-shard transaction semantics
- Schema design must choose sharding keys (vindexes) up front for good routing
- MySQL 8.0 support ends after v24, so 8.0 estates need an 8.4 plan
Pricing
Vitess is free, open source software under the Apache 2.0 licence, hosted by the Cloud Native Computing Foundation. Running it yourself costs the MySQL servers, the topology service and the Kubernetes or VM capacity, plus operations time. PlanetScale, founded by co-creators and maintainers of Vitess, sells it as a managed service from 39 USD a month (PS-10, three nodes, AWS us-east-1); see the PlanetScale profile for its pricing.
Pricing checked on the vendor's official page on 7 November 2026. Prices change; confirm before buying.
Who it is best for
Engineering teams whose MySQL workload has outgrown a single primary and who are ready to run, or buy, a sharded MySQL-compatible platform.
Typical use cases
- Sharding a large MySQL table set across many servers without rewriting the data access layer
- Moving tables from an existing MySQL database into a sharded keyspace with MoveTables
- Running many MySQL shards on Kubernetes with the Vitess Operator
- Protecting MySQL from runaway queries with VTTablet limits and query killing
Who should look elsewhere
- Teams that only need read/write splitting or pooling in front of ordinary replication: ProxySQL is much simpler.
- PostgreSQL workloads: consider Citus for sharded PostgreSQL.
Verdict
Vitess is the reference open source answer for horizontally scaling MySQL, with VTGate giving applications a single MySQL endpoint over many shards. It brings real operational weight and compatibility trade-offs, so it suits teams with genuine scale needs, either self-hosted on Kubernetes or bought as PlanetScale.
Frequently asked questions
What is VTGate?
VTGate is the Vitess query router. It accepts MySQL protocol connections, works out which shards a query needs from the VSchema, sends it there and merges the results, so applications see one database.
Is Vitess the same as PlanetScale?
No. Vitess is an Apache 2.0 CNCF project. PlanetScale is a company founded by Vitess co-creators and maintainers that sells managed Vitess (and separately managed Postgres), with no free plan.
Which MySQL versions does Vitess support?
Vitess 24 supports MySQL and Percona Server 8.0 and 8.4, and its documentation says it is the final release with MySQL 8.0 support. MariaDB is supported only as a source for importing data.
Are transactions across shards ACID in Vitess?
Single-shard transactions are. Multi-shard transactions are best-effort by default and use READ COMMITTED isolation across shards; the TWOPC mode provides atomic commits across shards.
Sources
- Vitess documentation: What is Vitess (v24)
- Vitess 24: supported databases
- Vitess 24: MySQL compatibility
- Vitess blog (Announcing Vitess 24)
- Vitess GitHub repository (Apache 2.0)
- Vitess releases
- CNCF project page: Vitess
- Vitess Kubernetes Operator (PlanetScale)
Checked November 2026.
Listed in: Database Proxy & Connection Pooling.
How we research reviews and what star ratings mean: our editorial method.