This is a new Beta development release, fixing recently discovered bugs in previous MySQL Cluster releases.
MySQL Cluster NDB 6.3 no longer in development. MySQL Cluster NDB 6.3 is no longer being actively developed; if you are using a MySQL Cluster NDB 6.3 release, you should upgrade to the latest version of MySQL Cluster, which is available from http://dev.mysql.com/downloads/cluster/ .
Obtaining MySQL Cluster NDB 6.3. This is a source-only release, which you must compile and install using the instructions found in Installing MySQL from Source, and in MySQL Cluster Installation and Upgrades. You can download the GPL source tarball from the MySQL FTP site at ftp://ftp.mysql.com/pub/mysql/download/cluster_telco/.
This Beta release incorporates all bugfixes and changes made in the previous MySQL Cluster NDB 6.3 release, as well as all bugfixes and feature changes which were added in mainline MySQL 5.1 through MySQL 5.1.23 (see Changes in MySQL 5.1.23 (2008-01-29)).
Please refer to our bug database at http://bugs.mysql.com/ for more details about the individual bugs fixed in this version.
Important Change; Cluster API: Because
NDB_LE_MemoryUsage.page_size_kbshows memory page sizes in bytes rather than kilobytes, it has been renamed to
page_size_bytes. The name
page_size_kbis now deprecated and thus subject to removal in a future release, although it currently remains supported for reasons of backward compatibility. See The
Ndb_logevent_typeType, for more information about
NDB_LE_MemoryUsage. (Bug #30271)
OPTIMIZE TABLEcan now be interrupted. This can be done, for example, by killing the SQL thread performing the
Now only 2 local checkpoints are stored, rather than 3 as in previous MySQL Cluster versions. This lowers disk space requirements and reduces the size and number of redo log files needed.
The mysqld option
--ndb-batch-sizehas been added. This enables control of the size of batches used for running transactions.
Node recovery can now be done in parallel, rather than sequentially, which can result in much faster recovery times.
NDBtables can now be controlled using the session variables
NDBtables not to be checkpointed to disk.
ndb_table_temporaryhas the same effect; in addition, when
ndb_table_temporaryis used, no
NDBtable schema files are created.
ndb_restore now supports basic attribute promotion; that is, data from a column of a given type can be restored to a column using a “larger” type. For example, Cluster backup data taken from a
SMALLINTcolumn can be restored to a
For more information, see ndb_restore — Restore a MySQL Cluster Backup.
Important Change; Disk Data: It is no longer possible on 32-bit systems to issue statements appearing to create Disk Data log files or data files greater than 4 GB in size. (Trying to create log files or data files larger than 4 GB on 32-bit systems led to unrecoverable data node failures; such statements now fail with
NDBerror 1515.) (Bug #29186)
Replication: The code implementing heartbeats did not check for possible errors in some circumstances; this kept the dump thread hanging while waiting for heartbeats loop even though the slave was no longer connected. (Bug #33332)
High numbers of insert operations, delete operations, or both could cause
NDBerror 899 (Rowid already allocated) to occur unnecessarily. (Bug #34033)
A periodic failure to flush the send buffer by the
NDBTCP transporter could cause a unnecessary delay of 10 ms between operations. (Bug #34005)
DROP TABLEdid not free all data memory. This bug was observed in MySQL Cluster NDB 6.3.7 only. (Bug #33802)
A race condition could occur (very rarely) when the release of a GCI was followed by a data node failure. (Bug #33793)
Some tuple scans caused the wrong memory page to be accessed, leading to invalid results. This issue could affect both in-memory and Disk Data tables. (Bug #33739)
A failure to initialize an internal variable led to sporadic crashes during cluster testing. (Bug #33715)
The server failed to reject properly the creation of an
NDBtable having an unindexed
AUTO_INCREMENTcolumn. (Bug #30417)
The Cluster backup process could not detect when there was no more disk space and instead continued to run until killed manually. Now the backup fails with an appropriate error when disk space is exhausted. (Bug #28647)
It was possible in
config.inito define cluster nodes having node IDs greater than the maximum permitted value. (Bug #28298)
Under some circumstances, a recovering data node did not use its own data, instead copying data from another node even when this was not required. This in effect bypassed the optimized node recovery protocol and caused recovery times to be unnecessarily long. (Bug #26913)
Cluster Replication: Consecutive DDL statements involving tables (
ALTER TABLE, and
DROP TABLE) could be executed so quickly that previous DDL statements upon which they depended were not yet written in the binary log.
For example, if
DROP TABLE foowas issued immediately following
CREATE TABLE foo, the
DROPstatement could fail because the
CREATEhad not yet been recorded. (Bug #34006)
Cluster Replication: ndb_restore -e restored excessively large values to the
epochcolumn when restoring to a MySQL Cluster version supporting Micro-GCPs from an older version that did not support these.
A workaround when restoring to MySQL Cluster releases supporting micro-GCPs previous to MySQL Cluster NDB 6.3.8 is to perform a 32-bit shift on the
epochcolumn values to reduce them to their proper size. (Bug #33406)
Cluster API: Transactions containing inserts or reads would hang during
NdbTransaction::execute()calls made from NDB API applications built against a MySQL Cluster version that did not support micro-GCPs accessing a later version that supported micro-GCPs. This issue was observed while upgrading from MySQL Cluster NDB 6.1.23 to MySQL Cluster NDB 6.2.10 when the API application built against the earlier version attempted to access a data node already running the later version, even after disabling micro-GCPs by setting
TimeBetweenEpochsequal to 0. (Bug #33895)
Cluster API: When reading a
NdbOperation::getValue(), 12 bytes were written to the buffer rather than the expected 8 bytes. (Bug #33750)