MySQL Cluster NDB 7.1.4 is a new release of MySQL Cluster,
incorporating new features in the
NDB storage engine and fixing
recently discovered bugs in MySQL Cluster NDB 7.1.3 and previous
MySQL Cluster releases.
Obtaining MySQL Cluster NDB 7.1. The latest MySQL Cluster NDB 7.1 binaries for supported platforms can be obtained from http://dev.mysql.com/downloads/cluster/. Source code for the latest MySQL Cluster NDB 7.1 release can be obtained from the same location. You can also access the MySQL Cluster NDB 7.1 development source tree at https://code.launchpad.net/~mysql/mysql-server/mysql-cluster-7.1.
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.1 through MySQL 5.1.44 (see Changes in MySQL 5.1.44 (2010-02-04)).
Important Change: The maximum number of attributes (columns plus indexes) per table has increased to 512.
--wait-nodesoption has been added for ndb_waiter. When this option is used, the program waits only for the nodes having the listed IDs to reach the desired state. For more information, see ndb_waiter — Wait for MySQL Cluster to Reach a Given Status. (Bug #52323)
As part of this change, new methods relating to default values have been added to the
Tableclasses in the NDB API. For more information, see Column::getDefaultValue(), Column::setDefaultValue(), and Table::hasDefaultValues(). (Bug #30529)
--skip-unknown-objectsoption for ndb_restore. This option causes ndb_restore to ignore any schema objects which it does not recognize. Currently, this is useful chiefly for restoring native backups made from a cluster running MySQL Cluster NDB 7.0 to a cluster running MySQL Cluster NDB 6.3.
Added the MySQL Cluster management server option
--config-cache, which makes it possible to enable and disable configuration caching. This option is turned on by default; to disable configuration caching, start ndb_mgmd with
--config-cache=0, or with
--skip-config-cache. See ndb_mgmd — The MySQL Cluster Management Server Daemon, for more information.
Incompatible Change; Cluster API: The default behavior of the NDB API Event API has changed as follows:
Previously, when creating an
Event, DDL operations (alter and drop operations on tables) were automatically reported on any event operation that used this event, but as a result of this change, this is no longer the case. Instead, you must now invoke the event's
setReport()method, with the new
ER_DDL, to get this behavior.
For existing NDB API applications where you wish to retain the old behavior, you must update the code as indicated previously, then recompile, following an upgrade. Otherwise, DDL operations are no longer reported after upgrading
NDBtables until creation of a table failed due to
NDBerror 905 Out of attribute records (increase MaxNoOfAttributes), then increasing
MaxNoOfAttributesand restarting all management node and data node processes, attempting to drop and re-create one of the tables failed with the error Out of table records..., even when sufficient table records were available. (Bug #53944)
References: See also Bug #52055. This bug is a regression of Bug #44294.
Creating a Disk Data table, dropping it, then creating an in-memory table and performing a restart, could cause data node processes to fail with errors in the
DBTUPkernel block if the new table's internal ID was the same as that of the old Disk Data table. This could occur because undo log handling during the restart did not check that the table having this ID was now in-memory only. (Bug #53935)
A table created while
ndb_table_no_loggingwas enabled was not always stored to disk, which could lead to a data node crash with Error opening DIH schema files for table. (Bug #53934)
An internal buffer allocator used by
NDBhas the form
alloc(and attempts to allocate
wantedpages, but is permitted to allocate a smaller number of pages, between
minimum. However, this allocator could sometimes allocate fewer than
minimumpages, causing problems with multi-threaded building of ordered indexes. (Bug #53580)
When compiled with support for
epollbut this functionality is not available at runtime, MySQL Cluster tries to fall back to use the
select()function in its place. However, an extra
ndbout_c()call in the transporter registry code caused ndbd to fail instead. (Bug #53482)
The value set for the ndb_mgmd option
--ndb-nodeidwas not verified prior to use as being within the permitted range (1 to 255, inclusive), leading to a crash of the management server. (Bug #53412)
NDBtruncated a column declared as
DECIMAL(65,0)to a length of 64. Now such a column is accepted and handled correctly. In cases where the maximum length (65) is exceeded,
NDBnow raises an error instead of truncating. (Bug #53352)
NDBlog handler failed, the memory allocated to it was freed twice. (Bug #53200)
DataMemoryhigher than 4G on 32-bit platforms caused ndbd to crash, instead of failing gracefully with an error. (Bug #52536, Bug #50928)
When creating an index,
NDBfailed to check whether the internal ID allocated to the index was within the permissible range, leading to an assertion. This issue could manifest itself as a data node failure with
NDBerror 707 (No more table metadata records (increase MaxNoOfTables)), when creating tables in rapid succession (for example, by a script, or when importing from mysqldump), even with a relatively high value for
MaxNoOfTablesand a relatively low number of tables. (Bug #52055)
ndb_restore did not raise any errors if hashmap creation failed during execution. (Bug #51434)
Specifying the node ID as part of the
--ndb-connectstringoption to mysqld was not handled correctly.
The fix for this issue includes the following changes:
Multiple occurrences of any of the mysqld options
--ndb-nodeidare now handled in the same way as with other MySQL server options, in that the value set in the last occurrence of the option is the value that is used by mysqld.
--ndb-nodeidis used, its value overrides that of any
nodeidsetting used in
--ndb-connectstring. For example, starting mysqld with
--ndb-connectstring=nodeid=1,10.100.1.100 --ndb-nodeid=3now produces the same result as starting it with
The 1024-character limit on the length of the connection string is removed, and
--ndb-connectstringis now handled in this regard in the same way as other mysqld options.
In the NDB API, a new constructor for
Ndb_cluster_connectionis added which takes as its arguments a connection string and the node ID to force the API node to use.
NDB did not distinguish correctly between table names differing only by lettercase when
lower_case_table_nameswas set to 0. (Bug #33158)
ndb_mgm -e "ALL STATUS"erroneously reported that data nodes remained in start phase 0 until they had actually started.
Replication: A buffer overrun in the handling of
DATEcolumn values could cause mysqlbinlog to fail when reading logs containing certain combinations of DML statements on a table having a
DATEcolumn followed by dropping the table. (Bug #52202)
Cluster Replication: Replication failed after a restart of the slave SQL node, due to an error in writing the
master.infofile. (Bug #52859)
ALTER TABLEdid not work correctly where the name of the table, the database, or both contained special characters, causing the MySQL server to crash. (Bug #52225)
References: See also Bug #53409, Bug #14959.
The performance of MySQL applications using non-persistent client connections was adversely affected due to many of these connections being kept waiting for an excessive length of time in cleanup phase while being closed. (Bug #48832)
The MySQL client library mishandled
EINPROGRESSerrors for connections in nonblocking mode. This could lead to replication failures on hosts capable of resolving both IPv4 and IPv6 network addresses, when trying to resolve
localhost. (Bug #37267)
References: See also Bug #44344.