MySQL Shell Release Notes  /  Changes in MySQL Shell 9.1.0 (2024-10-15, Innovation Release)

Changes in MySQL Shell 9.1.0 (2024-10-15, Innovation Release)

AdminAPI Added or Changed Functionality

  • AdminAPI now performs version compatibility checks in operations which create or modify replication channels.

    See Replication Compatibility Checks. (WL #16408)

AdminAPI Bugs Fixed

  • Running a rescan() operation on a Replica Cluster, could result in a warning that group_replication_view_change_uuid is required, but not configured. This occurred in a mixed version ClusterSet, where the primary Cluster is on version 8.3.0, or higher, and the replicas were on versions lower than 8.3.0. The check for group_replication_view_change_uuid was incorrectly performed on the primary Cluster instead of the target Replica Cluster. (Bug #36657936)

  • If clone-based recovery failed while adding an instance, the instance and Cluster could be left in an inconsistent state, returning multiple errors, and unrecoverable by rescan(). It was not possible to remove the instance with remove_instance(), either.

    add_instance() did not properly handle clone-related errors and did not stop Group Replication if errors were detected.

    As of this release, add_instance() handles clone-related errors, reverts the state of the target instance and stops Group Replication on that instance. (Bug #36657628)

  • Running AdminAPI operations against MySQL 5.7 instances resulted in an error, due to an attempt to run a query on a non-existent Performance Schema table.

    As of this release, error handling is included to account for such issues. (Bug #36652642)

  • It was possible to define duplicate instance definitions in the replicationSources list of the Cluster.add_replica_instance() operation. The operation failed with an error.

    As of this release, the replicationSources list is validated for such duplicates in all operations which use it. The operation fails with an informative error. (Bug #36614218)

  • AdminAPI commands which add or rejoin instances to Clusters using Clone did not check the existing members for compatibility. If no compatible members were available, Group Replication fell back to incremental recovery which can fail if Clone was the only supported provisioning method. An unexpected and unhelpful error was returned.

    As of this release, the following commands have been updated to check compatibility and provide appropriate feedback:

    • ReplicaSet.add_instance()

    • ReplicaSet.rejoin_instance()

    • Cluster.add_replica_instance()

    • Cluster.rejoin_instance()

    • ClusterSet.create_replica_cluster()

    For a donor to be considered compatible for a recipient:

    • They must be running on the same operating system.

    • They must be running on the same platform.

    • The versions must be compatible:

      • Both must be version 8.0.17, or higher.

      • If both are version 8.0.37, or higher, only their major and minor versions need match. For example, 8.4.0 and 8.4.3.

      • For versions 8.0.17, or higher, and lower than 8.0.37, the major, minor, and patch numbers must match.

    (Bug #36054619, Bug #36682741)

  • The prerequisite checks for Cluster.add_replica_instance() did not check the minor and patch version number of the metadata schema. Read Replicas require a minimum metadata schema version of 2.2.0.

    As of this release, Cluster.add_replica_instance() checks the metadata schema version and displays an error if the metadata schema version is lower than 2.2.0.

    The prerequisite checks for create_cluster() and create_replica_set() are also updated. (Bug #35595811)

Utilities Added or Changed Functionality

  • As of this release, the MYSQL_OPTION schema is excluded by the dump utilities when ocimds: true and is automatically excluded when loading a dump into a MySQL HeatWave DB System. (Bug #37023079)

  • As of this release, MySQL Shell supports the following AWS credential providers:

    • Assume Role Provider

    • Amazon Elastic Container Service (Amazon ECS) credentials

    • Amazon Instance Metadata Service (Amazon IMDS) credentials

    See Cloud Service Configuration. (Bug #37000238, Bug #36957811, Bug #36957782, Bug #36947132, WL #15885)

  • The compatibility option, unescape_wildcard_grants, is added in this release. When enabled, this strips escape characters in grants on schemas, replacing escaped \_ and \% wildcards in schema names with _ and % wildcard characters. When the partial_revokes system variable is enabled, the \ character is treated as a literal, which could lead to unexpected results. It is strongly recommended to check each such grant before enabling this option. (Bug #36524862)

  • A dropExistingObjects option was added to the copyInstance and loadDump utilities. This option enables you to drop existing user accounts and objects in the target before creating them from the dump or copied instance.

    Note

    Schemas are not dropped.

    See Options for Load Control and Options for Copy Control. (Bug #36050341, Bug #36561962)

  • The index creation step of a load operation now includes percentage completion information. (Bug #35495220)

  • The following utilities now support multipart uploads for prefix pre-authenticated requests:

    • util.dumpInstance(outputUrl[, options])

    • util.dumpSchemas(schemas, outputUrl[, options])

    • util.dumpTables(schema, tables, outputUrl[, options])

    In previous releases, the data was written to a local temporary folder before uploading to Object Storage. As of this release, the data is written directly to Object Storage. (WL #16003)

Utilities Bugs Fixed

  • The upgrade checker utility generated a false positive if secure_file_priv contained a valid directory. (Bug #36846572)

  • Under certain circumstances, using zstd compression, the dump utilities could generate corrupted data files. (Bug #36836188)

  • Attempting to run the dump or copy utilities from MySQL Shell 8.0.x against a more recent version of the server, such as 8.4.0, could result in a syntax error.

    Many breaking changes have been made to MySQL syntax and configuration between 8.0.37 and 8.4.x, and higher, such as replacing SHOW MASTER STATUS with SHOW BINARY LOG STATUS, for example. There were also many removals. See the release notes for those server versions for more information.

    As of this release, the dump and copy utilities raise an error when such incompatibilities are detected and recommend the appropriate MySQL Shell upgrade.

    Important

    It is always recommended to use the latest version of MySQL Shell.

    (Bug #36701854)

  • Running any of the diagnostics utilities against an instance with binary logging disabled, and using an X Protocol connection, resulted in an error.

    As of this release, the diagnostics utilities use classic connections, only. If the user connects to an instance using X Protocol, and runs any of the diagnostics utilities, they automatically establish a classic connection to the instance. (Bug #36613129)

  • Mismatched lower_case_table_names values could cause dump loading to fail. As of this release, the lower_case_table_names value of the source is added to the @.json file and is checked by the load utility for mismatch with the target's value. A warning is displayed if the values do not match. (Bug #36509026)

  • Dump process failed if an empty table was encountered and compression was set to none. (Bug #34891382)

  • The upgrade checker utility returned an error claiming that it was not possible to upgrade from MySQL 8.0.x to MySQL 8.4.x. This upgrade path is possible.

    See Upgrade Paths for information. (Bug #115798, Bug #36930714)

  • Running the diagnostic utility util.debug.collectDiagnostics with the parameter schemaStats:true returned MySQL Error 1242 if a table had more than one column of type BLOB. (Bug #115033, Bug #36658194)

  • The upgrade checker utility reported Zero Date errors for views using the NOW() and SYSDATE() functions.

    As of this release, views are excluded from the Zero Date check. (Bug #114347, Bug #36403042)

Functionality Added or Changed

  • The MySQL Shell log format has been updated to include the process (PID) and thread ID (TID). (Bug #114343, Bug #36402272, Bug #24678752)

  • MySQL Shell now supports OpenID Connect. The authentication_openid_connect client plugin is bundled with your MySQL Shell installation.

    See Using OpenID Connect.

    OpenID Connect authentication is supported by MySQL Enterprise Edition, only. (WL #16470)

Bugs Fixed

  • MySQL Shell failed to start if installed by MSI on Microsoft Windows 11 with Visual Studio Redistributable version 14.3x or lower. On Windows platforms, MySQL Shell requires Visual Studio Redistributable version 14.4x or higher.

    See Microsoft Visual C++ Redistributable latest supported downloads. (Bug #37049411)

  • The MySQL Shell MSI progress dialogs displayed numbered placeholders instead of the installation values. (Bug #37033676)

  • When running MySQL Shell over SSH, if a command was entered on the command line, but not executed, closing the SSH session could result in the command being executed without user input. (Bug #36861912)

  • MySQL Shell closed unexpectedly if autocomplete (tab) was used for a \command followed by a space. (Bug #36858205)

  • MySQL Shell set the environment variable PYTHONHOME on all platforms even if Python was not bundled. As of this release, PYTHONHOME is no longer set and the bundled Python executable is moved to another directory on Windows platforms, which corresponds to the structure used by a standalone Python installation. (Bug #36836320)

  • The Python library hashlib could not be imported on MacOS platforms. (Bug #36803237)

  • MySQL Shell did not register interactive connections as interactive. As a result, the system variable interactive_timeout was not honored.

    As of this release, interactive connections are treated as such. You can also define a connection as interactive with the new MySQL Shell connection option, client-interactive. (Bug #36339280)

  • MySQL Shell error codes were not returned for commands run in CLI mode. (Bug #36156164)

  • The URI parser threw an exception if the URI contained an unescaped @ character. (Bug #36105235)

  • Corrected a typo in the return value for ClassicResult.getStatementId.

    Thanks to Mustafa Uzun for the contribution. (Bug #112718, Bug #35912863)


PREV   HOME   UP