MySQL Shell 8.0 Release Notes
The TLSv1 and TLSv1.1 connection protocols are now deprecated, and support for them is subject to removal in a future MySQL Server version. (For background, refer to the IETF memo Deprecating TLSv1.0 and TLSv1.1.) It is recommended that connections be made using the more-secure TLSv1.2 and TLSv1.3 protocols. TLSv1.3 requires that both the MySQL server and the client application be compiled with OpenSSL 1.1.1 or higher.
MySQL Shell’s --tls-version
command
option, which is one of the options available to configure an
encrypted connection at startup of MySQL Shell, now returns a
deprecation warning if you specify TLSv1 or TLSv1.1 explicitly
as part of the value for the option.
(WL #14560)
The last instance that remains in ONLINE
status in an InnoDB Cluster cannot be removed using the
operation. Previously, when this was attempted, the operation
failed with an unrelated error, but it is now handled correctly.
(Bug #32955287)cluster
.removeInstance()
AdminAPI operations no longer change the Group Replication
communication protocol version automatically in situations where
it is possible to increase the version due to a change in group
membership. The automated operations caused delays on changes to
the cluster. Instead, where relevant, the operations return a
message to inform the user that a version upgrade should be
carried out. A new option upgradeCommProtocol
has been added to the rescan()
operation so
that the administrator can upgrade the communication protocol
version when they choose to do so.
(Bug #32769580)
When loading a dump that was already in progress, MySQL Shell's
dump loading utility util.loadDump()
flagged
a table as ready to process before the metadata was read, which
could potentially result in an issue in the event that the
metadata was not completely downloaded and parsed before
processing began on the table.
(Bug #32934878)
When MySQL Shell's dump loading utility
util.loadDump()
was used to load a dump that
contained a zero value in an AUTO_INCREMENT column, the utility
did not set the NO_AUTO_VALUE_ON_ZERO SQL mode, meaning that the
next sequence number was generated and used instead. The
behavior has now been corrected.
(Bug #32926856)
MySQL Shell's instance dump utility
util.dumpInstance()
, schema dump utility
util.dumpSchemas()
, and table dump utility
util.dumpTables()
now report an error for a
table that uses ROW_FORMAT=FIXED
when the
ocimds
option is used, and remove that clause
from CREATE TABLE
statements when the
force_innodb
compatibility modification is
specified.
(Bug #32925914)
MySQL Shell now bundles Python 3.9.5 for platforms where Python 3 is not included or is not at the minimum supported version. The previous bundled version was Python 3.7.7. (Bug #32924896)
From MySQL Shell 8.0.26, you can use MySQL Shell's instance
dump utility util.dumpInstance()
to dump user
accounts from a MySQL 5.6 instance. The SUPER privilege is
required when user accounts are included in the dump.
(Bug #32883314)
The error messages returned by MySQL Shell's instance dump
utility util.dumpInstance()
, schema dump
utility util.dumpSchemas()
, and table dump
utility util.dumpTables()
have been enhanced
to provide more context for the error, such as the schema or
table involved and the step that was being executed. The
utilities also now cache frequently used values such as quoted
table names. Other enhancements have been made to optimize the
chunking procedure.
(Bug #32850177)
MySQL AdminAPI now uses the terms “source”, “replica”, and “mta” for target MySQL instances where these terms are used in system variables and other areas, and user messages have been updated to use the new terms. (Bug #32774826)
If the primary key of a table was a signed integer, an overflow
in the data range during chunking by MySQL Shell's instance
dump utility util.dumpInstance()
, schema dump
utility util.dumpSchemas()
, and table dump
utility util.dumpTables()
could cause
MySQL Shell to consume excessive memory and disk space.
(Bug #32773468)
Previously, when MySQL Shell's instance dump utility
util.dumpInstance()
, schema dump utility
util.dumpSchemas()
, and table dump utility
util.dumpTables()
were run with the
dryRun
option set to true
,
so that the data was not actually dumped, the utilities
attempted to acquire the needed table locks. To avoid impacting
on the database, the utilities now only check whether the user
ID has the appropriate privilege to acquire a lock, and behave
according to the result. Any missing privileges are reported.
The utilities’ method of fetching user privileges has also
been refactored to use the SHOW GRANTS
statement, and to support partial revokes.
(Bug #32695301)
X DevAPI’s ClassicSession and Session objects have a new
method getSocketFd
to fetch the session’s
socket descriptor. The Session object has new methods
enableNotices
and
fetchNotice
to fetch asynchronous
notifications published by X Protocol for Group Replication
events such as view changes.
(Bug #32665405)
On UNIX systems, the list of plugins could not be retrieved from MySQL Shell’s plugins repository because the manifest path was specified in Windows format. The path has now been changed to POSIX mode. (Bug #32663889)
MySQL Shell’s command-line integration did not support deprecated options and treated them as invalid. (Bug #32651899)
MySQL Shell's instance dump utility
util.dumpInstance()
, schema dump utility
util.dumpSchemas()
, and table dump utility
util.dumpTables()
use an algorithm to divide
table data into chunks. If the algorithm carried out chunking
using an integer column, large gaps in the sequence of integers
caused by deleted rows could result in the ranges and chunks
becoming increasingly larger until the benefit of chunking was
lost. The algorithm has now been improved to use an increased
number of iterations and make additional checks if the results
are not as expected.
(Bug #32602325)
MySQL Shell’s log now records more detailed information when there is an issue with an Oracle Cloud Infrastructure operation, including the target URL, the request and response headers, and the response data. If the target URL is a pre-authenticated request (PAR), the sensitive components are masked in the log file.
An issue with a change to the logging level of messages not activating message logging at the right level has also been fixed. (Bug #32593125)
MySQL Shell retrieved SQL identifiers that used quoting as a series of separate tokens. (Bug #32532347)
MySQL Shell's instance dump utility
util.dumpInstance()
, schema dump utility
util.dumpSchemas()
, and table dump utility
util.dumpTables()
use multiple threads to
dump data from the MySQL instance, each using its own session.
If one of these threads was slow to start and an exception was
thrown in the main dumper thread in the meantime, a segmentation
fault occurred when the thread tried to access the main dumper
thread’s session. The utilities now keep the main dumper
thread’s session available even after an exception is thrown,
and only delete it when the utility ends.
(Bug #32528110)
In MySQL Shell’s JavaScript mode, if a variable was defined
using the let
keyword but was not properly
initialized, it was left in a state where it could neither be
accessed nor initialized. MySQL Shell now permits variables
defined using the let
keyword to be redefined
with a different value, which can be used to correct the issue.
Variables defined using the const
keyword
cannot be redefined in this way.
(Bug #32470621)
When an integer value received by MySQL Shell was converted for representation in JavaScript mode, rounding errors occurred for values greater than 2 ^ 31 – 1. The data type used for the conversion has been changed so that values up to the limit accepted by the JavaScript language can be converted correctly. (Bug #32423886)
MySQL Shell’s Python mode implements its own array wrapper
for lists. Previously, the isinstance
function did not identify these as the list
object type. The implementation has been changed to inherit from
Python’s list
so that the
isinstance
function operates correctly.
MySQL Shell stores data in the array wrapper rather than the
base class. Due to this fact, and the fact that data is shared
between MySQL Shell’s Python and JavaScript modes, it is only
safe to use lists to store basic data types and MySQL Shell
global objects.
(Bug #32220514)
MySQL Shell's Python mode now provides full support for
programs that use multithreading. Using the new function
shell.createContext
, output, logging, and
user input for a thread can be isolated, and a separate log file
can be specified for each thread.
(Bug #32101215)
It was not possible to install MySQL Shell on Mac OS X because the packages were not signed. (Bug #103855, Bug #32943928)