§ 033 · MySQL

Checking Your MySQL Server Before an Upgrade with MySQL Shell

Upgrading MySQL is often seen as straightforward — install the new binaries, restart, done. In reality, it’s more like upgrading a production jet engine mid-flight. Small changes in defaults, deprecated settings, or old privileges can lead to surprises you don’t want at 2:00 AM on maintenance night. Or even worse, see your performance deteriorating during the peak of business activity.

Fortunately, MySQL Shell ships with a utility to help validate whether your server is actually ready before you pull the trigger: util.checkForServerUpgrade().

In this post, we’ll walk you through the installation of MySQL Shell and running the upgrade checker.

Installing MySQL Shell

If you don’t already have MySQL Shell available on your server, install it first. Packages are available at:

https://dev.mysql.com/downloads/shell/

On RHEL-based systems, you can just download and install the RPM:

If your MySQL repo is already configured:

Nothing fancy here — just a standard installation. You can also install MySQL Shell using the Percona repositories.

Running the Upgrade Checker

With MySQL Shell installed, we can start validating our server. The checker looks at things like:

  • Deprecated features and settings

  • Schema definitions that won’t be compatible

  • Privileges that will disappear

  • System variables with new defaults

  • Storage engine checks

  • Authentication method changes

To run it, connect and run the util.checkForServerUpgrade()  helper. Here are a few common examples.

Standard Syntax

Or with flags:

Or inline:

If your environment prefers sockets — often the case for local admin checks — here’s an example:

Note: Your target version must be ≤ the version of MySQL Shell you’re using. If you’re checking for 8.0.40, use Shell 8.0.40 or newer.

Example Output

Running the checker generates a report that summarizes issues and their severity. A typical result looks like:

And an example of a warning:

Most warnings tend to involve system variables whose defaults change. For example:

And the example of an error:

Takeaways

A few key notes before pushing the upgrade button:

  • Always run the upgrade checker before major changes

  • Match or exceed the target version with your MySQL Shell version

  • Review warnings — especially defaults that change under the hood

  • Fix real blockers before your maintenance window

  • Test in a staging environment when possible

This tool doesn’t replace a full upgrade plan — backups, rollback path, replication considerations, plugin compatibility, and app testing still matter — but it’s a solid early line of defense.

 

See you next time!

Written by

Vinicius Grippa

Writes this blog. Mostly about databases. Boring on purpose.

More about me →

The floor is yours.

0 comments · Moderated · civil & on-topic

First comment appears here once approved. Questions, corrections, and counterpoints welcome — just no self-promotion.

Add a comment

Your email address is never published. * required

Subscribe · Posted when ready

A quiet, technical email about databases.

One post per send, corrections when I’m wrong, nothing else. No social-media cross-posts. No “what we learned.”

Unsubscribe with any reply