Announcing Vitess 23
By Vitess Engineering Team |
We’re excited to release Vitess 23.0.0 — the latest major version of Vitess — bringing new defaults, better operational tooling, and refined metrics. This release builds on the strong foundation of version 22 and is designed to make deployment and observability smoother, while continuing to scale MySQL workloads horizontally with confidence.
Why this release matters
For production users of Vitess, this release is meaningful in several ways:
- Upgrading defaults: Moving to MySQL 8.4 as default future-proofs deployments and signals forward compatibility.
- Better metrics: The added observability enables deeper insights into transaction routing, shard behavior, and recovery actions — making debugging and alerting more precise.
- Clean-ups & deprecations: Removing legacy metrics and APIs simplifies monitoring and avoids confusion.
- Operational strength: Enhanced VTOrc and topology controls reduce risk in large-scale fleets and tighten security boundaries.
What’s new in Vitess 23
Here are some of the standout changes you should know about:
New default versions
- The default MySQL version for the
vitess/lite:latestimage has been bumped from 8.0.40 to 8.4.6. → PR #18569 - VTGate now advertises MySQL version 8.4.6 by default (instead of 8.0.40). If your backend uses a different version, set the
mysql_server_versionflag accordingly. → PR #18568 - Important upgrade detail for operator users: When upgrading from MySQL 8.0 → 8.4 with the Vitess Operator, you must:
- Add
innodb_fast_shutdown=0to your extra .cnf in the YAML. - Apply the file and wait until all pods are healthy.
- Switch the image to
vitess/lite:v23.0.0. - Remove
innodb_fast_shutdown=0and re-apply. This is only required once when crossing 8.0 → 8.4. See the official release notes.
- Add
New and improved metrics
- VTGate: new metric
TransactionsProcessed(dimensions: Shard, Type) counting transactions processed at VTGate by shard and transaction type. → PR #18408 - VTOrc: new metric
SkippedRecoveries(dimensions: RecoveryName, Keyspace, Shard, Reason) tracking how many recoveries were skipped and why. → PR #18405
These improvements strengthen observability and help operators track system behavior with finer granularity.
Deprecations and removals
- VTOrc metric rename:
DiscoverInstanceTimings→DiscoveryInstanceTimings. → PR #18406 - Removed deprecated VTGate metrics:
QueriesProcessed,QueriesRouted,QueriesProcessedByTable,QueriesRoutedByTable. → PR #17727 - Removed VTOrc API endpoint:
/api/aggregated-discovery-metrics. → PR #18407
Topology & VTOrc enhancements
- The
--consul_auth_static_fileflag now requires at least one credential in the provided JSON. → PR #18409 - VTOrc now supports dynamic control of EmergencyReparentShard-based recoveries. → PR #18410 These changes improve operational safety and resilience for cluster management.
VTTablet and CLI / Docker updates
- Managed MySQL configuration now defaults to
caching-sha2-password. → PR #18403 - MySQL timezone environment propagation improved. → PR #18404
- gRPC tabletmanager client error behaviors clarified. → PR #18402
- Docker image workflows and flags updated for consistency. → PR #18411
Upgrade notes
- Review custom dashboards: if you relied on removed metrics, update them to new ones (
TransactionsProcessed, etc.). - Operator users upgrading 8.0 → 8.4: follow the four-step sequence.
- If you override
mysql_server_versionin VTGate, ensure it matches your backend MySQL version. - Test changes involving reparenting, recovery, or Consul integration in staging first.
What’s next
We continue to evolve Vitess toward:
- Deeper MySQL 8.4 compatibility.
- Expanded observability across VReplication, MoveTables, and Resharding.
- Ongoing Operator improvements for reliability and clarity.
Thanks and acknowledgements
This release was made possible by dozens of contributors from the Vitess community and the PlanetScale team. Thank you for filing bugs, testing RCs, and helping keep Vitess robust and scalable.
Let’s keep scaling.
“Scale beyond single MySQL instances — without giving up SQL semantics.”
– The Vitess Team
To explore every detail, see the 👉 Full Release Notes for Vitess 23.0.0