This section provides information about MySQL Cluster software and table file compatibility between MySQL 5.1 and MySQL Cluster NDB 6.x releases with regard to performing upgrades and downgrades.
Only compatibility between MySQL versions with regard to
NDBCLUSTER
is taken into account
in this section, and there are likely other issues to be
considered. As with any other MySQL software upgrade
or downgrade, you are strongly encouraged to review the
relevant portions of the MySQL Manual for the MySQL versions
from which and to which you intend to migrate, before
attempting an upgrade or downgrade of the MySQL Cluster
software. See Upgrading MySQL.
The following table shows Cluster upgrade and downgrade compatibility between different releases of MySQL 5.1:
Notes — MySQL 5.1.
MySQL 5.1.3 was the first public release in this series.
Direct upgrades or downgrades between MySQL Cluster 5.0
and 5.1 are not supported; you must dump all
NDBCLUSTER
tables using
mysqldump, install the new version of
the software, and then reload the tables from the dump.
You cannot downgrade a MySQL 5.1.6 or later Cluster using Disk Data tables to MySQL 5.1.5 or earlier unless you convert all such tables to in-memory Cluster tables first.
MySQL 5.1.8, MySQL 5.1.10, and MySQL 5.1.13 were not released.
Online cluster upgrades and downgrades between MySQL
5.1.11 (or an earlier version) and 5.1.12 (or a later
version) are not possible due to major changes in the
cluster file system. In such cases, you must perform a
backup or dump, upgrade (or downgrade) the software,
start each data node with --initial
,
and then restore from the backup or dump. You can use
NDB
backup/restore or
mysqldump for this purpose.
Online downgrades from MySQL 5.1.14 or later to versions previous to 5.1.14 are not supported due to incompatible changes in the cluster system tables.
Online upgrades from MySQL 5.1.17 and earlier to 5.1.18
and later MySQL 5.1.x releases are not supported for
clusters using replication due to incompatible changes
in the mysql.ndb_apply_status
table.
(Online upgrades from MySQL 5.1 to MySQL Cluster NDB 6.2
and later are not supported, as discussed elsewhere in
this section.) However, it should not be necessary to
shut down the cluster entirely, if you follow this
modified rolling restart procedure:
You should upgrade the MySQL Cluster software on each node using the same method by which it was originally installed. See Section 2.1, “MySQL Cluster Multi-Computer Installation”, for more information.
Stop the management server, update the management server software, then start the management server again. For multiple management servers, repeat this step for each management server in turn.
For each data node in turn: Stop the data node,
update the data node daemon (in MySQL Cluster NDB
7.0 and later, this can be either
ndbd or
ndbmtd) with the new version,
then restart the data node. It should not be
necessary to use --initial
when
restarting any of the data nodes after updating the
software.
Stop all SQL nodes. Upgrade the
existing MySQL server installations to the new
version on all SQL nodes, then restart them. It is
not necessary to start them one at a time after
upgrading the MySQL server software, but
there must be a time when none of them is
running before starting any of them again using the
5.1.18 (or later)
mysqld. Otherwise
— due to the fact that
mysql.ndb_apply_status
uses the
NDB
storage engine and
is thus shared between all SQL nodes — there
may be conflicts between the old and new versions of
the table on different SQL nodes.
You can find more information about the changes to
ndb_apply_status
in
Section 6.4, “MySQL Cluster Replication Schema and Tables”.
As with any other MySQL Cluster version upgrade, you should also update the MySQL Cluster management client (ndb_mgm) and other MySQL Cluster client programs such as ndb_config and ndb_error_reporter; however, this does not have to be done in any particular order.
The internal specifications for columns in
NDBCLUSTER
tables changed
in MySQL 5.1.18 to allow compatibility with later MySQL
Cluster releases that allow online adding and dropping
of columns. This change is not
backward-compatible with earlier MySQL
versions.
In order to make tables created in MySQL 5.1.17 and
earlier compatible with online adding and dropping of
columns (available beginning with beginning with MySQL
Cluster NDB 6.2.5 and MySQL Cluster NDB 6.3.3 —
see ALTER TABLE
Syntax, for more
information), it is necessary to force MySQL 5.1.18 and
later to convert the tables to the new format by
following this procedure:
Back up all
NDBCLUSTER
tables.
Upgrade the MySQL Cluster software on all data, management, and SQL nodes.
Shut down the cluster completely (this includes all data, management, and API or SQL nodes).
Restart the cluster, starting all data nodes with
the --initial
option (to clear
and rebuild the data node file systems).
Restore the
NDBCLUSTER
tables
from backup.
This is not necessary for
NDBCLUSTER
tables created
in MySQL 5.1.18 and later; such tables will
automatically be compatible with online adding and
dropping of columns (as implemented beginning with MySQL
Cluster NDB 6.2.5 and MySQL Cluster NDB 6.3.2).
In order to minimise possible later difficulties, it is strongly advised that the procedure outlined above be followed as soon as possible after to upgrading from MySQL 5.1.17 or earlier to MySQL 5.1.18 or later.
Information about how this change effects users of MySQL Cluster NDB 6.x/7.0 is provided later in this section.
MySQL Cluster is not supported in standard MySQL 5.1 releases, beginning with MySQL 5.1.25. If you are using MySQL Cluster in a standard MySQL 5.1 release, you should upgrade to the most recent MySQL Cluster NDB 6.2 or 6.3 release.
The following table shows Cluster upgrade and downgrade compatibility between different releases of MySQL Cluster NDB 6.x/7.x:
Notes — MySQL Cluster NDB 6.x/7.x.
MySQL Cluster NDB 6.1 is no longer in production; if you are still using a MySQL Cluster NDB 6.1 release, you should upgrade to the most recent MySQL Cluster NDB 6.3 or 7.0 release as soon as possible.
It is not possible to upgrade from MySQL Cluster NDB 6.1.2 (or an older 6.1 release) directly to 6.1.4 or a newer NDB 6.1 release, or to downgrade from 6.1.4 (or a newer 6.1 release) directly to 6.1.2 or an older NDB 6.1 release; in either case, you must upgrade or downgrade to MySQL Cluster NDB 6.1.3 first.
It is not possible to perform an online downgrade from MySQL Cluster NDB 6.1.8 (or a newer 6.1 release) to MySQL Cluster NDB 6.1.7 (or an older 6.1 release).
MySQL Cluster NDB 6.1.6 and 6.1.18 were not released.
It is not possible to perform an online upgrade or downgrade between MySQL Cluster NDB 6.2 and any previous release series (including mainline MySQL 5.1 and MySQL Cluster NDB 6.1); it is necessary to perform a dump and reload. However, it should be possible to perform online upgrades or downgrades between any MySQL Cluster NDB 6.2 release and any MySQL Cluster NDB 6.3 release up to and including 6.3.7.
The internal specifications for columns in
NDB
tables changed in MySQL
Cluster NDB 6.1.17 and 6.2.1 to allow compatibility with
future MySQL Cluster releases that are expected to
implement online adding and dropping of columns. This
change is not backward-compatible with earlier MySQL or
MySQL Cluster NDB 6.x versions.
In order to make tables created in earlier versions compatible with online adding and dropping of columns in later versions, it is necessary to force MySQL Cluster to convert the tables to the new format by following this procedure following an upgrade:
Upgrade the MySQL Cluster software on all data, management, and SQL nodes
Back up all NDB
tables
Shut down the cluster (all data, management, and SQL nodes)
Restart the cluster, starting all data nodes with
the --initial
option (to clear
and rebuild the data node file systems)
Restore the tables from backup
In order to minimise possible later difficulties, it is
strongly advised that the procedure outlined above be
followed as soon as possible after to upgrading between
the versions indicated. The procedure is
not necessary for
NDBCLUSTER
tables created
in any of the following versions:
MySQL Cluster NDB 6.1.8 or a later MySQL Cluster NDB 6.1 release
MySQL Cluster 6.2.1 or a later MySQL Cluster NDB 6.2 release
Any MySQL Cluster NDB 6.3 release
Tables created in the listed versions (or later ones, as indicated) are already compatible with online adding and dropping of columns (as implemented beginning with MySQL Cluster NDB 6.2.5 and MySQL Cluster NDB 6.3.2).
It was not possible to perform an online upgrade between any MySQL Cluster NDB 6.2 release and MySQL Cluster NDB 6.3.8 and later MySQL Cluster 6.3 releases. This issue was fixed in MySQL Cluster NDB 6.3.21. (Bug#41435)
Online downgrades between MySQL Cluster NDB 6.2.5 and earlier releases are not supported.
Online downgrades between MySQL Cluster NDB 6.3.8 and earlier releases are not supported.
Online upgrades from any MySQL Cluster NDB 7.0 release up to and including MySQL Cluster NDB 7.0.4 (as well as all early releases numbered NDB 6.4.x) to MySQL Cluster NDB 7.0.5 or later are not possible. Upgrades to MySQL Cluster NDB 7.0.6 or later from MySQL Cluster NDB 6.3.8 or a later MySQL Cluster NDB 6.3 release, or from MySQL Cluster NDB 7.0.5 or later, are supported. (Bug#44294)
When upgrading online from a MySQL Cluster NDB 6.3 release to a MySQL Cluster NDB 7.0 release, you should not try to upgrade the data nodes from ndbd to ndbmtd at the same time. Instead, perform the upgrade using the new ndbd executable (from the MySQL Cluster NDB 7.0.x distribution to which you are upgrading) to replace the one in use on the data nodes. Once the version upgrade is complete, you can perform a second (online) upgrade to replace the data node executables with ndbmtd from the MySQL Cluster NDB 7.0.x distribution.
In MySQL Cluster NDB 7.0.4, the default values for a number of MySQL Cluster configuration parameters relating to memory usage and buffering changed (see Changes in MySQL Cluster NDB 7.0.4 (5.1.32-ndb-7.0.4) , for a list of the parameters whose defaults changed). For this reason, you may encounter issues if you try to use a configuration that does not explicitly define each of these buffers (because it was developed for a previous version of MySQL Cluster, SendBufferMemory and ReceiveBufferMemory in particular.
Prior to MySQL Cluster NDB 7.0.7, DML statements failed if executed while performing an online upgrade from a MySQL Cluster NDB 6.3 release. (Bug#45917)
Following an upgrade from any MySQL Cluster NDB 6.3.x release to MySQL Cluster NDB 7.0.6, DDL and backup operations failed. This issue was resolved in MySQL Cluster NDB 7.0.7. (Bug#46494, Bug#46563)
In some cases, there could be problems with online upgrades from MySQL Cluster NDB 6.3 releases to MySQL Cluster NDB 7.0 releases due to a previous change in the signalling format used between nodes. This issue was corrected in MySQL Cluster NDB 7.0.9.
Once an NDB
table had an
ALTER
ONLINE TABLE
operation performed on it using a
MySQL Cluster NDB 6.3.x release, it could not be
upgraded online to MySQL Cluster NDB 7.0. This issue was
resolved in MySQL Cluster NDB 7.0.8. (See Bug#47542.)
Following an upgrade from MySQL Cluster NDB 6.3 to MySQL
Cluster NDB 7.0, if there were any tables having unique
indexes prior to the upgrade, attempts to create unique
indexes failed. This could also occur when performing
offline ALTER TABLE
operations on tables having indexes that were not
dropped as a result of the ALTER
TABLE
. This issue was due to a change in the
way that NDB
tracked unique
indexes internally, and was resolved in MySQL Cluster
NDB 7.0.9. (Bug#48416)
Workaround.
For upgrades to MySQL Cluster NDB 7.0 releases prior
to version 7.0.9, a workaround are available:
Following the upgrade, perform a second rolling
restart of the cluster before before performing any
ALTER TABLE
operations
involving indexes.
A table created in a previous version of MySQL Cluster
does not automatically support
NDB
-native default values
after the cluster is upgraded to MySQL Cluster NDB 7.1.0
or later. Such a table continues to use default values
supplied by the MySQL server until it is upgraded by
performing an offline ALTER
TABLE
on it.
When upgrading to a MySQL Cluster NDB 7.1 or later release from a MySQL Cluster NDB 7.0 release, you should not attempt to create any new tables until all data nodes are using the new ndbd or ndbmtd binary. This is because the older binaries do not provide support for native default values; tables created with native default value support cannot be used with NDB 7.0.x or earlier versions of the software.
Due to an issue discovered after the release of MySQL Cluster NDB 7.0.10 (Bug#50433), it is not possible to perform an online upgrade from MySQL Cluster NDB 7.0.9b and earlier MySQL Cluster NDB 7.0 releases to MySQL Cluster NDB 7.0.10. Instead, you should upgrade your MySQL Cluster NDB 7.0 cluster directly to MySQL Cluster NDB 7.0.11 or later.
This issue did not appear to affect MySQL Cluster NDB 6.3, and it should be possible to upgrade online from MySQL Cluster NDB 6.3 to MySQL Cluster NDB 7.0.10 without any problems other than those noted preciously.
It is not possible to perform an online upgrade from a MySQL Cluster NDB 6.3 or 7.0 release to MySQL Cluster NDB 7.1.0 or 7.1.1. This issue was fixed in MySQL Cluster NDB 7.1.2. (Bug#51429)