MySQL Cluster NDB 7.1.3 is the first General
Availability release in the MySQL Cluster NDB 7.1
release series, incorporating new features in the
NDBCLUSTER storage engine and
fixing recently discovered bugs in MySQL Cluster NDB 7.1.2-beta
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 NDB 6.x, MySQL Cluster NDB 7.0, and MySQL Cluster NDB 7.1 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)).
Functionality Added or Changed
Incompatible Change:
The schema for the memoryusage
table of the ndbinfo
information database has changed, as detailed in the following
list:
The max column has been renamed to
total.
The used and total
(formerly max) columns now display values
in bytes rather than memory pages.
Added the columns used_pages and
total_pages to show the amount of a
resource used and total amount available in pages.
The size of the memory pages used for calculating data
memory (used_pages and
total_pages columns) is now 32K rather
than 16K.
For more information, aee
The ndbinfo memoryusage Table.
Important Change:
The experimental pools table
has been removed from the
ndbinfo database. Information
useful to MySQL Cluster administration that was contained in
this table should be available from other
ndbinfo tables.
Important Note: MySQL Cluster 7.1 is now supported for production use on Windows platforms.
Some limitations specific to Windows remain; the most important of these are given in the following list:
There is not yet any Windows installer for MySQL Cluster; you must extract, place, configure, and start the necessary MySQL Cluster executables manually.
MySQL Cluster processes cannot yet be installed as Windows services. This means that each process executable must be run from a command prompt, and cannot be backgrounded. If you close the command prompt window in which you started the process, the process terminates.
There is as yet no “angel” process for data nodes; if a data node process quits, it must be restarted manually.
ndb_error_reporter is not yet available on Windows.
The multi-threaded data node process (ndbmtd) is not yet included in the binary distribution. However, it should be built automatically if you build MySQL Cluster from source.
As with MySQL Cluster on other supported platforms, you cannot build MySQL Cluster for Windows from the MySQL Server 5.1 sources; you must use the source code from the MySQL Cluster NDB 7.1 tree.
Replication; Cluster Replication:
MySQL Cluster Replication now supports attribute promotion and
demotion for row-based replication between columns of different
but similar types on the master and the slave. For example, it
is possible to promote an INT
column on the master to a BIGINT
column on the slave, and to demote a
TEXT column to a
VARCHAR column.
The implementation of type demotion distinguishes between lossy
and non-lossy type conversions, and their use on the slave can
be controlled by setting the
slave_type_conversions global
server system variable.
For more information about attribute promotion and demotion for row-based replication in MySQL Cluster, see Attribute promotion and demotion (MySQL Cluster). (Bug #47163, Bug #46584)
Bugs Fixed
Important Change; Cluster Replication:
The --ndb-log-empty-epochs option
was ignored. Setting the
ndb_log_empty_epochs server
system variable also had no effect.
As part of the fix for this issue, rows for empty epochs are now
recorded in the ndb_binlog_index table even
when --ndb-log-empty-epochs is 0.
(Bug #49559, Bug #11757505)
If a node or cluster failure occurred while
mysqld was scanning the
ndb.ndb_schema table (which it does when
attempting to connect to the cluster), insufficient error
handling could lead to a crash by mysqld in
certain cases. This could happen in a MySQL Cluster with a great
many tables, when trying to restart data nodes while one or more
mysqld processes were restarting.
(Bug #52325)
In MySQL Cluster NDB 7.0 and later, DDL operations are performed within schema transactions; the NDB kernel code for starting a schema transaction checks that all data nodes are at the same version before permitting a schema transaction to start. However, when a version mismatch was detected, the client was not actually informed of this problem, which caused the client to hang. (Bug #52228)
After running a mixed series of node and system restarts, a system restart could hang or fail altogether. This was caused by setting the value of the newest completed global checkpoint too low for a data node performing a node restart, which led to the node reporting incorrect GCI intervals for its first local checkpoint. (Bug #52217)
A mysqld, when attempting to access the
ndbinfo database, crashed if
could not contact the management server.
(Bug #51067)
When performing a complex mix of node restarts and system
restarts, the node that was elected as master sometimes required
optimized node recovery due to missing REDO
information. When this happened, the node crashed with
Failure to recreate object ... during restart, error
721 (because the DBDICT restart
code was run twice). Now when this occurs, node takeover is
executed immediately, rather than being made to wait until the
remaining data nodes have started.
(Bug #52135)
References: See also Bug #48436.
The internal variable ndb_new_handler, which
is no longer used, has been removed.
(Bug #51858)
ha_ndbcluster.cc was not compiled with the
same SAFEMALLOC and
SAFE_MUTEX flags as the MySQL Server.
(Bug #51857)
When debug compiling MySQL Cluster on Windows, the mysys library was not compiled with -DSAFEMALLOC and -DSAFE_MUTEX, due to the fact that my_socket.c was misnamed as my_socket.cc. (Bug #51856)
Some values shown in the
memoryusage table did not
match corresponding values shown by the
ndb_mgm client ALL REPORT
MEMORYUSAGE command.
(Bug #51735)
Restoring a MySQL Cluster backup between platforms having different endianness failed when also restoring metadata and the backup contained a hashmap not already present in the database being restored to. This issue was discovered when trying to restore a backup made on Solaris/SPARC to a MySQL Cluster running on Solaris/x86, but could conceivably occur in other cases where the endianness of the platform on which the backup was taken differed from that of the platform being restored to. (Bug #51432)
The mysql client system
command did not work properly. This issue was only known to
affect the version of the mysql client that
was included with MySQL Cluster NDB 7.0 and MySQL Cluster NDB
7.1 releases.
(Bug #48574)
The redo log protects itself from being filled up by
periodically checking how much space remains free. If
insufficient redo log space is available, it sets the state
TAIL_PROBLEM which results in transactions
being aborted with error code 410 (out of redo
log). However, this state was not set following a
node restart, which meant that if a data node had insufficient
redo log space following a node restart, it could crash a short
time later with Fatal error due to end of REDO
log. Now, this space is checked during node
restarts.
(Bug #51723)
Packaging; Cluster API:
The file
META-INF/services/org.apache.openjpa.lib.conf.ProductDerivation
was missing from the clusterjpa JAR file.
This could cause setting
openjpa.BrokerFactory to
“ndb” to be rejected.
(Bug #52106)
References: See also Bug #14192154.
Disk Data: Inserts of blob column values into a MySQL Cluster Disk Data table that exhausted the tablespace resulted in misleading no such tuple error messages rather than the expected error tablespace full.
This issue appeared similar to Bug #48113, but had a different underlying cause. (Bug #52201)
Disk Data:
DDL operations on Disk Data tables having a relatively small
UNDO_BUFFER_SIZE could fail unexpectedly.
Cluster Replication:
When mysqld was started with
--binlog-do-db or
--binlog-ignore-db, no
LOST_EVENTS incident was written to the
binary log.
(Bug #47096)
Cluster API:
A number of issues were corrected in the NDB API coding examples
found in the storage/ndb/ndbapi-examples
directory in the MySQL Cluster source tree. These included
possible endless recursion in
ndbapi_scan.cpp as well as problems running
some of the examples on systems using Windows or Mac OS X due to
the lettercase used for some table names.
(Bug #30552, Bug #30737)