MySQL Forums
Forum List  »  Announcements

MySQL Cluster 7.5.4 has been released (part 1/2)
Posted by: Balasubramanian Kandasamy
Date: October 18, 2016 10:33AM

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

  http://www.mysql.com/downloads/cluster/

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

  http://dev.mysql.com/doc/relnotes/mysql-cluster/7.5/en/index.html

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

  http://www.mysql.com/products/cluster/

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
   (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html) 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
   http://dev.mysql.com/downloads/cluster/.

   For an overview of changes made in MySQL Cluster NDB 7.5, see What is
   New in MySQL Cluster NDB 7.5
   (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-what-is-new.html).

   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)
   (http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-16.html)).

     * 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
       (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-linux-rpm.html).

     * Added the --print-sql-log
(http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-programs-ndb-restore.html#option_ndb_restore_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
       (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html)
       storage engine is not sufficient for this purpose.  (Bug
       #13511949)

     * 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
       (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo.html)
       information database. These tables are listed here,
       with brief descriptions:

          + dict_obj_info
(http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo-dict-obj-info.html) 
          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
(http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo-table-distribution-status.html) 
          provides NDB table distribution status information

          + table_fragments
          (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo-table-fragments.html) 
          provides information about the distribution of NDB table fragments

          + table_info
          (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo-table-info.html)
          provides information about logging,
          checkpointing, storage, and other options in force for each
          NDB table

          + table_replicas
          (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo-table-replicas.html) 
          provides information about fragment replicas For more information, 
          see The ndbinfo MySQL Cluster Information Database
          (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo.html).
          (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
          object.

          + 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
          (http://dev.mysql.com/doc/ndbapi/en/ndb-error-classifications.html). 
          (Bug #22353594)


   Bugs Fixed

     * Important Change: The default value of the
       --ndb-default-column-format
(http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-options-variables.html#option_mysqld_ndb-default-column-format)
       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
       ndb_report_thresh_binlog_epoch_slip
(http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-options-variables.html#sysvar_ndb_report_thresh_binlog_epoch_slip)
       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 (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-logs-event-buffer.html).
       (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
       (http://dev.mysql.com/doc/ndbapi/en/ndb-table.html) methods
       getFragmentCountType() and setFragmentCountType() have been
       renamed to getPartitionBalance()
       (http://dev.mysql.com/doc/ndbapi/en/ndb-table-getpartitionbalance.html) 
       and setPartitionBalance()
       (http://dev.mysql.com/doc/ndbapi/en/ndb-table-setpartitionbalance.html), 
       respectively; getFragmentCountTypeString() is
       renamed to getPartitionBalanceString()
       (http://dev.mysql.com/doc/ndbapi/en/ndb-table-getpartitionbalancestring.html). 
      In addition, Object::FragmentCountType has
       been renamed to PartitionBalance
       (http://dev.mysql.com/doc/ndbapi/en/ndb-object-partitionbalance.html),
       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
       (http://dev.mysql.com/doc/ndbapi/en/ndb-table.html) and Object
       (http://dev.mysql.com/doc/ndbapi/en/ndb-object.html) member
       descriptions. For more information on the SQL-level changes made
       as part of this fix, Setting NDB_TABLE options in table comments
(http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html). 
       (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
(http://dev.mysql.com/doc/ndbapi/en/ndb-internals-kernel-blocks-dbtc.html))
       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)

     * In some cases, ALTER TABLE ... REORGANIZE PARTITION
(http://dev.mysql.com/doc/refman/5.7/en/alter-table-partition-operations.html) 
       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
       #24610551)

     * Using ALGORITHM=INPLACE when changing any of a table's
       NDB_TABLE properties (see Setting NDB_TABLE options in table
       comments
(http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html)) 
       caused the server to fail.  (Bug #24584741)

     * Following successive ALTER TABLE
       (http://dev.mysql.com/doc/refman/5.7/en/alter-table.html)
       statements updating NDB_TABLE properties (see Setting NDB_TABLE
       options in table comments
(http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html)),
       the current values were not always
       shown by SHOW CREATE TABLE
       (http://dev.mysql.com/doc/refman/5.7/en/show-create-table.html)
       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
       (http://dev.mysql.com/doc/refman/5.7/en/alter-table.html)
       statement attempting to set both FULLY_REPLICATED and
       PARTITION_BALANCE (see Setting NDB_TABLE options in table
       comments
(http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html)) 
       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
          stopped.

          + 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
       #24444861.

     * 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
(http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-mgm-client-commands.html#ndbclient-create-nodegroup)
       led to random data node failures. (Bug #23748958)

     * DROP TABLE
       (http://dev.mysql.com/doc/refman/5.7/en/drop-table.html) 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
       #23288252.

     * 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
       (http://dev.mysql.com/doc/ndbapi/en/ndb-internals-dump-commands.html) 
       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
(http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html)) 
       did not propagate to the internal
       BLOB part tables used for BLOB
       (http://dev.mysql.com/doc/refman/5.7/en/blob.html) and TEXT
       (http://dev.mysql.com/doc/refman/5.7/en/blob.html) columns. (Bug
       #23703343)

     * 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
(http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html)),
       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
(http://dev.mysql.com/doc/refman/5.7/en/create-table-ndb-table-comment-options.html))
       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
       #23028418)

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

   * Whenever data nodes are added to or dropped from the
       cluster, the NDB
       (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html)
       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
       #24399450.

 * To be continued in part 2....


Options: ReplyQuote


Subject
Views
Written By
Posted
MySQL Cluster 7.5.4 has been released (part 1/2)
1768
October 18, 2016 10:33AM


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.