-
The
command has been improved, with the following changes:Cluster
.removeInstance()A new interactive option has been added to enable or disable interactive mode for the command. The output displayed in interactive mode has been improved, displaying more useful information. In interactive mode, you are prompted to continue with the removal of the instance (or not) in case it is not reachable.
The operation now ensures that the instance is removed from the metadata of all the cluster members and itself. This only applies to
ONLINE
members.A new global option
dba.gtidWaitTimeout
is available to define the timeout to wait for transactions (GTIDs) to be applied when required by AdminAPI commands. If the timeout value defined bydba.gtidWaitTimeout
is reached when waiting for the cluster transactions to be applied for
andcluster
.removeInstance()force: false
(or not defined) then an error is issued and the operation is canceled. Whenforce: true
then the operation continues and does not generate an error.
(WL #11862)
References: See also: Bug #27817894.
-
When using the
ipWhitelist
to define which servers could access the cluster, the internal user accounts were not matching the whitelist. Now AdminAPI applies the same filtering logic fromipWhitelist
for the internal administrative accounts. (WL #10587)References: See also: Bug #26140094, Bug #28165891.
The
cluster.forceQuorumUsingPartitionOf()
operation sets thegroup_replication_force_members
variable on the target instance to force a new group membership and restore the quorum, but it did not reset the value of the variable at the end of the process. Consequently, if Group Replication later needed to be restarted on the target instance it failed because thegroup_replication_force_members
variable was still set. Now, thegroup_replication_force_members
variable is reset to an empty string at the end of thecluster.forceQuorumUsingPartitionOf()
operation. (Bug #28064621)Some messages displayed by MySQL Shell were showing a MySQL server version that does not exist. (Bug #27924694)
It was possible to use AdminAPI operations on server instances running an incompatible version of MySQL. (Bug #27765769)
The setting of the
bind_address
variable is no longer a requirement. (Bug #27765484)When creating a cluster or adding an instance, if the
localAddress
option is not specified, the port used forgroup_replication_local_address
is automatically assigned with the value:port
* 10 + 1. However, if the resulting port determined by the previous rule was already in use then a random port was generated and used. Now MySQL Shell checks that thegroup_replication_local_address
port is available, and fails if it is not. (Bug #27758041)The
dbPassword
option is no longer valid in the options dictionary of all AdminAPI commands. (Bug #27745106)It was possible to use the
dba.forceQuorumUsingPartition()
operation on a cluster which had not lost quorum. (Bug #27508698)The help message for
dba.rebootClusterFromCompleteOutage()
operation was incorrectly suggesting to usedba.forceQuorumUsingPartition()
. (Bug #27508627)The
dba.rebootClusterFromCompleteOutage()
operation was creating a new user on the target instances, which could lead to the existence of an increasing number of users. The fix ensures that these users are not created by thedba.rebootClusterFromCompleteOutage()
operation. (Bug #27344040)Now when you issue
dba.getCluster()
and retrieve a cluster without quorum a warning is issued in addition to the log message. (Bug #27148943)The
memberSslMode
option could be used with
andcluster
.addInstance()
operations but if you specified a different value than the one used at cluster creation an error was thrown. Now set the SSL mode at the cluster level only, in other words when issuingcluster
.rejoinInstance()dba.createCluster()
. ThememberSslMode
option has been removed from
andcluster
.addInstance()
(Bug #27062122)cluster
.rejoinInstance().When you issued
dba.configureLocalInsance()
on an instance, it configured thedisabled_storage_engines
variable with theMyISAM
,BLACKHOLE
,FEDERATED
,CSV
, andARCHIVE
storage engines to ensure that the storage engine was set toInnoDB
, as required by Group Replication. The change to this option was not being reported correctly by AdminAPI, and hence the required restart after changing thedisabled_storage_engines
variable was not clear. This change was deemed a recommendation, rather than a requirement, hencedba.configureLocalInsance()
no longer configuresdisabled_storage_engines
. (Bug #26754410)Creating a cluster using an account which was missing the global grant option failed with an ambiguous error message, even though
dba.checkInstanceConfiguration()
did not return any errors. Now when you create a cluster, the account being used to administer the cluster is checked to ensure that it has the global grant option. (Bug #25966235)MySQL Shell is able to automatically reconnect global session when running in the interactive mode, but AdminAPI methods lacked this feature. This resulted in you having to reconnect manually. Now, the AdminAPI methods which utilize the global session object have been improved in order to detect an interrupted session and trigger the reconnection mechanism. The Cluster object uses its own internal session instance, which does not support automatic reconnection. If connection to the cluster is lost, you need to manually recreate the Cluster object. (Bug #24702489)
In the event of a whole cluster stopping unexpectedly, upon reboot the
memberSslMode
was not preserved. In a cluster where SSL had been disabled, upon issuingdba.rebootClusterFromCompleteOutage()
this could prevent instances from rejoining the cluster. (Bug #90793, Bug #27986413)
-
Important Change: An RPM package for installing ARM 64-bit (aarch64) binaries of MySQL Shell on Oracle Linux 7 is now available in the MySQL Yum Repository and for direct download.
Known Limitation for this ARM release: You must enable the Oracle Linux 7 Software Collections Repository (ol7_software_collections) to install this package, and must also adjust the libstdc++7 path. See Yum's Platform Specific Notes for additional details.
-
X DevAPI: In order to be compliant with the X DevAPI specification, the following changes have been made:
Collection.modify(condition).arrayDelete()
andCollection.modify(condition).merge()
have been deprecated.Collection.find().limit(x).skip(y)
has been renamed toCollection.find().limit(x).offset(y)
.Collection.find().limit(x).skip(y)
has been deprecated.Collection.find().limit(x).offset(y)
has been implemented.BaseResult.getAffectedItemsCount()
has been implemented.BaseResult.getWarningCount()
has been deprecated.BaseResult.getWarningsCount()
has been implemented.Result.getAffectedItemCount()
has been deprecated.SqlResult.getAffectedRowCount()
has been deprecated.SqlResult.nextDataSet()
has been renamed toSqlResult.nextResult()
.SqlResult.nextDataSet()
has been deprecated.SqlResult.nextResult()
has been implemented.
(WL #11920)
-
MySQL Shell now enables you to store user credentials in an operating system specific secret store. You can then enter a MySQL user's password during connection and store it for future connections. Currently the following secret stores are supported:
MySQL login-path
MacOS keychain
Windows API
(Bug #23304789, Bug #81484, WL #11745)
-
The way you access the online Shell help has been standardized. Use the
\help
command to search the help. The scope of the command has been increased to support retrieving help for the following categories:pattern
Class and function help for the Admin API, X DevAPI and Shell API. Previously, to retrieve help for API objects, you had to create an instance of the object and use the
method.object
.help()SQL syntax help, provided that a global session object exists.
Wildcards can now be used to search for help. A number of additional bugs relating to incomplete help information have also been fixed. (Bug #23255291, Bug #81277, Bug #24963435, Bug #25732663, Bug #85481, Bug #25739522, Bug #85511, Bug #25739664, Bug #85514, Bug #26393155, Bug #86950, Bug #24943074, Bug #26429399, Bug #87037, Bug #27870491, Bug #90455, Bug #27870503, Bug #90456, Bug #27875150, Bug #90474, Bug #24948933, Bug #83527, WL #11219)
-
The
util.checkForServerUpgrade()
operation has an additionaloutputFormat
parameter that you can specify when running the utility. The utility can now generate output in two formats:TEXT format, which is the default. This option provides output suitable for humans, as previously returned by the utility.
JSON format. This option provides output suitable for machines, which can be parsed and processed for various further use cases.
(WL #11892)
The sample prompt theme files for MySQL Shell were deployed to an incorrect location on the Windows platform, in the root install folder. The files are now correctly deployed in the
\share\mysqlsh\prompt
sub-folder. (Bug #28188761)The upgrade checker utility provided by MySQL Shell (the
util.checkForServerUpgrade()
operation) has been enhanced with a summary count of the errors, warnings, and information level issues found by the tool, and with links to documentation with further information where this is available. (Bug #28171814)When upgrading from version 1.0.11 to version 8.0.11 of MySQL Shell on Linux, the upgrade failed if the original package was the community edition and the new package was the commercial edition, or vice versa. Upgrading from one edition to the other edition is now enabled. (Bug #28037407)
The
util.checkForServerUpgrade()
operation can now use either an X Protocol connection or a classic MySQL protocol connection. (Bug #28027707)The
checkForServerUpgrade()
operation to verify upgrade prerequisites included an unnecessary check relating toZEROFILL
and display length attributes in columns. The check has now been removed. (Bug #27927641, Bug #90634)For sessions using the classic MySQL protocol, if the
session_track_gtids
system variable is set on the server to capture and return GTIDs to the client, MySQL Shell now displays the GTIDs for successfully committed transactions. The returned GTID values are also now recorded in tracing information. (Bug #27871148)When the
defaultMode
MySQL Shell configuration option had been set with the--persist
option, batch code execution from a file was always attempted using the specified default language, even if the file extension indicated a different supported language. Now when a file is loaded for batch processing using the--file
or-f
option, files with the extensions.js
,.py
, and.sql
are processed in the appropriate language mode, regardless of the set default language. (Bug #27861407)The methods provided in the
shell.options
configuration interface to set and save persistent option values used underscores in JavaScript as well as in Python mode. The methods have now been changed toshell.options.setPersist()
andshell.options.unsetPersist()
in JavaScript to follow the appropriate naming convention. (Bug #27861141)When executing a SQL script using MySQL Shell, delimiters ( such as the default semi-colon character) present in multi-line comments caused execution to fail. Delimiters are now ignored inside multi-line comments. (Bug #27841719)
MySQL Shell returned an error when querying timestamp values that were zero, because a zero value for the month or day in a date was not accepted. Zero timestamp values can now be used without producing an error. (Bug #27833822, Bug #90355)
The
shell.getSession()
function returns a reference to thesession
global object representing the already established connection between MySQL Shell and a MySQL server, known as a global session. MySQL Shell now gracefully handles the situation where the function is called when no global session has yet been established. (Bug #27809310)The MySQL Shell application icon on Microsoft Windows was not being displayed for the MySQL Shell 8.0 GA release, due to an incorrect association introduced for the icon during code refactoring. The icon is now displayed correctly. (Bug #27746532)
The
\status
(\s
) command in MySQL Shell now displays full information about the version and build of the connected MySQL server. (Bug #27740420)The check for reserved keywords carried out by the
util.checkForServerUpgrade()
operation was updated to match the list of reserved keywords for the MySQL 8.0 GA release. (Bug #27724201)When handling escape sequences, MySQL Shell now identifies and skips over SQL comments and string literals within quotation marks. (Bug #27665229)
Python's mapping type has been added to MySQL Shell, so that dictionary syntax can be used to interact with data in Python mode. (Bug #27614110)
When a file was redirected to standard input for execution in MySQL Shell, on Unix, the first part of the file was taken as being the password. The password prompt now looks for user input first before resorting to standard input. (Bug #27572380)
If Ctrl+C was entered or an unexpected error occurred at a password prompt in MySQL Shell, the terminal state was not restored correctly afterwards. (Bug #27379834)