This section documents all changes and bug fixes applied since the release of 1.4.1, and is the first Release Candidate release.
Functionality Added or Changed
The mysqlrplsync utility was added, which checks data consistency between servers in a replicated setup.
The mysqlrplms utility was added, which provides round-robin multi-source replication (a slave server continually cycles through multiple masters in order to store a consolidated data set).
With fabric, the scheduler did not check and determine which procedures needed to be notified after releasing the procedure that was blocking them. (Bug #18454582, Bug #72117)
Using MySQL Utilities with an old and unsupported version of
Connector/Python could emit unhandled exceptions during import.
check_connector_python function was
improved and now checks for the minimum required
Connector/Python version before continuing.
With fabric, failover was not handled properly when both the global and shard groups had a failed master. (Bug #18403885, Bug #72016)
The mysqlrplsync utility would crash when the
--exclude option was used, and at least one
database was available to be checked. This issue was due to an
incomplete check when determining which tables to exclude from
The MySQL Utilities testing suite (mut) now tests if ports are available before assigning them to a test. (Bug #18339351)
The mysqlfabric command help usage examples
showed some parameters in uppercase, but they
--split-value) are lowercase options.
(Bug #18295761, Bug #71792)
The mysqlfabric utility returned wrong
dump commands when no shards
(Bug #18296589, Bug #71793)
MySQL Server UUIDs are now handled in a case-insensitive way,
more precisely when checking if GTIDs belong to the master. This
helps accommodate MySQL Server 5.6.9, which could change the
case for the
With Fabric, attempting to destroy a group when the group was used in the shard sub-system would output an unfriendly and unclear error. Fabric now checks if the group is used in the shard sub-system before trying to destroy (remove) it, and a clearer error is emitted if it is in use. (Bug #18280004, Bug #71766)
rpl_admin_gtid test result varied
from host to host, due to using the
MASTER statement without first stopping all the
slaves. This resulted in undefined behavior, which led to
inconsistent rest results.
A typo was fixed in the mysqldbcopy utility's help text. (Bug #18206923, Bug #71627)
With Fabric, group definitions now use a single (global) username and password, instead of requiring a username/password for each MySQL server when they were added to the group. (Bug #18153823, Bug #71512)
When checking for proper permissions, Fabric would execute
SELECT statements against the
mysql' database, which caused the login
mechanism to fail if the user lacked access. This mechanism now
SHOW GRANTS' statements instead, and
now prints out a detailed error message when access is
(Bug #18138545, Bug #71448)
server.set_status() function's status
parameter now accepts an integer, to better coincide with the
integer value provided by
strings "PRIMARY", "SECONDARY", "SPARE" and "FAULTY" also remain
as acceptable values.
(Bug #18124108, Bug #71428)
The mysqlrpladmin utility did not correctly account for consecutive transactions reported in a single string. The utility would only consider the transaction or transaction range that appeared after the last ':'. (Bug #18083550)
The Installer (
setup.py) was not able to
install the fabric configuration file
fabric.cfg) to the user's home directory
even though the
--home options were used. It would instead
attempt to install it in
(Bug #18109179, Bug #71442)
On Linux, the mysqlserverclone utility failed
to spawn a MySQL server if the path passed to the
--new-data option was too long, as determined
by the MySQL server. A check was added that limits the datadir
length to 200 characters, which helps coincide with the maximum
socket length (107) set by the MySQL server. This check can be
bypassed with the
The text for the
store.dump_* commands was
updated to better reflect how these commands are for retrieving
information, instead of writing it.
(Bug #18087356, Bug #71370)
When cloning a database with foreign key dependencies on the same MySQL server, and while using the multiprocessing option (with a value greater than one), the mysqldbcopy utility issued an error about foreign key constraint failures. The foreign key checks are now disabled before cloning the tables. (Bug #18041743)
gtid_enabled() function would
only check a single MySQL server, and returned TRUE if the
checked MySQL server had GTID enabled. It now only returns TRUE
if all MySQL servers in the topology have GTIDs enabled.
The privilege check for the mysqlfailover
utility was performed after the instance registration process,
which would lead to query errors (instead of privilege errors)
if some privileges, such as
CREATE, were not available.
Additionally, a check for the
privilege was added to all slaves, as it might be required for
them to become the new master, in order to successfully perform
the failover instance registration on the new master.
The default TCP port set for MySQL Fabric was changed from 8080 to 32274. (Bug #17820905, Bug #70954)
The is_connected() fabric function was executed every time a statement was executed, which reduced overall performance. (Bug #17702237)
Exported or copied/cloned databases from the mysqldbcopy and mysqldbexport utilities would fail to function with the mysqldbimport utility if dependencies between views were present. These dependencies are now sorted in the appropriate order before copy, clone, or export. (Bug #17694651)
Some MUT tests were failing with Connector/Python 1.1.x due to format changes in the returned error messages by the Connector. (Bug #17655980)
The commercial version of the MySQL Utilities contained a hard-coded path to the Python directory, so the MySQL Utilities installation would fail. The Fabric and Doctrine projects were also updated. (Bug #17647498)
The mysqldiff and
mysqldbcompare utilities print all of the
control lines for each difference, even for unnecessary lines
which is especially true of the grid format and unified types. A
--compact option was added, which reduces
output from the diff.
When executing the mysqldiskusage utility on a remote MySQL server, the utility would report information about the local datadir if the remote and local datadir paths were identical. (Bug #13572814)
--force option was renamed to
--drop-first for the
When using the mysqldbimport utility without
--drop-first option, importing a valid
SQL import file that included a
DATABASE statement for a database that already existed
did not yield a related error message. The associated error
message was updated, and it also refers to the optional
--use-indexes option was added to the
mysqldbcompare utility. Before, this utility
did not compare tables that lacked a primary key. The new
--use-indexes option allows non-unique
indexes to be used, although only indexes with columns not
allowing null values are permitted.
--use-indexes to specify the unique index
to be used for the Table comparative. If the specified index
allows null values, then a warning is generated, and the next
unique index will be used if one exists as otherwise the utility
will stop with an error.
--login-path handling (via
mysql_config_editor) with the
mysqlserverinfo utility did not always behave
consistently, nor did it always generate helpful information for
the reported errors.
On Microsoft Windows, the mysqlserverclone
utility with the
--write-command option would
generate a script using surrounding Python subprocess.call style