AdminAPI no longer supports MySQL 5.7. Any AdminAPI command run against that version returns an error.
The helper command,
--dba=enableXProtocol
, is deprecated and subject to removal in a future release. (Bug #36380502)AdminAPI no longer uses the deprecated Group Replication system variable,
group_replication_allow_local_lower_version_join
. (Bug #36187059)-
The following functionality, deprecated in previous releases, was removed in this release:
-
The following command line arguments:
--ssl
--node
--classic
--sqln
--import
--recreate-schema
--dbuser
. The corresponding API attribute,dbUser
was also removed.--dbpassword
. The corresponding API attribute,dbPassword
was also removed.-n
and-c
were removed from the\connect
command.--fido-register-factor
. The pluginsauthentication_fido
andauthentication_fido_client
are no longer packaged with MySQL Shell.
-
The following functions:
arrayDelete()
andmerge()
were removed fromCollectionModify
.skip()
was removed fromCollectionFind
.getWarningCount()
was removed fromBaseResult
.getAffectedItemCount()
was removed fromResult
.getAffectedRowCount()
andnextDataSet()
were removed fromSqlResult
.query()
was removed fromClassicSession
.
The
ociParManifest
andociParExpireTime
options were removed from the Dump utilities. (WL #11816, WL #15955) -
-
The following, deprecated in previous releases, have been removed from AdminAPI:
-
Commands:
dba.configureLocalInstance()
cluster.checkInstanceState()
-
Options:
ipWhitelist
was removed from all commands which contained it.connectToPrimary
was removed fromdba.getCluster()
.clearReadOnly
was removed from all commands which contained it.failoverConsistency
was removed from all commands which contained it.multiMaster
was removed fromdba.createCluster()
.groupSeeds
was removed from all commands which contained it.memberSslMode
was removed from
andcluster
.addInstance()cluster.rejoinInstance()
.queryMembers
was removed from
.cluster
.status()user
andpassword
were removed from all commands which contained them.interactive
was removed from all commands which contained it.waitRecovery
was removed from all commands which contained it.updateTopologyMode
was removed from
.cluster
.rescan()
(WL #15870)
-
As of MySQL 8.4.0, the default value of
group_replication_consistency
is changed fromEVENTUAL
toBEFORE_ON_PRIMARY_FAILOVER
. As a result, the corresponding option in the AdminAPI,consistency
was updated for MySQL 8.4.0 or higher. For previous versions, the default remainsEVENTUAL
. (Bug #36057775)-
Cloning version compatibility checks for donor and recipient instances are relaxed. As of this release, with certain conditions, only the major and minor version numbers need to match, the patch number is now disregarded.
The following conditions apply:
Only version 8.0.17, or higher, can perform cloning.
If both versions are 8.0.37, or higher, only the major and minor versions are required to match.
If the version is 8.0.17, or higher, and less than 8.0.37, major, minor, and patch numbers must match.
(Bug #36054489)
-
InnoDB Cluster Read Replicas now support certificate-based authentication.
The following changes were made to the
method:cluster
.addReplicaInstance()The option
certSubject
was added. This option specifies the certificate subject of the instance, used if the Cluster'smemberAuthType
isCERT_SUBJECT
orCERT_SUBJECT_PASSWORD
.The method now uses the Cluster's
memberSslMode
value to configure the authentication type of the Read Replica's replication channel.The method performs a connectivity check, using the configured
memberSslMode
before updating the topology.If the Cluster's
memberAuthType
isCERT_SUBJECT
orCERT_SUBJECT_PASSWORD
, the method verifies the server's certificate.
was updated to returncluster
.options()certSubject
in thetopology
array. (WL #16123) -
As of this release, MySQL Router exposes its configuration in the Cluster metadata for all routers bootstrapped against it. This information is stored as JSON in the Cluster metadata schema and can be accessed by the MySQL Shell operation,
for Cluster, ClusterSet, and ReplicaSets.object
.routerOptions()See Working with a Cluster's Routers.
The operation
is deprecated and scheduled for removal in a future release. (WL #15954)object
.routingOptions()
-
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)
-
If the primary instance of a Replica Cluster was changed, attempting to remove that Cluster from the Cluster set failed with the following error:
ERROR: Error enabling automatic super_read_only management at secondary:port: MySQL Error 3910 (HY000): The function 'group_replication_enable_member_action' failed. Member must be the primary or OFFLINE.
(Bug #36400360)
-
If AdminAPI operations were run against an unsupported version of MySQL, an error was returned. The error did not contain sufficient information.
As of this release, the error returned contains information on the minimum and maximum versions of MySQL supported by the current version of AdminAPI. (Bug #36338711)
andclusterSet
.setPrimaryCluster
invokedreplicaSet
.setPrimaryClusterFLUSH TABLES WITH READ LOCK
whendryRun
was enabled. These operations no longer invoke that statement for dry runs. (Bug #36314520)-
accepted the address as the router name instead of the properly qualified router identifier,cluster
.setRoutingOption()
.address
::router_name
As of this release, the router identifier is properly validated. (Bug #36267549)
-
When adding a Read Replica to a cluster which belonged to a ClusterSet, it was possible to specify a replication source which was an instance of the primary or Replica Cluster. This could be done using the
replicationSources
parameter.As of this release, a check is added which prohibits replication sources which do not belong to the Cluster where the command was run to be used as a Read Replica's replication sources.
This check was also added for the
cloneDonor
parameter ofrejoinInstance()
,createReplicaCluster()
, andaddReplicaInstance()
.Also, when calling
setInstanceOption()
with thereplicationSources
parameter, the source is checked to ensure it is not a Read Replica, the same instance, has a valid state, is reachable, and belongs to the correct Cluster. (Bug #36229274) -
It was possible to remove a Cluster member, in a ClusterSet, which belonged to another Cluster. This could result in an unrecoverable ClusterSet.
As of this release, the instance targeted for removal is checked to ensure it is a member of the Cluster from which the command is run. (Bug #36229123)
-
Attempting to use
dba.rebootClusterFromCompleteOutage()
with a Read Replica as seed, resulted in an error similar to the following:Dba.rebootClusterFromCompleteOutage: Group replication does not seem to be active in instance 'db3.mysql.cluster:3306' (RuntimeError)
As of this release, the error message provides useful information on what has happened and how to fix it. (Bug #36225607)
-
dba.createReplicaSet
withadoptFromAR:true
could fail if the host and port values returned were not properly configured on the target instance. The error returned did not provide useful information.As of this release, if the target instance does not have properly configured host and port values, it is ignored and the user is informed. (Bug #36201015)
-
The system variable
binlog_transaction_dependency_tracking
was deprecated in MySQL 8.0.35 and 8.2.0 and was removed in MySQL 8.4.0. As of MySQL 8.4.0, the server uses theWRITESET
behavior by default and it is no longer verified or set by the AdminAPI for MySQL 8.4.0.The behavior is unchanged for previous versions of MySQL. (Bug #36057800)
-
An error should have been returned when
certIssuer
,certSubject
,replicationSslMode
, and any value ofcertIssuer
other thanPASSWORD
were used when adopting a Cluster or ReplicaSet usingadoptFromGR=true
. Instead, the invalid options were ignored.As of this release,
dba.createCluster()
anddba.createReplicaSet()
validate these options and return an error if they are used withadoptFromGR=true
. (Bug #36029413) -
Running
on an instance in ERROR state, resulted in errors stating that Group Replication settings cannot be changed while Group Replication is running.Cluster
.rejoinInstance()As of this release, running
on an instance in ERROR state, automatically stops Group Replication before proceeding with the rejoin process. (Bug #35387205)Cluster
.rejoinInstance() -
AdminAPI no longer retrieves information from the following tables on MySQL 8.4, or higher:
mysql.slave_master_info
mysql.slave_relay_log_info
The information which was retrieved from those tables is now retrieved from the Performance Schema.
NoteBehavior is unchanged on instances older than MySQL 8.4.
(Bug #32091724)
-
A new entry,
dbObjectType
, is added to the Upgrade Checker utility's JSON output. It contains the type ofdbObject
which caused the check failure.See JSON Output from the Upgrade Checker Utility. (Bug #36394895)
The Upgrade Checker now recommends an upgrade path for older versions. For example, if run against MySQL 5.7, it recommends upgrading to MySQL 8.0 before attempting an upgrade to MySQL 8.4. (Bug #36359408)
-
It is now possible to skip the default upgrade check when running a dump utility with
ocimds:true
, using theskipUpgradeChecks
option.See Options for Dump Control. (Bug #36227750)
The
util.loadDump()
summary is enhanced to show the time required for each stage, and throughput progress now includes rows per second. (Bug #36197620)-
It is now possible to specify the level of compression for gzip and zstd on the
exportTables
and dump utilities.-
gzip
: Compression level can be set from 0 to 9. Default compression level is 1. For example:"compression": "gzip;level=4"
-
zstd
: Compression level can be set from 1 to 22. Default compression level is 1. For example:"compression": "zstd;level=15"
(Bug #36050770)
-
A new check is added to the upgrade checker utility,
deprecatedRouterAuthMethod
. This checks for deprecated or invalid authentication methods in use by MySQL Router internal accounts. (Bug #36004507)The Upgrade Checker check,
orphanedRoutines
, is renamedorphanedObjects
and includes support for orphaned events. (Bug #31335863)-
The following options were added to the upgrade checker utility.
include
: comma-separated list of checks to perform.exclude
: comma-separated list of checks to ignore.list
: returns a list of all checks which apply to the current configuration.
See Utility Checks. (WL #15974)
The upgrade check,
partitionsWithPrefixKeys
, is added to the Upgrade Checker utility. This checks for columns with index prefixes as part of a table's partitioning key. This was deprecated in MySQL 8.0.21 and removed in MySQL 8.4. The check is enabled by default for any upgrade from a version prior to MySQL 8.4.0 to MySQL 8.4.0 or higher. (WL #16159)-
The following checks were added to the Upgrade Checker utility:
removedSysVars
: Checks for system variables which are in use in the source but were removed in the target version. Meaning the system variables are set on the source with non-default values.sysVarsNewDefaults
: Checks for system variables with different default values in the target version.sysvarAllowedValues
: Checks system variables for valid values.invalidPrivileges
: Checks for user privileges that will be removed.pluginUsage
: Checks for deprecated or removed plugins.
(WL #16135)
-
Under certain circumstances,
util.loadDump()
could fail while executing the final stage, the postamble SQL file. The connection to the server was lost.As of this release, if the connection was lost, it is retried. However, statements which are not idempotent are not retried, nor are statements which load data. (Bug #36381849)
Under certain circumstances, MySQL Shell could close unexpectedly while computing checksum values. (Bug #36323625)
Improved the performance of the upgrade checker utility on MySQL 5.7 instances containing thousands of schemas and tables. (Bug #36223266)
Under certain circumstances, a copy operation could stop responding while scanning the target instance for metadata. (Bug #36221818)
-
The dump utilities included the MySQL HeatWave Service-reserved username
oracle-cloud-agent
resulting in the following error:User 'oracle-cloud-agent'@'localhost' is using an unsupported authentication plugin 'auth_socket' (fix this with 'skip_invalid_accounts' compatibility option)
The following users are now excluded when loading to, or dumping from, an MySQL HeatWave Service instance:
ocidbm
oracle-cloud-agent
rrhhuser
(Bug #36159820)
-
Loading a dump on Windows platforms failed if
sql_mode
was set toSTRICT_ALL_TABLES
. The following error was returned:ERROR 1231 (42000): Variable 'wait_timeout' can't be set to the value of '31536000'
The load utility attempted to set a maximum value for
wait_timeout
which is not permitted on Windows platforms. (Bug #36119568) -
Under certain circumstances dump and load operations could fail with CURL errors
Connection reset by peer
.As of this release, the operations are retried in the event of CURL errors
CURLE_SSL_CONNECT_ERROR (35)
andCURLE_SEND_ERROR (55)
. (Bug #36022084, Bug #36201255) -
When
util.dumpInstance()
was run withocimds:true
, the upgrade checker utility ran on the entire instance even if schema or table filtering was enabled on theutil.dumpInstance()
operation.As of this release, the upgrade checker utility only runs on the schemas or tables being dumped. (Bug #35891996)
-
The upgrade checker utility did not check for the presence of columns partitioned with temporal types which used non-standard temporal delimiters. As a result, the upgrade could fail or tables could be inaccessible after the upgrade. Non-standard delimiters were deprecated in MySQL 8.0.29.
As of this release, the upgrade checker checks for such delimiters. (Bug #113050, Bug #36004848)
The upgrade checker utility did not check for all old temporal types. Under certain circumstances, this could result in an upgrade failure. (Bug #112991, Bug #36029331)
-
MySQL Shell's default mode is changed from
js
(JavaScript) tosql
in this release.NoteAs of this release, to execute JavaScript code from the command line, you must add the
--js
option to your command. For example:mysqlsh user@host:3306 --js -e "println(session)"
(Bug #36348763)
MySQL Shell's help command (
\help
or\?
) now supports autocomplete. (Bug #36340752)Output for the
thread --locks
report now includes information on metadata locks. Also, information on table handles, mutexes, data locks, and RWlocks was added to thethread --raw-locks
report. (Bug #36055675)The V8 JavaScript engine used by MySQL Shell was updated to version 12.0.267.8. (WL #15948)
-
MySQL Shell returned a socket-specific connection message to the localhost although the connection was TCP and to a remote host. This occurred if a socket path was specified either in the configuration file or on the command line.
As of this release, the transport to use is determined by the right-most parameter on the command line. (Bug #112115, Bug #35751281)