A recap of a COSCUP 2026 conference talk on planning a MySQL 9.7 upgrade. MySQL 9.7 is the newest LTS release, joining MySQL 8.4 LTS, while MySQL 8.0 has reached end of life. Key new features in 9.7 include full DML support for JSON Duality Views, the Hypergraph Optimizer, JavaScript stored procedures, enhanced security management, and previously Enterprise-only tools like replication observability and OpenTelemetry integration. The talk contrasts the risky 'big bang' upgrade approach — where app and database migrate simultaneously — with a staged, decoupled strategy. Common upgrade pitfalls include character set changes (utf8 to utf8mb4), removal of mysql_native_password authentication, performance regressions, and deprecated/removed features. The recommended approach involves incremental rollout (1%, 2%, 5%, 10%, 25% traffic ramp), separating the version upgrade from feature adoption, using feature flags for safe rollback, and monitoring workload patterns before and after the upgrade.
Questions this post answers
What are the new features in MySQL 9.7 LTS community edition?
MySQL 9.7 LTS ships full DML support for JSON Duality Views, the Hypergraph Optimizer (disabled by default), JavaScript stored procedures, enhanced security management, and several previously Enterprise-only components now available to all — including replication observability tools and OpenTelemetry-based telemetry integration. MySQL 9.7 joins MySQL 8.4 as the two current LTS releases, with MySQL 8.0 now end of life. Teams evaluating the MySQL 9.7 upgrade track new LTS developments like these on daily.dev.
What are the most common problems when upgrading MySQL versions?
The most repeated upgrade problems are character set issues (utf8 deprecated in favour of utf8mb4), user authentication changes (removal of mysql_native_password), performance regressions that only appear under production workload, deprecated features that have since been removed, and reserved word conflicts with legacy third-party integrations. These tend to surface late and all at once when teams attempt a 'big bang' migration. DBAs navigating MySQL upgrades find it useful to follow real-world migration experiences on daily.dev.
How should I incrementally roll out a MySQL major version upgrade to production?
Decouple the application and database migrations so each can be tested and rolled back independently. Ramp read load through 1%, 2%, 5%, 10%, and 25% rather than switching all traffic at once. Stop batch jobs during the transition where safe. Treat running on the new version and adopting new features as separate milestones — for example, the Hypergraph Optimizer is disabled by default in MySQL 9.7 so it can be enabled independently after migration. Engineers shipping MySQL upgrades without downtime share their rollout strategies on daily.dev.