MySQL Forums
Forum List  »  Announcements

MySQL Utilities 1.4.2 (including MySQL Fabric) RC has been released
Posted by: Karen Langford
Date: March 31, 2014 06:59AM

Dear MySQL users,

MySQL Utilities version 1.4.2 is compatible with MySQL Server
versions 5.1 and greater, but should work with earlier versions
(greater than v4.1). Python v2.6 and v2.7 are supported.

In addition to server utilities, MySQL Utilities also contains
MySQL Fabric: a framework for managing a collection of MySQL servers.
MySQL Fabric is deployed as a separate service daemon that contains
support for high-availability and sharding.

The management framework maintains a database of the routing and
state information for the servers making up the system and provides
an easy-to-use command line interface for adding, removing and
organizing servers.

High-availability is provided by continuously monitoring the servers
and executing slave promotion when the master crashes and just as
importantly automatically updates the state and routing information
that gets messages to the right server.

MySQL Fabric comes with built-in support for sharding either using
ranges or consistent hashing and supports the sharding of multiple
tables to ensure that rows with matching sharding keys are stored
in the same shard. MySQL Fabric also contains support for global
tables that are duplicated on all shards as well as the ability to
synchronize schema updates across all of the servers.

To provide high performance and avoid latency, transactions are
directly routed by Fabric-aware connectors rather than routing via
an external proxy. The connectors dispatch transactions to the
correct shard, perform load-balancing, and handle read-write
splitting. Currently there exists Fabric-aware versions of
Connector/Python, Connector/Java, and Connector/PHP (through a
Fabric-aware mysqlnd_ms plugin).

MySQL Utilities v1.4.2 is available for download from

A brief summary of changes is listed below. Please check the
CHANGES.txt file inside the distribution for a more complete list
of changes.

Functionality Added or Changed (2014-03-31)

  * 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

Bugs Fixed

  * 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)

  * 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 slaves. (Bug

  * The MySQL Utilities testing suite (mut) now tests if ports are
    available before assigning them to a test. (Bug #18339351)

  * 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 server_uuid variable. (Bug #18275566)

  * 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

  * The mut rpl_admin_gtid test result varied from host to host,
    due to using the RESET MASTER statement without first stopping
    all the slaves. This resulted in undefined behavior, which led
    to inconsistent rest results. (Bug #18203946)

  * 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
    several SELECT statements against the 'mysql' database, which
    caused the login mechanism to fail if the user lacked access.
    This mechanism now uses 'SHOW GRANTS' statements instead, and
    now prints out a detailed error message when access is
    unavailable. (Bug #18138545, Bug #71448)

  * The server.set_status() function's status parameter now
    accepts an integer, to better coincide with the integer value
    provided by dump_servers(). The 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 ( was not able to install the fabric
    configuration file (fabric.cfg) to the user's home directory
    even though the --user or --home options were used. It would
    instead attempt to install it in /etc/mysql/. (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 --force option.
    (Bug #18117930)

  * 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)

  * The internal 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. (Bug #17890455)

  * 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 DROP or CREATE, were not available.
    Additionally, a check for the INSERT 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. (Bug #17878705)

  * 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 new --compact option was added, which reduces output from
    the diff. (Bug #14725008)

  * 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)

  * The --force option was renamed to --drop-first for the
    mysqldbcopy utility. (Bug #13563798)

  * When using the mysqldbimport utility without the --drop-first
    option, importing a valid SQL import file that included a
    CREATE 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
    --drop-first option. (Bug #13563798)

  * A new --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 --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. (Bug #13492195)


The source distribution includes the manual pages for each utility under
the docs/ folder.

Reporting Bugs
We welcome and appreciate your feedback and bug reports:


On Behalf of the MySQL/ORACLE RE Team,

Kent & Hery

Options: ReplyQuote

Written By
MySQL Utilities 1.4.2 (including MySQL Fabric) RC has been released
March 31, 2014 06:59AM

Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.