MySQL Shell Release Notes  /  Changes in MySQL Shell 8.3.0 (2024-01-16, Innovation Release)

Changes in MySQL Shell 8.3.0 (2024-01-16, Innovation Release)

AdminAPI Added or Changed Functionality

  • ipWhitelist, deprecated in MySQL Shell 8.0.22, is removed in this version. Use ipAllowlist for MySQL Server and MySQL Shell 8.3.0, or higher. (Bug #35845603)

  • AdminAPI supports GTID tags for MySQL 8.3.0, or higher. To use GTID tags, all instances in a Cluster, ClusterSet, or ReplicaSet, must be version 8.3.0, or higher. For example, attempting to add an instance of version 8.3.0 or higher to a Cluster running lower versions will result in a Malformed GTID error on the primary and the operation will fail. (Bug #35605595)

  • The following commands were added to AdminAPI for ReplicaSets:

    • replicaSet.dissolve(): dissolves the ReplicaSet.

    • replicaSet.rescan(): rescans the ReplicaSet.

    • replicaSet.describe(): returns a JSON object showing the topology of the ReplicaSet.

    See MySQL InnoDB ReplicaSet. (Bug #33199178, Bug #33516540, WL #14870)

AdminAPI Bugs Fixed

  • Cluster.rescan() failed to add unmanaged instances to the Cluster if the unmanaged instances used an unsupported recovery account format.

    As of this release, Cluster.rescan() checks for such unsupported account formats, creates the required account, assigns it to the recovery channel, and informs the user of the actions taken.

    Also, when using replicaSet.createReplicaSet() to adopt an existing channel (adoptFromAR: 1), it now ensures the channel uses the correct account format, creating the account if necessary. replicaSet.rescan() performs the same check and also creates the account if necessary. (Bug #35997569, Bug #35992885)

  • The server system variable slave_parallel_workers and replica_parallel_workers are removed in 8.3.0 and can not be set or read by MySQL Shell for MySQL Server 8.3.0 or higher.

    For earlier versions of MySQL Server, the behavior of MySQL Shell is unchanged and applierWorkerThreads is still available. (Bug #35918575)

  • replica_parallel_type is deprecated in MySQL Server 8.3.0. AdminAPI no longer uses that variable if the Server version is 8.3.0 or higher. (Bug #35918518)

  • The variables relay_log_info_repository and master_info_repository are removed in MySQL Server 8.3.0. AdminAPI no longer uses those variables if the target server is version 8.3.0, or higher. (Bug #35913892)

  • AdminAPI no longer retrieves the primary member ID from the system variable group_replication_primary_member, which was deprecated in MySQL Server 8.0.4 and removed in MySQL 8.3.0. As of this release, for all versions of MySQL Server 8.0.4 or higher, the ID is retrieved from the MEMBER_ID column of performance_schema.replication_group_members table. (Bug #35913856)

  • The system variable transaction_write_set_extraction (deprecated in MySQL 8.0.26) is removed in MySQL 8.3.0. This variable was a requirement for InnoDB Cluster and was checked by dba.checkInstanceConfiguration() and dba.createCluster(), and was set by dba.configureInstance().

    As of MySQL Shell 8.3.0, transaction_write_set_extraction is neither set nor checked by any AdminAPI command. (Bug #35845680)

  • As of this release, AdminAPI no longer sets a value for group_replication_view_change_uuid on Clusters running MySQL Server 8.3.0 or higher. (Bug #35836245)

  • Cluster.rescan() did not correctly handle missing recovery account users. If it encountered a user with an unexpected format, and the correct format was missing, it did not attempt to create the correct user.

    Errors similar to the following were logged by the Cluster.status() command:

    WARNING: Incorrect recovery account (mysql_innodb_cluster_3337079193) being used. Use Cluster.rescan() to repair.

    As of this release, Cluster.rescan() creates the missing user. (Bug #35828910)

  • AdminAPI persisted all variables related to Group Replication or InnoDB Cluster even if the required value was the default. As of this release, the variable is checked to ensure the default value matches the requirement and does not persist it if it does.

    For MySQL 5.7 instances, this is done using dba.configureLocalInstance(). For MySQL 8.0, or higher, this is done using dba.createCluster(). (Bug #35806236)

  • Sandbox deployment did not take symlinks into account when generating the start/stop scripts. As a result, for example, if the server was upgraded and the symlink changed, the scripts used the wrong path.

    As of this release, the canonical path to the binaries is used, not symlinks. (Bug #35672985)

  • Cluster.forceQuorumUsingPartitionOf() did not retrieve the admin account credentials from the current session, unlike all other AdminAPI commands, if they were not provided explicitly.

    As of this release, Cluster.forceQuorumUsingPartitionOf() uses the user credentials of the current session, if not explicitly provided. (Bug #35370180)

  • ReplicaSets still used metadata locks, which were deprecated in MySQL Shell 8.0.33. As of this release, ReplicaSets no longer use metadata locks. (Bug #35015556)

  • If dba.createCluster(), Cluster.addInstance(), or Cluster.rejoinInstance() failed, they did not change altered system variables back to their original values. (Bug #34969740)

  • Cluster.resetRecoveryAccountsPassword() did not cycle the automatically-generated passwords for Read Replica channels. (Bug #34858086)

  • Cluster.rescan() always returned an X protocol-related error for connection failures, even when the issue was not X Protocol-related or the X Protocol was not in use. (Bug #33865464)

    References: See also: Bug #35410360.

  • It was possible to add an instance to a Cluster although the instance was already a member of the Cluster but was considered MISSING. An error was returned stating that the server_uuid is already in use by itself.

    As of this release, Cluster.addInstance checks if the instance is already part of the Cluster and recommends the use of Cluster.rejoinInstance instead. (Bug #30896233)

Utilities Added or Changed Functionality

  • As of this release, util.loadDump() and util.copyInstance() automatically exclude the mysql_audit and mysql_firewall schemas if the target is a MySQL HeatWave Service DB System. (Bug #35830920)

  • As of this release, all failed connections to AWS S3 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 #35396788)

  • It is now possible to generate a checksum for a dump to enable you to validate your data on import. The option checksum: [true | false] is added to the following utilities:

    • util.dumpInstance(), util.dumpSchemas(), and util.dumpTables(): a metadata file, @.checksums.json is generated containing the details of the dumped data and a checksum for each.

    • util.loadDump(): validates the checksums after the data is loaded.

    • util.copyInstance(), util.copySchemas(), and util.copyTables(): generate the metadata file, @.checksums.json, and validate the data.

    (WL #15947)

  • util.checkForServerUpgrade() now checks for deprecated authentication methods and displays advice. (WL #15973)

Utilities Bugs Fixed

  • util.loadDump() ignored leading zeroes (0) in S3 bucket prefix names. (Bug #36041691)

  • Interrupting (Ctrl+c) a single-file import by util.importTable() did not always result in an interrupted exception. The exception was thrown only if the file was being read at the time the interruption occurred.

    As of this release, the exception is always thrown for an interruption. (Bug #35992658)

  • An incorrect import strategy, one-file-per-thread, was used if a single file was imported with the special characters * and ? escaped. (Bug #35895247)

  • The metadata displayed by enabling the showMetadata option of util.loadDump() was not saved to the log file. As of this release, the metadata is logged if showMetadata is enabled.

    The metadata generated by the util.copyInstance() operation is also logged. (Bug #35883344)

  • It was not possible to dump a table which consisted of a single generated column. (Bug #35860654)

  • MySQL Shell stopped responding when attempting to load an incomplete dump.

    As of this release, MySQL Shell checks the dump to ensure the expected metadata and data files are present, and generate errors if any are missing. (Bug #35822020)

Functionality Added or Changed

Bugs Fixed

  • It was not possible to type the upper-case, Cyrillic letter, И, and several other unicode characters in MySQL Shell (Bug #104795, Bug #33306119)


PREV   HOME   UP