MySQL Lists are EOL. Please join:

List:Announcements« Previous MessageNext Message »
From:Balasubramanian Kandasamy Date:October 18 2016 4:31pm
Subject:MySQL Cluster 7.5.4 has been released (part 1/2)
View as plain text  
Dear MySQL Users,

MySQL Cluster 7.5.4 (GA) is the first GA release for MySQL Cluster 7.5.

MySQL Cluster is the distributed, shared-nothing variant of MySQL.
This storage engine provides:

   - In-Memory storage - Real-time performance (with optional
     checkpointing to disk)
   - Transparent Auto-Sharding - Read & write scalability
   - Active-Active/Multi-Master geographic replication

   - 99.999% High Availability with no single point of failure
     and on-line maintenance
   - NoSQL and SQL APIs (including C++, Java, http, Memcached
     and JavaScript/Node.js)

[Due to size limitations on forum/email, this announcement had to be
split into two parts. This is part 1.]

MySQL Cluster 7.5.4, has been released and can be downloaded from

where you will also find Quick Start guides to help you get your
first MySQL Cluster database up and running.

The release notes are available from

MySQL Cluster enables users to meet the database challenges of next
generation web, cloud, and communications services with uncompromising
scalability, uptime and agility.

More details can be found at

Enjoy !

Changes in MySQL Cluster NDB 7.5.4 (5.7.16-ndb-7.5.4) (2016-10-18, General Availability)

    MySQL Cluster NDB 7.5.4 is a new release of MySQL Cluster 7.5, based
    on MySQL Server 5.7 and including features in version 7.5 of the NDB
    ( storage
    engine, as well as fixing recently discovered bugs in previous MySQL
    Cluster releases.

    Obtaining MySQL Cluster NDB 7.5.  MySQL Cluster NDB 7.5 source code
    and binaries can be obtained from

    For an overview of changes made in MySQL Cluster NDB 7.5, see What is
    New in MySQL Cluster NDB 7.5

    This release also incorporates all bugfixes and changes made in
    previous MySQL Cluster releases, as well as all bugfixes and feature
    changes which were added in mainline MySQL 5.7 through MySQL 5.7.16
    (see Changes in MySQL 5.7.16 (2016-10-12, General Availability)

      * Functionality Added or Changed

      * Bugs Fixed

    Functionality Added or Changed

      * Important Change; Packaging: Naming and organization of
        the RPMs provided for MySQL Cluster have been changed to align
        with those released for the MySQL server. All MySQL Cluster RPM
        package names are now prefixed with mysql-cluster. Data nodes are
        now installed using the data-node package; management nodes are
        now installed from the management-server package; and SQL nodes
        require the server and common packages. Important: SQL nodes must
        use the mysql-cluster version of these RPMs; the versions
        released for the standard MySQL server do not provide support for
        the NDB storage engine. All client programs, including both the
        mysql client and the ndb_mgm management client, are now included
        in the client RPM.  For more information, see Installing MySQL
        Cluster from RPM

      * Added the --print-sql-log
        option for the ndb_restore program included with the MySQL Cluster
        distribution. This option causes the program to log SQL
        statements to stdout.  Note that each table being restored in
        this fashion must have an explicitly defined primary key; the
        hidden primary key implemented by the NDB
        storage engine is not sufficient for this purpose.  (Bug

      * For fully replicated tables, ndb_desc shows only nodes
        holding main fragment replicas for partitions; nodes with copy
        fragment replicas only are ignored. To make this information
        available in the mysql client, several new tables have been
        introduced in the ndbinfo
        information database. These tables are listed here,
        with brief descriptions:

           + dict_obj_info
           provides the names and types of database (DICT) objects in NDB,
           such as tables and indexes, as well as information about parent
           objects where applicable

           + table_distribution_status
           provides NDB table distribution status information

           + table_fragments
           provides information about the distribution of NDB table fragments

           + table_info
           provides information about logging,
           checkpointing, storage, and other options in force for each
           NDB table

           + table_replicas
           provides information about fragment replicas For more information,
           see The ndbinfo MySQL Cluster Information Database
           (Bug #81762, Bug #23547643)

      * ClusterJ: To help applications handle database errors
        better, a number of new features have been added to the
        ClusterJDatastoreException class:

           + A new method, getCode(), returns code from the NdbError

           + A new method, getMysqlCode(), returns mysql_code from the
           NdbError object.

           + A new subclass, ClusterJDatastoreException.Classification,
           gives users the ability to decode the result from
           getClassification(). The method Classification.toString()
           gives the name of the error classification as listed in NDB
           Error Classifications
           (Bug #22353594)

    Bugs Fixed

      * Important Change: The default value of the
        server option has been changed from DYNAMIC to FIXED.  This has
        been done for backwards compatibility. Only the default has been
        changed; setting this option to DYNAMIC continues to cause
        DYNAMIC to be used for ROW_FORMAT and COLUMN_FORMAT unless
        overridden. (Bug #24487363)

      * Important Change: Event buffer status reporting has been
        improved by altering the semantics for calculating lag or
        slippage. Rather than defining this lag as the number of epochs
        behind, lag is now taken as the number of epochs completely
        buffered in the event buffer, but not yet consumed by the binlog
        injector thread. As part of this work, the default value for the
        system variable has been increased from 3 to 10.  For more
        information, see the description of this variable in the
        documentation, as well as Event Buffer Reporting in the Cluster
        Log (
        (Bug #22916457) References: See also: Bug #22901309.

      * Cluster API: The term "fragment count type" has been
        superceded by "partition balance". This change affects NDB_TABLE
        options for NDB tables as well as in the NDB API. In NDB_TABLE
        table option syntax, the FRAGMENT_COUNT_TYPE keyword is replaced
        with PARTITION_BALANCE. In the NDB API, the Table
        ( methods
        getFragmentCountType() and setFragmentCountType() have been
        renamed to getPartitionBalance()
        and setPartitionBalance()
        respectively; getFragmentCountTypeString() is
        renamed to getPartitionBalanceString()
       In addition, Object::FragmentCountType has
        been renamed to PartitionBalance
        and the names of its enumerated values have been
        updated to be consistent with the new nomenclature.  For more
        information on how these changes affect NDB API applications, see
        the indicated Table
        ( and Object
        ( member
        descriptions. For more information on the SQL-level changes made
        as part of this fix, Setting NDB_TABLE options in table comments
        (Bug #81761, Bug #23547525)
        References: See also: Bug #83147, Bug #24733331.

      * If more than 4096 seconds elapsed while calculating an
        internal NdbDuration::microSec() value, this could cause an
        assert warning that the calculation would overflow. We fix this
        to avoid any overflow or precision loss when converting from the
        internal "tick" format to microseconds and nanoseconds, by
        performing the calculation in two parts corresponding to seconds
        and fractions of a second. (Bug #24695026)

      * The serial commit protocol---which commits each operation
        at each replica individually and serially, and is used by the
        DBTC kernel block (see The DBTC Block
        for takeover and when a transaction is judged
        to have timed out during the COMMIT or COMPLETE phase---had no
        support for LATE_COMMIT, which is required for the READ_BACKUP
        and FULLY_REPLICATED protocols. (Bug #24681305)

        could lead to an unplanned shutdown of the
        cluster. This was due to the fact that, for fully replicated
        tables. the log part ID was assumed to be the same as the
        partition ID. This worked when FOR_RA_BY_LDM was used, but not
        necessarily for the other partition balancing types. (Bug

      * Using ALGORITHM=INPLACE when changing any of a table's
        NDB_TABLE properties (see Setting NDB_TABLE options in table
        caused the server to fail.  (Bug #24584741)

      * Following successive ALTER TABLE
        statements updating NDB_TABLE properties (see Setting NDB_TABLE
        options in table comments
        the current values were not always
        shown by SHOW CREATE TABLE
        or ndb_desc. (Bug #24584690)

      * Case-insensitivity of keywords such as FULLY_REPLICATED
        in NDB_TABLE comments was not honored. (Bug #24577931)

      * An ALTER TABLE
        statement attempting to set both FULLY_REPLICATED and
        PARTITION_BALANCE (see Setting NDB_TABLE options in table
        failed with a garbled error message. (Bug #24577894)

      * A number of dependencies between the binlog injector
        thread and the NDB utility thread---a recurring source of
        synchronization and other problems---were removed. The principal
        changes are listed here:

           + Moved the setup of binlog injector structures from the
           utility thread to the injector thread itself.

           + Removed sharing of some utility and injector thread
           structures between these threads.

           + Moved stopping of the utility thread from the injector
           thread into a common block in which other such threads are

           + Removed a number of hacks required by the previous design.

           + Removed some injector mutex locking and injector condition
           signaling which were made obsolete by the changes already
           listed.  (Bug #24496910) References: See also: Bug #22204186.

      * A late commit ACK signal used for FULLY_REPLICATED or
        READ_BACKUP tables caused the associated ApiConnectionRecord to
        have an invalid state. (Bug #24459817) References: See also: Bug

      * Added missing error information for a failure occurring
        when tables on disk became full. (Bug #24425373)

      * When ndbmtd crashed, the resulting error log incorrectly
        specified the name of the trace for thread 0, appending the
        nonexistent suffix _t0 to the file name. (Bug #24353408)

      * Passing a nonexistent node ID to CREATE NODEGROUP
        led to random data node failures. (Bug #23748958)

      * DROP TABLE
        ( followed
        by a node shutdown and subesequent master takeover---and with the
        containing local checkpoint not yet complete prior to the
        takeover---caused the LCP to be ignored, and in some cases, the
        data node to fail. (Bug #23735996) References: See also: Bug

      * Removed an invalid assertion to the effect that all
        cascading child scans are closed at the time API connection
        records are released following an abort of the main transaction.
        The assertion was invalid because closing of scans in such cases
        is by design asynchronous with respect to the main transaction,
        which means that subscans may well take some time to close after
        the main transaction is closed. (Bug #23709284)

      * Although arguments to the DUMP
        command are 32-bit integers, ndb_mgmd used a buffer
        of only 10 bytes when processing them. (Bug #23708039)

      * The READ_BACKUP setting was not honored when performing
        scans on BLOB tables. (Bug #23703536)

      * Setting FULLY_REPLICATED=1 (see Setting NDB_TABLE options
        in table comments
        did not propagate to the internal
        BLOB part tables used for BLOB
        ( and TEXT
        ( columns. (Bug

      * The READ_BACKUP setting was not applied to unique
        indexes. (Bug #23702848)

      * In ReadCommitted mode, DBSPJ read primary fragment
        replicas for tables with READ_BACKUP (see Setting NDB_TABLE
        options in table comments
        even when a local fragment was available. (Bug #23633848)

      * ALL REPORT MemoryUsage produced incorrect output when
        fully replicated tables were in use. (Bug #23539805)

      * Ordered indexes did not inherit READ_BACKUP (see Setting
        NDB_TABLE options in table comments
        from an indexed table, which meant
        that ordered index scans continued to be routed to only to
        primary fragment replicas and never to backup fragment replicas.
        Now DBDICT sets this property on ordered indexes from the table
        property when it distributes this information to instances of
        DBTC and DBSPJ. (Bug #23522027)

      * Updates to a table containing a virtual column could
        cause the binary logging thread to fail. (Bug #23514050)

      * A number of potential buffer overflow issues were found
        and fixed in the NDB codebase. (Bug #23152979)

      * During an online upgrade from a MySQL Cluster NDB 7.3
        release to an NDB 7.4 (or later) release, the failures of several
        data nodes running the lower version during local checkpoints
        (LCPs), and just prior to upgrading these nodes, led to
        additional node failures following the upgrade. This was due to
        lingering elements of the EMPTY_LCP protocol initiated by the
        older nodes as part of an LCP-plus-restart sequence, and which is
        no longer used in NDB 7.4 and later due to LCP optimizations
        implemented in those versions. (Bug #23129433)

      * A SIGNAL_DROPPED_REP handler invoked in response to long
        message buffer exhaustion was defined in the SPJ kernel block,
        but not actually used. This meant that the default handler from
        SimulatedBlock was used instead in such cases, which shut down
        the data node. (Bug #23048816) References: See also: Bug
        #23251145, Bug #23251423.

      * When a data node has insufficient redo buffer during a
        system restart, it does not participate in the restart until
        after the other nodes have started. After this, it performs a
        takeover of its fragments from the nodes in its node group that
        have already started; during this time, the cluster is already
        running and user activity is possible, including DML and DDL
        operations.  During a system restart, table creation is handled
        differently in the DIH kernel block than normally, as this
        creation actually consists of reloading table definition data
        from disk on the master node. Thus, DIH assumed that any table
        creation that occurred before all nodes had restarted must be
        related to the restart and thus always on the master node.
        However, during the takeover, table creation can occur on
        non-master nodes due to user activity; when this happened, the
        cluster underwent a forced shutdown.  Now an extra check is made
        during system restarts to detect in such cases whether the
        executing node is the master node, and use that information to
        determine whether the table creation is part of the restart
        proper, or is taking place during a subsequent takeover. (Bug

      * ndb_restore set the MAX_ROWS attribute for a table for
        which it had not been set prior to taking the backup.  (Bug

      * Whenever data nodes are added to or dropped from the
        cluster, the NDB
        kernel's Event API is notified of this using a
        SUB_GCP_COMPLETE_REP signal with either the ADD (add) flag or SUB
        (drop) flag set, as well as the number of nodes to add or drop;
        this allows NDB to maintain a correct count of
        SUB_GCP_COMPLETE_REP signals pending for every incomplete bucket.
        In addition to handling the bucket for the epoch associated with
        the addition or removal, it must also compensate for any later
        incomplete buckets associated with later epochs. Although it was
        possible to complete such buckets out of order, there was no
        handling of these, leading a stall in to event reception.  This
        fix adds detection and handling of such out of order bucket
        completion. (Bug #20402364) References: See also: Bug #82424, Bug

  * To be continued in part 2....

MySQL Cluster 7.5.4 has been released (part 1/2)Balasubramanian Kandasamy18 Oct