This release is no longer available for download. It was removed due to a dependency on a version of the server which is also no longer available for download. See MySQL 9.0.0 Release Notes. Please upgrade to MySQL Shell 9.0.1 instead.
-
InnoDB ReplicaSet locking has been updated and simplified; no longer requiring multiple per-instance locks.
See InnoDB ReplicaSet Locking. (Bug #35913824)
-
It is now possible to dissolve a ClusterSet, partially or completely, using the following methods:
clusterSet.dissolve()
: dissolves the ClusterSet completely by stopping replication between each replica and primary Cluster and removing any metadata related to the ClusterSet. Each cluster of the ClusterSet is also dissolved.The
dissolve
option ofclusterSet.removeCluster()
: removes the specified Cluster from the ClusterSet, enabling it to function as a standalone Cluster.
See Dissolving a ClusterSet. (Bug #108373, Bug #34564242, WL #15378)
-
It is now possible to execute SQL on all reachable members of a Cluster, ClusterSet, or ReplicaSet, using
.execute()
.See Executing SQL on Topologies. (WL #15820)
MySQL Shell closed unexpectedly when calling certain AdminAPI functions on EL7 platforms. (Bug #36651010)
-
dba.reboot_cluster_from_complete_outage()
disabledsuper_read_only
on the primary member of an INVALIDATED Cluster. As a result, clients continued to perform updates and introduce errant transactions.As of this release,
dba.reboot_cluster_from_complete_outage()
enablessuper_read_only
on the primary member and disables the Group Replication actionmysql_disable_super_read_only_if_primary
. (Bug #36562916) -
If an attempt to create a Replica Cluster failed due to a timeout and the revert also failed due to a timeout, the Replica Cluster could be left in an inconsistent state; ONLINE, but not associated with the ClusterSet's metadata. This specific issue was caused by low values for
wait_timeout
andinteractive_timeout
.The following changes were made:
wait_timeout
is checked and, if set to a value lower than the default of 8 hours, is set to 8 hours.
is extended with a new option,Cluster
.rescan()repairMetadata
which can be enabled to resolve inconsistencies in the Cluster's metadata.
can now be used on Clusters in this inconsistent state.Cluster
.dissolve()
(Bug #36495756)
-
The documentation for Rescanning a Cluster did not make clear that while
group_replication_transaction_size_limit
is set to the maximum value in Replica Clusters, the original value is stored in the metadata schema and is restored by
in the event of a switchover or failover. This overwrites any user-defined value set on the Replica Cluster.Cluster
.rescan()The documentation is updated with this information. (Bug #36494958)
-
Recent enhancements enabled MySQL Router to expose its configuration and defaults in the metadata schema. However, the
remove_router_metadata
function was not updated to properly clean this data.Also, the
router_options()
function filtered the common options from the default options list. (Bug #36276246) -
reboot_cluster_from_complete_outage()
failed for a Replica Cluster if Group Replication was stopped and the replication channel reset. This failure was caused by the absence of the recovery user.As of this release,
reboot_cluster_from_complete_outage()
always recreates the recovery user. (Bug #35181181)
-
The following check was added to the Upgrade Checker utility:
foreignKeyReferences
: Checks for foreign keys referencing non-unique and partial indexes.
(Bug #36553868)
-
The following Upgrade Checker utility sysvar checks have been combined into a single check,
sysvars
:sysVarsNewDefaults
sysvarAllowedValues
removedSysVars
See Utility Checks. (WL #16262)
-
The following utilities now support Instance and Resource Principal authentication on Oracle Cloud Infrastructure:
util.dumpInstance()
util.dumpSchemas()
util.dumpTables()
util.loadDump()
util.exportTable()
util.importTable()
Each utility is extended with a new option,
ociAuth
, which enables you to specify one of the following Oracle Cloud Infrastructure authentication types:api_key
instance_principal
resource_principal
security_token
See MySQL Shell Utilities. (WL #15884)
The formatting of the report returned by the Upgrade Checker utility's
invalidPrivilege
check is improved in this release. Instead of returning a message for each user, the users are grouped with the message. (Bug #36613895)-
As of this release, all failed connections to the supported object storage platforms are retried three times, with a 1 second delay between retries.
If a failure occurs 10 minutes after the connection was created, the delay is changed to an exponential back-off strategy:
First delay: 3-6 seconds
Second delay: 18-36 seconds
Third delay: 40-80 seconds
(Bug #36597063, Bug #36256053)
References: See also: Bug #35396788.
-
restrict_fk_on_non_standard_key
, introduced in MySQL 8.4.0, prohibits creation of foreign keys which reference only part of a composite key when enabled. This system variable is enabled by default on MySQL HeatWave Service and resulted in errors loading dumps which contained such keys when detected by the Upgrade Checker utility'sforeignKeyReferences
check.As of this release, a new compatibility option is added the dump utilities,
force_non_standard_keys
. This disables checks for non-standard foreign keys, and cause the loader to set the session value ofrestrict_fk_on_non_standard_key
to OFF. (Bug #36553849) -
Primary keys defined on an
ENUM
column were reported as missing for dumps withocimds:true
. This was caused by a fix in an earlier version which instructed the dump utility to ignore primary keys or unique indexes which contain one or moreENUM
columns when selecting an index for chunking.As of this release, information about the index selected for chunking and whether the table has a primary key is separated. (Bug #36493316)
References: See also: Bug #35180061.
As of this release, the Schema Dump utility uses the
JSON
output format for its generatedEXPLAIN
plans. This was done for compatibility reasons. (Bug #36470302)-
It was not possible to run the Upgrade Checker utility against an MySQL HeatWave Service DB System. An error was returned relating to missing
RELOAD
privileges.RELOAD
is not granted to MySQL HeatWave Service users.RELOAD
is not required by the Upgrade Checker when run against MySQL HeatWave Service DB Systems, it is only required against MySQL 5.7.x. As such, the requirement is removed in this release. (Bug #36361159) -
The Upgrade Checker utility did not validate the value of the
configPath
parameter.As of this release, the value of
configPath
is validated before running the upgrade checks. (Bug #36332625) The Upgrade Checker utility behaved inconsistently in the absence of certain privileges. Sometimes returning an error and sometimes attempting to run its checks. (Bug #36332031)
The Upgrade Checker utility's
sysvarAllowedValues
did not take into account empty strings as valid values for certain variables, such asssl_cipher
, resulting in false negative errors in the report. (Bug #36298612)It was not possible to use the Copy utilities with certain MySQL-compatible databases. SQL syntax errors were returned. (Bug #36297963)
-
util.collect_diagnostics()
failed with anAttributeError
when run against an InnoDB Cluster on which the Group Replication plugin was uninstalled from one or more members. The utility attempted to retrieve values for Group Replication system variables which did not exist because the plugin was uninstalled.Thanks to Ioannis Androulidakis for the contribution. (Bug #114707, Bug #36589677)
-
Fixed an issue with non-ASCII character handling in the Upgrade Checker utility's
schemaInconsistency
check.Thanks to Daniel Lenski and Amazon for the contribution. (Bug #114127, Bug #36340714)
The
mysql_native_password
client plugin is now bundled with MySQL Shell. (Bug #36610756)-
MySQL Shell supports the VECTOR type introduced in MySQL 9.0.
(Bug #36252107, Bug #36253120)
-
In previous versions, if neither port nor protocol were specified in the connection string, MySQL Shell automatically used the X Protocol. As of this release:
If neither port nor protocol are specified, the default is Classic Protocol.
If port is specified but protocol is not, the default is Classic Protocol.
In either case, if Classic Protocol fails, X Protocol is attempted instead. (WL #16317)
-
The
shell
global object is extended withregister_Sql_Handler
, a function which enables you to register a custom SQL handler. This handler can execute pre-processing steps for the given SQL statements and extend the supported SQL statements with non-standard SQL.See Custom SQL Handler. (WL #15949)
MySQL Shell closed unexpectedly if a native Python object was passed to a Python plugin function. (Bug #36502096)
MySQL Shell did not prompt for a password if
-p
was specified on the command line without an argument. (Bug #36433418)Under certain circumstances, a password prompt was not returned although no password was provided on the command line or defined in a configuration file. (Bug #36422502, Bug #36422492)
--no-password
did not work if a password was defined in the server's configuration file or if it was provided earlier in the command line. (Bug #36422408)Auto-complete was not available in the
\sql
command. (Bug #36420389)-
If
logSql
was set toERROR
, MySQL Shell logged the SQL without filtering for unsafe statements. As of this release, the pattern defined inlogSql.ignorePatternUnsafe
is used to filter unsafe SQL from the log.Also, the pattern which triggered the filter is logged. (Bug #36014067)
-
Special characters, such as tab or newline, were not supported in utility calls from the command line. For example, in the following command,
\t
was not properly handled:> mysqlsh root@localhost -- util import-table sample_us.tsv --schema=test --table=samples --fieldsTerminatedBy="\t"
(Bug #34887426)
Upgrading MySQL Shell 8.0.35, or higher, on Windows platforms, resulted in multiple installations instead of overwriting the existing installation. (Bug #113732, Bug #36259270)