This section documents all changes and bug fixes applied since the release of 1.3.0, which only includes all changes that were applied to versions 1.2.1 and 1.2.2.
Support was added for reading port and socket associated with authentication credentials stored in an option file named
.mylogin.cnf. See mysql_config_editor — MySQL Configuration Utility. (Bug #16290692)
The failover operation was improved and now searches for any transactions on the slaves that have not been read from the relay log. Failover will now gather all of these events to the candidate slave before failover is complete. (Bug #16283330)
The switchover and failover external scripts now accept parameters from the utility. This permits custom scripts to execute application-specific operations during the process. The data passed is as follows:
exec_before : old master host, old master port, new master host, new master port
exec_after : new master host, new master port
exec_fail : old master host, old master port
exec_before : old master host, old master port, new master host, new master port
exec_post_failover : old master host, old master port, new master host, new master port
exec_after : old master host, old master port, new master host, new master port
On Microsoft Windows, the mysqluc utility failed to list the MySQL Utilities because the
.exeextension was not being scanned. (Bug #16714425)
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
--slavesoption now verify if they are configured for the specified master as per the
--masteroption when the switchover command is executed. By default, the switchover will output an error and halt execution unless the
--forceoption is used.
Also, errors are now reported when offline servers are included in the
--slaveslist. (Bug #16584598)
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-masteroptions are the same). (Bug #16565502)
The mysqlrpladmin utility now uses the
--pingvalue (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. (Bug #16520505)
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
--intervaloption. (Bug #16327743)
--no-keyboardwas 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 framework. (Bug #16327406)
Some source files were missing license and/or copyright information. (Bug #16283254)
The following changes were made to the MySQL Utilities:
--masteroption 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 master.
--slavesoptions 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-loginis 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
--verboseoption is passed in, the utility shows if the I/O threads of the slaves are running.
Messages and handling of stop, start, and reset slaves has been improved for the mysqlrpladmin utility.
--discover-slave-loginoption is no longer allowed for stop, start, and reset operations, as instead the
--slaveoption is required. (Bug #16243584)
Utilities were enhanced to check the Python version required for each utility. (Bug #16238348)
Errors for connection failures have been improved, as more details about the type of failure is presented. (Bug #16237986)
The mysqlserverclone utility did not expand to the user's home directory when using the tilde ("~") while specifying a path for the
--basediroption. (Bug #16231372)
The status for all slaves is now checked using
SHOW SLAVE STATUSbefore a failover operation is started. Errors are now reported, and a warning indicates that the failover operation might result in an unstable replication topology.
For mysqlfailover, the process will not stop if errors are found unless the
--pedanticoption is passed in. For mysqlrpladmin, the process will stop if errors are found unless the
--forceoption is passed in, in which case the operation will emit a warning and continue.Note
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 the
--demote-masterfailed to unlink with a new master in the topology. (Bug #16210246)
A switchover operation failed due to a missing or incorrect password for the replication (
New behavior when a password is not specified: When
--forceis passed in, the password will be cleared for the specified user. If
--forceis not passed in, then an error will be generated.
New behavior when a password is specified and invalid: When
--forceis passed in, the password will be overwritten and used for the specified user so the master server can be located. If
--forceis not passed in, then an error will be generated. (Bug #16210222)
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
--pedanticoption is passed in, and for mysqlrpladmin this means generating an error, and halting execution unless the
--forceoption is passed in. (Bug #16205200)
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 the
--masteroption is passed to it but not required, when before it would sometimes generate an error, depending on other circumstances.
--discover-slaves-loginwill generate an error, because the master information is not available.
--slavesoption is now required. (Bug #16202902)
The switchover operation with
--demote-masternow disconnects the new master from the old master to complete the move of the candidate slave to the new master. (Bug #16177167)
exit()calls were replaced with the standard
sys.exit()method. This conforms to the current Python standards. (Bug #16167359)
Error handling for the mysqlreplicate utility was improved to check all errors on the slaves. (Bug #16164767)
The MySQL Utilities library only partially supported IPv6. Valid values starting with
::were either parsed incorrectly or identified as invalid. (Bug #15903171)
String quoting was improved for the mysqldbcopy, mysqldbexport, and mysqldbimport utilities. (Bug #14348501)
The log parser was changed to accept host names with dots or hyphens. (Bug #14172941)
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
--helpoutput for each utility. (Bug #13383767)
The unit tests were corrected to detect if the mysql_config_editor is present. If not, unit tests that require it are skipped. (Bug #68356)
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 entire MySQL Utilities package was updated to facilitate RPM packaging. These changes include license updates, the removal of unnecessary shebang's, and the mut manual page was moved and is no longer listed with the other utilities. (Bug #68182, Bug #13956819)
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)
All fixes from the 1.2.1 and 1.2.2 MySQL Utilities releases were merged into the 1.3.x branch, and released as version 1.3.1.