This section documents all changes and bug fixes applied since the release of 1.2.1.
On Microsoft Windows, the mysqluc utility
failed to list the MySQL Utilities because the
.exe extension was not being scanned.
The mysqlrpladmin command switchover routine would hang when configured with an invalid master. (Bug #16597814)
A utility would emit a generic error and halt execution if the utility was executed with an unsupported Python version, and if the utility did not have a file extension. (Bug #16587341)
When using the mysqlrpladmin utility, the
slaves specified with the
--slaves option now
verify if they are configured for the specified master as per
--master option when the switchover
command is executed. By default, the switchover will output an
error and halt execution unless the
option is used.
Also, errors are now reported when offline servers are included
The mysqlrpladmin utility now properly handles the way aliases are searched, compared, and handled. (Bug #16571812)
The mysqlrpladmin utility will now emit an
error and halt execution if the new master specified is the
original master (when the
--new-master options are the same).
The mysqlrpladmin utility now uses the
--ping value (default of 3) instead of
--timeout (default of 300) as the time for
the retry when checking slaves for errors after executing a
switchover (or failover) command.
The mysqlrpladmin would crash while executing the failover command when GTID mode was disabled on one of the slaves. It now emits an error and identifies the slaves with GTID_MODE = OFF, and the slaves that do not support GTID. (Bug #16489494)
The mysqlfailover utility ignored the
--no-keyboard was added to the
mysqlfailover utility, and it defaults to
false. When enabled, pressing Control +
C will terminate the program. This new option
allows this utility to function without a terminal, so that it
can be invoked from external programs such as a Java based
The following changes were made to the MySQL Utilities:
--master option is no longer required for
the start, stop and reset operations. Without
--master, this utility will not check if
the specified slaves are configured for the specified
--slaves options cannot be used
simultaneously for any command, otherwise an error will be
generated and the utility will exit.
The output from when a slave is discovered (when
--discover-slaves-login is passed in) was
improved, and skipped slaves with I/O threads not running
are now identified.
The verbosity option was added to
mysqlrplshow. When the
--verbose option is passed in, the
utility shows if the I/O threads of the slaves are running.
The mysqlserverclone utility did not expand
to the user's home directory when using the tilde ("~") while
specifying a path for the
The status for all slaves is now checked using
SLAVE STATUS before a failover operation is started.
Errors are now reported, and a warning indicates that the
failover operation might result in an unstable replication
For mysqlfailover, the process will not stop
if errors are found unless the
option is passed in. For mysqlrpladmin, the
process will stop if errors are found unless the
--force option is passed in, in which case
the operation will emit a warning and continue.
I/O errors on slaves are expected (prior to failover) since the master is down, therefore only SQL errors are checked.
When a switchover was performed with
--demote-master, the old master would still
show as a master to the new master (the promoted slave), in that
--demote-master failed to unlink with a
new master in the topology.
A switchover operation failed due to a missing or incorrect
password for the replication (
New behavior when a password is not specified: When
--force is passed in, the password will be
cleared for the specified user. If
not passed in, then an error will be generated.
New behavior when a password is specified and invalid: When
--force is passed in, the password will be
overwritten and used for the specified user so the master server
can be located. If
--force is not passed in,
then an error will be generated.
The replication utilities will now check the slaves for errant
transactions (these are transactions that only exist on one
slave) prior to executing failover. For
mysqlfailover this means generating a warning
and only stopping if the
--pedantic option is
passed in, and for mysqlrpladmin this means
generating an error, and halting execution unless the
--force option is passed in.
The replication utilities can now handle the IPv4 (127.0.0.1) and IPv6 ([::1]) loopback IP addresses, instead of only localhost as the generic hostname. (Bug #16204732)
mysqlrpladmin will now generate a warning if
--master option is passed to it but not
required, when before it would sometimes generate an error,
depending on other circumstances.
generate an error, because the master information is not
--slaves option is now required.
The MySQL Utilities library only partially supported IPv6. Valid
values starting with
:: were either parsed
incorrectly or identified as invalid.
mysqldiff and mysqldbcompare did not function on tables that contained a hyphen ("-") in their name, and these utilities would abort with unknown errors. (Bug #13650863)
Copyright and version information was added to the
--help output for each utility.
The mysqluc utility was optimized to locate the available MySQL Utilities more efficiently. Before it would scan the entire installation directory for available executables, but now it uses hardcoded values, and also scans for executables with the "mysql" prefix. (Bug #68322, Bug #16382195)
The mysqldiff utility would consider two tables as different if the columns or indexes were ordered differently. (Bug #65169, Bug #16410648)
Connection strings would not accept usernames or passwords that
contained a hyphen ("-"). Using single or double quotes is now
supported. For example, passing in
--server="user:'pass@:-chars'@localhost" as a
connection string to a MySQL Utility is now valid.
(Bug #65168, Bug #14383884, Bug #15836908)