MySQL Blog Archive
For the latest blogs go to
MySQL Shell 8.0.19 - What's New?

The MySQL Development team is proud to announce version 8.0.19 of the MySQL Shell, with the following features:

  • Admin API
    • MySQL InnoDB ReplicaSet
    • MySQL Router Management Functions
    • Metadata Upgrade
    • Router Management Functions
  • Shell JavaScript Plugins: require() function enhancements.
  • Upgrade Checker Updates

MySQL InnoDB ReplicaSet

Similar to MySQL InnoDB Cluster (based on Group Replication), this release of the Shell introduces the MySQL InnoDB Replicaset which provides an easy to use management solution for MySQL Replication.

Look at The all new MySQL InnoDB ReplicaSet post for more details on this new feature.

Metadata Upgrade and Version Handling

In order to support the new MySQL InnoDB ReplicaSets, the InnoDB Cluster metadata schema was significantly extended. Users who have deployed MySQL InnoDB Clusters using previous versions of the Shell will need to perform a Metadata Schema Upgrade in their cluster before they can use MySQL Shell 8.0.19 to manage them.

Additional details can be found at Upgrading MySQL InnoDB Cluster Metadata.

MySQL Router Management Functions

The InnoDB Cluster metadata includes a registry of all MySQL Router instances that have bootstrapped against it. This release introduces new functions on the Admin API to allow  viewing and managing this list of registered MySQL Router instances.

Please take a look at the MySQL Shell AdminAPI – What’s new in 8.0.19? blog for additional details.

Shell JavaScript Plugins – require() function engancements

The require() function enabled JavaScript scripts to load modules located on the registered module paths (sys.path).

On this release, the function has been enhanced to also allow loading modules located in paths relative to the script being executed.


  • require(module): loads a module located in a path configured in sys.path
  • require(./module): loads a module located on the same path as the script being executed.
  • require(../module): loads a module located on the parent folder of the script being executed.
  • require(./subfolder/module): loads a module located on a subfolder of the folder where the script being executed is located.
  • In all cases, if running the shell interactively, the base folder is the current working directory.

Stay tuned for a blog post related to complex shell plugins where this function will be widely used!

Upgrade Checker Extensions

The Upgrade checker tool has been improved with the following enhancements for migrations from 5.7 to 8.0:

  • Report Date, Datetime and Timestamp column definitions with default value of zero date or that allow inserting zero as the value.
  • Report usage of the removed PASSWORD() function.
  • Report tables recognized by the InnoDB engine that the SQL layer associates to a different engine.


For details about the MySQL Shell please take a look at the MySQL Shell User Guide.

For additional details about features introduced by this version and the full list of fixed bugs take a look at the Release Notes.

Don’t forget to download it and give it a try, your feedback is very welcome!

You can reach us at #shell channel in