This section provides general information about the behavior of and current limitations in adding MySQL Cluster nodes online.
Redistribution of Data.
The ability to add new nodes online includes a means to
reorganize NDBCLUSTER
table data
and indexes so that they are distributed across all data
nodes, including the new ones. Table reorganization of both
in-memory and Disk Data tables is supported. This
redistribution does not currently include unique indexes (only
ordered indexes are redistributed) or BLOB
table data, but we are working to add redistibution of these
in the near future. The redistribution for
NDBCLUSTER
tables already
existing before the new data nodes were added is not
automatic, but can be accomplished using simple SQL statements
in mysql or another MySQL client
application. However, all data and indexes added to tables
created after a new node group has been added are distributed
automatically among all cluster data nodes, including those
added as part of the new node group.
Partial starts. It is possible to add a new node group without all of the new data nodes being started. It is also possible to add a new node group to a degraded cluster — that is, a cluster that is only partially started, or where one or more data nodes are not running. In the latter case, the cluster must have enough nodes running to be viable before the new node group can be added.
Effects on ongoing operations.
Normal DML operations using MySQL Cluster data are not
prevented by the creation or addition of a new node group, or
by table reorganization. However, it is not possible to
perform DDL concurrently with table reorganization —
that is, no other DDL statements can be issued while an
ALTER TABLE ...
REORGANIZE PARTITION
statement is executing. In
addition, during the execution of ALTER TABLE ...
REORGANIZE PARTITION
(or the execution of any other
DDL statement), it is not possible to restart cluster data
nodes.
Failure handling. Failures of data nodes during node group creation and table reorganization are handled as hown in the following table:
Failure occurs during: | Failure occurs in: | ||
---|---|---|---|
“Old” data nodes | “New” data nodes | System | |
Node group creation |
|
|
|
Table reorganization |
|
|
|
Dropping node groups.
The ndb_mgm client supports a DROP
NODEGROUP
command, but it is possible to drop a node
group only when no data nodes in the node group contain any
data. Since there is currently no way to “empty”
a specific data node or node group, this command works only
the following two cases:
After issuing CREATE NODEGROUP
in the
ndb_mgm client, but before issuing
any ALTER
ONLINE TABLE ... REORGANIZE PARTITION
statements in the mysql client.
After dropping all
NDBCLUSTER
tables using
DROP TABLE
.
TRUNCATE TABLE
does not
work for this purpose because the data nodes continue to
store the table definitions.
User Comments
Currently to reorganize BLOB or UNIQUE INDEXES you can do a "NULL" ALTER TABLE operation. (i.e. ALTER TABLE `tbl_name` ENGINE=NDBCLUSTER;)
This will not be an online operation. This table will be locked while the ALTER is in progress. This operation also requires some free space on the existing nodes. You will need 1/N't the size of the table of free space where N is the number of node groups in the cluster.
Add your own comment.