Author: js221926
Date: 2011-04-21 12:04:36 +0200 (Thu, 21 Apr 2011)
New Revision: 25956
Log:
Documented fix for Cluster BUG#11766167 / BUG#59213:
Ability to use NodeGroup=65536 (and not use --nowait-nodes)
New StartNoNodegroupTimeout data node configuration parameter
Modified:
trunk/dynamic-docs/changelog/mysqld-2.xml
trunk/dynamic-docs/command-optvars/ndb-config-params.xml
trunk/refman-5.1/mysql-cluster-configuration-core.xml
trunk/refman-5.1/mysql-cluster-management.xml
trunk/refman-5.1/mysql-cluster-overview.xml
Modified: trunk/dynamic-docs/changelog/mysqld-2.xml
===================================================================
--- trunk/dynamic-docs/changelog/mysqld-2.xml 2011-04-21 07:48:02 UTC (rev 25955)
+++ trunk/dynamic-docs/changelog/mysqld-2.xml 2011-04-21 10:04:36 UTC (rev 25956)
Changed blocks: 1, Lines Added: 57, Lines Deleted: 0; 2391 bytes
@@ -10,6 +10,63 @@
<tags>
<highlight type="cluster"/>
+ <manual type="online add nodes"/>
+ <manual type="NodeGroup"/>
+ <manual type="StartNoNodeGroupTimeout"/>
+ <manual type="--nowait-nodes"/>
+ </tags>
+
+ <bugs>
+ <fixes bugid="11766167"/>
+ <fixes bugid="59213"/>
+ </bugs>
+
+ <versions>
+ <version ver="5.1.56-ndb-7.0.24"/>
+ <version ver="5.1.56-ndb-7.1.13"/>
+ </versions>
+
+ <message>
+
+ <para>
+ It is now possible to add data nodes online to a running MySQL
+ Cluster without performing a rolling restart of the cluster or
+ starting data node processes with the
+ <option role="ndbd">--nowait-nodes</option> option. This can be
+ done by setting <literal role="ndbparam:ndbd">Nodegroup =
+ 65536</literal> in the <filename>config.ini</filename> file for
+ any data nodes that should be started at a later time, when
+ first starting the cluster. (It was possible to set
+ <literal role="ndbparam:ndbd">NodeGroup</literal> to this value
+ previously, but the management server failed to start.)
+ </para>
+
+ <para>
+ As part of this fix, a new data node configuration parameter
+ <literal role="ndbparam:ndbd">StartNoNodeGroupTimeout</literal>
+ has been added. When the management server sees that there are
+ data nodes with no node group (that is, nodes for which
+ <literal role="ndbparam:ndbd">Nodegroup = 65536</literal>), it
+ waits
+ <literal role="ndbparam:ndbd">StartNoNodeGroupTimeout</literal>
+ milliseconds before treating these nodes as though they were
+ listed with the <option role="ndbd">--nowait-nodes</option>
+ option, and proceeds to start.
+ </para>
+
+ <para>
+ For more information, see
+ <xref linkend="mysql-cluster-online-add-node"/>.
+ </para>
+
+ </message>
+
+ </logentry>
+
+ <logentry entrytype="feature">
+
+ <tags>
+ <highlight type="cluster"/>
<manual type="ndbinfo.nodes"/>
<manual type="configuration"/>
<manual type="restarts"/>
Modified: trunk/dynamic-docs/command-optvars/ndb-config-params.xml
===================================================================
--- trunk/dynamic-docs/command-optvars/ndb-config-params.xml 2011-04-21 07:48:02 UTC (rev 25955)
+++ trunk/dynamic-docs/command-optvars/ndb-config-params.xml 2011-04-21 10:04:36 UTC (rev 25956)
Changed blocks: 2, Lines Added: 25, Lines Deleted: 1; 1456 bytes
@@ -2959,7 +2959,7 @@
</shortdescription>
<values vartype="numeric" platform="all" inversion="5.1.30-ndb-6.4.0" units="">
- <value default="" minimum="0" maximum="64K"/>
+ <value default="" minimum="0" maximum="65536"/>
</values>
<versions>
@@ -4486,6 +4486,30 @@
</mysqloption>
+ <mysqloption id="startnonodegrouptimeout-ndbd" section="cluster" subsection="ndbd">
+
+ <xrefto id="ndbparam-ndbd-startnonodegrouptimeout"/>
+
+ <name>StartNoNodeGroupTimeout</name>
+
+ <shortdescription>
+ Time to wait for nodes without a nodegroup before trying to start
+ (0=forever)
+ </shortdescription>
+
+ <values vartype="numeric" platform="all" inversion="5.1.56-ndb-7.0.24" units="milliseconds">
+ <value default="15000" minimum="0" maximum="4294967039"/>
+ </values>
+
+ <versions>
+ <manual version="5.1"/>
+ <introduced version="5.1.56-ndb-7.0.24,5.1.56-ndb-7.1.13"/>
+ </versions>
+
+ <restart type="node" initial="no"/>
+
+ </mysqloption>
+
<mysqloption id="startpartialtimeout-ndbd" section="cluster" subsection="ndbd">
<xrefto id="ndbparam-ndbd-startpartialtimeout"/>
Modified: trunk/refman-5.1/mysql-cluster-configuration-core.xml
===================================================================
--- trunk/refman-5.1/mysql-cluster-configuration-core.xml 2011-04-21 07:48:02 UTC (rev 25955)
+++ trunk/refman-5.1/mysql-cluster-configuration-core.xml 2011-04-21 10:04:36 UTC (rev 25956)
Changed blocks: 2, Lines Added: 45, Lines Deleted: 1; 2901 bytes
@@ -2304,7 +2304,7 @@
parameter is chiefly intended for use in adding a new node
group to a running MySQL Cluster without having to perform a
rolling restart. For this purpose, you should set it to
- 65535 (the maximum value). You are not required to set a
+ 65536 (the maximum value). You are not required to set a
<literal role="ndbparam:ndbd">NodeGroup</literal> value for
all cluster data nodes, only for those nodes which are to be
started and added to the cluster as a new node group at a
@@ -4545,6 +4545,50 @@
</listitem>
<listitem>
+ <para id="ndbparam-ndbd-startnonodegrouptimeout">
+ <indexterm>
+ <primary>StartNoNodeGroupTimeout</primary>
+ </indexterm>
+
+ <literal role="ndbparam:ndbd">StartNoNodeGroupTimeout</literal>
+ </para>
+
+ <para condition="dynamic:optvar:item" role="5.1:ndb-config-params:startnonodegrouptimeout-ndbd"/>
+
+ <para>
+ When a data node is configured with
+ <literal role="ndbparam:ndbd">Nodegroup = 65536</literal>, is
+ regarded as not being assigned to any node group. When that
+ is done, the cluster waits
+ <literal>StartNoNodegroupTimeout</literal> milliseconds,
+ then treats such nodes as though they had been added to the
+ list passed to the
+ <option role="ndbd">--nowait-nodes</option> option, and
+ starts. The default value is <literal>15000</literal> (that is, the
+ management server waits 15
+ seconds). Setting this parameter equal to
+ <literal>0</literal> means that the cluster waits
+ indefinitely.
+ </para>
+
+ <para>
+ <literal>StartNoNodegroupTimeout</literal> must be the same
+ for all data nodes in the cluster; for this reason, you
+ should always set it in the <literal>[ndbd
+ default]</literal> section of the
+ <filename>config.ini</filename> file, rather than for
+ individual data nodes.
+ </para>
+
+ <para>
+ This parameter was added in MySQL Cluster NDB 7.0.24 and
+ MySQL Cluster NDB 7.1.13. See
+ <xref linkend="mysql-cluster-online-add-node"/>, for more
+ information.
+ </para>
+ </listitem>
+
+ <listitem>
<para id="ndbparam-ndbd-heartbeatintervaldbdb">
<indexterm>
<primary>HeartbeatIntervalDbDb</primary>
Modified: trunk/refman-5.1/mysql-cluster-management.xml
===================================================================
--- trunk/refman-5.1/mysql-cluster-management.xml 2011-04-21 07:48:02 UTC (rev 25955)
+++ trunk/refman-5.1/mysql-cluster-management.xml 2011-04-21 10:04:36 UTC (rev 25956)
Changed blocks: 13, Lines Added: 100, Lines Deleted: 46; 10719 bytes
@@ -12505,7 +12505,7 @@
<listitem>
<para>
After dropping all <literal role="se">NDBCLUSTER</literal>
- tables using <literal>DROP TABLE</literal>.
+ tables using <literal role="stmt">DROP TABLE</literal>.
</para>
<para>
@@ -12671,20 +12671,17 @@
</orderedlist>
- <note>
- <para>
- Previously, when adding multiple new node groups to a MySQL
- Cluster, it was necessary to add only the nodes to be assigned
- to a given new node group, create that node group using
- <literal>CREATE NODEGROUP</literal>, then repeat this process
- for each new node group to be added to the cluster. Beginning
- with MySQL Cluster NDB 7.0.16 and MySQL Cluster 7.1.5, this
- issue is resolved; you can all the nodes desired, then issue
- several <literal>CREATE NODEGROUP</literal> commands in
- succession to add the new node groups to the cluster.
- (Bug#54497)
- </para>
- </note>
+ <para>
+ You can add all the nodes desired, then issue several
+ <literal>CREATE NODEGROUP</literal> commands in succession to
+ add the new node groups to the cluster. Prior to MySQL Cluster
+ NDB 7.0.16 and MySQL Cluster NDB 7.1.5, when adding multiple new
+ node groups to a MySQL Cluster, it was necessary to add only the
+ nodes to be assigned to a given new node group, create that node
+ group using <literal>CREATE NODEGROUP</literal>, then repeat
+ this process for each new node group to be added to the cluster.
+ (Bug#54497)
+ </para>
</section>
@@ -12804,11 +12801,10 @@
In this example, we show the single-threaded
<command>ndbd</command> being used for the data node
processes. However—beginning with MySQL Cluster NDB
- 7.0.4 (Bug#43108)—you can also apply this example, if
- you are using the multi-threaded <command>ndbmtd</command> by
- substituting <command>ndbmtd</command> for
- <command>ndbd</command> wherever it appears in the steps that
- follow.
+ 7.0.4—you can also apply this example, if you are using
+ the multi-threaded <command>ndbmtd</command> by substituting
+ <command>ndbmtd</command> for <command>ndbd</command> wherever
+ it appears in the steps that follow. (Bug#43108)
</para>
</note>
@@ -12864,7 +12860,7 @@
[api]
Id=21
HostName = 192.168.0.21
- </programlisting>
+</programlisting>
<para>
Once you have made the necessary changes, save the file.
@@ -12971,17 +12967,17 @@
Node 1: Node shutdown completed, restarting, no start.
Node 1 is being restarted
-ndb_mgm> Node 1: Start initiated (version &ndb-engine-current-7.0;)
-Node 1: Started (version &ndb-engine-current-7.0;)
+ndb_mgm> Node 1: Start initiated (version &ndb-engine-current-7.1;)
+Node 1: Started (version &ndb-engine-current-7.1;)
ndb_mgm> <userinput>2 RESTART</userinput>
Node 2: Node shutdown initiated
Node 2: Node shutdown completed, restarting, no start.
Node 2 is being restarted
-ndb_mgm> Node 2: Start initiated (version &ndb-engine-current-7.0;)
+ndb_mgm> Node 2: Start initiated (version &ndb-engine-current-7.1;)
-ndb_mgm> Node 2: Started (version &ndb-engine-current-7.0;)
+ndb_mgm> Node 2: Started (version &ndb-engine-current-7.1;)
</programlisting>
<important>
@@ -12994,6 +12990,15 @@
</para>
</important>
+ <para>
+ Beginning with MySQL Cluster NDB 7.0.24 and MySQL Cluster NDB
+ 7.1.13, you can verify that all existing data nodes were
+ restarted using the updated configuration by checking the
+ <literal>ndbinfo.nodes</literal> table in the
+ <command>mysql</command> client. (See
+ <xref linkend="mysql-cluster-ndbinfo-nodes"/>.)
+ </para>
+
<formalpara>
<title>Step 4: Perform a rolling restart of all cluster API nodes</title>
@@ -13198,8 +13203,9 @@
<para>
You can cause the data to be redistributed among all of the data
nodes by performing, for each
- <literal role="se">NDBCLUSTER</literal> table, an <literal>ALTER
- ONLINE TABLE ... REORGANIZE PARTITION</literal> statement in the
+ <literal role="se">NDBCLUSTER</literal> table, an
+ <literal role="stmt" condition="alter-table">ALTER ONLINE TABLE
+ ... REORGANIZE PARTITION</literal> statement in the
<command>mysql</command> client. After issuing the statement
<literal>ALTER ONLINE TABLE ips REORGANIZE PARTITION</literal>,
you can see using <command>ndb_desc</command> that the data for
@@ -13279,12 +13285,14 @@
</note>
<para>
- In addition, for each table, the <literal>ALTER ONLINE
+ In addition, for each table, the
+ <literal role="stmt" condition="alter-table">ALTER ONLINE
TABLE</literal> statement should be followed by an
- <literal>OPTIMIZE TABLE</literal> to reclaim wasted space. You
- can obtain a list of all <literal role="se">NDBCLUSTER</literal>
- tables using the following query against the
- <literal>INFORMATION_SCHEMA.TABLES</literal> table:
+ <literal role="stmt">OPTIMIZE TABLE</literal> to reclaim wasted
+ space. You can obtain a list of all
+ <literal role="se">NDBCLUSTER</literal> tables using the
+ following query against the
+ <literal role="is">INFORMATION_SCHEMA.TABLES</literal> table:
</para>
<programlisting>
@@ -13299,9 +13307,9 @@
for a MySQL Cluster table is always
<literal role="se">NDBCLUSTER</literal>, regardless of whether
the <literal>CREATE TABLE</literal> statement used to create
- the table (or <literal>ALTER TABLE</literal> statement used to
- convert an existing table from a different storage engine)
- used <literal role="se">NDB</literal> or
+ the table (or <literal role="stmt">ALTER TABLE</literal>
+ statement used to convert an existing table from a different
+ storage engine) used <literal role="se">NDB</literal> or
<literal role="se">NDBCLUSTER</literal> in its
<literal>ENGINE</literal> option.
</para>
@@ -13385,12 +13393,17 @@
Id = 2
HostName = 192.168.0.2
+[ndbd]
Id = 3
HostName = 192.168.0.3
+Nodegroup = 65536 # MySQL Cluster NDB 7.0.24 and later;
+ # MySQL Cluster NDB 7.1.13 and later
[ndbd]
Id = 4
HostName = 192.168.0.4
+Nodegroup = 65536 # MySQL Cluster NDB 7.0.24 and later;
+ # MySQL Cluster NDB 7.1.13 and later
[mgm]
HostName = 192.168.0.10
@@ -13406,12 +13419,13 @@
</programlisting>
<para>
- In this case, you must perform the initial start of the cluster
- using the <option role="ndbd">--nowait-nodes</option> option
- with <command>ndbd</command> (or <command>ndbmtd</command> in
- MySQL Cluster NDB 7.0.4 and later) for each of the data nodes
- that you wish to have online immediately, so that the cluster
- does not wait for the remaining nodes to start:
+ Prior to MySQL Cluster NDB 7.0.24 and MySQL Cluster NDB 7.1.13,
+ you must perform the initial start of the cluster using the
+ <option role="ndbd">--nowait-nodes</option> option with
+ <command>ndbd</command> (or <command>ndbmtd</command> in MySQL
+ Cluster NDB 7.0.4 and later) for each of the data nodes that you
+ wish to have online immediately, so that the cluster does not
+ wait for the remaining nodes to start:
</para>
<programlisting>
@@ -13419,6 +13433,45 @@
</programlisting>
<para>
+ Beginning with MySQL Cluster NDB 7.0.24 and MySQL Cluster NDB
+ 7.1.13, the data nodes to be brought online at a later time
+ (nodes 3 and 4) can be configured with
+ <literal role="ndbparam:ndbd">NodeGroup = 65536</literal>, in
+ which case it is not necessary to start the nodes to be started
+ immediately (nodes 1 and 2) with the
+ <option role="ndbd">--nowait-nodes</option> option, so nodes 1
+ and 2 can each be started as shown here:
+ </para>
+
+<programlisting>
+shell> <userinput>ndbd -c 192.168.0.10 --initial</userinput>
+</programlisting>
+
+ <para>
+ The data nodes configured with
+ <literal role="ndbparam:ndbd">NodeGroup = 65536</literal> are
+ treated by the management server as though you had started nodes
+ 1 and 2 using <option role="ndbd">--nowait-nodes=3,4</option>
+ after waiting for a period of time determined by the setting for
+ the
+ <literal role="ndbparam:ndbd">StartNoNodeGroupTimeout</literal>
+ data node configuration parameter (also introduced in MySQL
+ Cluster NDB 7.0.24 and MySQL Cluster NDB 7.1.13). By default,
+ this is 15 seconds (15000 milliseconds).
+ </para>
+
+ <note>
+ <para>
+ <literal role="ndbparam:ndbd">StartNoNodegroupTimeout</literal>
+ must be the same for all data nodes in the cluster; for this
+ reason, you should always set it in the <literal>[ndbd
+ default]</literal> section of the
+ <filename>config.ini</filename> file, rather than for
+ individual data nodes.
+ </para>
+ </note>
+
+ <para>
When you are ready to add the second node group, you need only
perform the following additional steps:
</para>
@@ -13449,11 +13502,12 @@
<listitem>
<para>
- In the <command>mysql</command> client, issue <literal>ALTER
- ONLINE TABLE ... REORGANIZE PARTITION</literal> and
- <literal>OPTIMIZE TABLE</literal> statements for each
- existing <literal role="se">NDBCLUSTER</literal> table. (As
- noted elsewhere in this section, existing MySQL Cluster
+ In the <command>mysql</command> client, issue
+ <literal role="stmt" condition="alter-table">ALTER ONLINE
+ TABLE ... REORGANIZE PARTITION</literal> and
+ <literal role="stmt">OPTIMIZE TABLE</literal> statements for
+ each existing <literal role="se">NDBCLUSTER</literal> table.
+ (As noted elsewhere in this section, existing MySQL Cluster
tables cannot use the new nodes for data distribution until
this has been done.)
</para>
Modified: trunk/refman-5.1/mysql-cluster-overview.xml
===================================================================
--- trunk/refman-5.1/mysql-cluster-overview.xml 2011-04-21 07:48:02 UTC (rev 25955)
+++ trunk/refman-5.1/mysql-cluster-overview.xml 2011-04-21 10:04:36 UTC (rev 25956)
Changed blocks: 2, Lines Added: 65, Lines Deleted: 11; 3969 bytes
@@ -2289,20 +2289,50 @@
</formalpara>
</listitem>
+ <listitem>
+ <formalpara>
+
+ <title>Configuration version information in <literal>ndbinfo.nodes</literal></title>
+
+ <para>
+ You can see which version or versions of the MySQL Cluster
+ configuration file are in effect on the data nodes by
+ checking the <literal>config_generation</literal> column
+ which is added to the <literal>ndbinfo.nodes</literal>
+ table in MySQL Cluster NDB 7.1.13. For more information,
+ see <xref linkend="mysql-cluster-ndbinfo-nodes"/>.
+ </para>
+
+ </formalpara>
+ </listitem>
+
+ <listitem>
+ <formalpara>
+
+ <title>Improvements in adding data nodes online</title>
+
+ <para>
+ Begining with MySQL Cluster NDB 7.0.24, it is possible to
+ add data nodes online to a running MySQL Cluster without
+ performing a rolling restart of the cluster or starting
+ data node processes with the
+ <option role="ndbd">--nowait-nodes</option> option. This
+ can be done by setting
+ <literal role="ndbparam:ndbd">Nodegroup = 65536</literal>
+ in the <filename>config.ini</filename> file for any data
+ nodes that should be started at a later time, when first
+ starting the cluster. The amount of time the cluster waits
+ before doing this can be controlled using the
+ <literal role="ndbparam:ndbd">StartNoNodeGroupTimeout</literal>
+ data node configuration parameter.
+ </para>
+
+ </formalpara>
+ </listitem>
+
</itemizedlist>
<para>
- A <literal>config_generation</literal> column has been added to
- the <literal>ndbinfo.nodes</literal> table. By checking this
- column, it is now possible to determine which version or
- versions of the MySQL Cluster configuration file are in effect
- on the data nodes. This information can be especially useful
- when performing a rolling restart of the cluster in order to
- update its configuration. For more information, see
- <xref linkend="mysql-cluster-ndbinfo-nodes"/>.
- </para>
-
- <para>
MySQL Cluster NDB 7.1 (actually, MySQL Cluster NDB 6.3 and
later) is also supported by &mcm;, which provides an advanced
command-line interface that can simplify many complex MySQL
@@ -3336,6 +3366,30 @@
</formalpara>
</listitem>
+ <listitem>
+ <formalpara>
+
+ <title>Improvements in adding data nodes online</title>
+
+ <para>
+ Begining with MySQL Cluster NDB 7.0.24, it is possible to
+ add data nodes online to a running MySQL Cluster without
+ performing a rolling restart of the cluster or starting
+ data node processes with the
+ <option role="ndbd">--nowait-nodes</option> option. This
+ can be done by setting
+ <literal role="ndbparam:ndbd">Nodegroup = 65536</literal>
+ in the <filename>config.ini</filename> file for any data
+ nodes that should be started at a later time, when first
+ starting the cluster. The amount of time the cluster waits
+ before doing this can be controlled using the
+ <literal role="ndbparam:ndbd">StartNoNodeGroupTimeout</literal>
+ data node configuration parameter.
+ </para>
+
+ </formalpara>
+ </listitem>
+
</itemizedlist>
<para>
| Thread |
|---|
| • svn commit - mysqldoc@oter02: r25956 - in trunk: dynamic-docs/changelog dynamic-docs/command-optvars refman-5.1 | jon.stephens | 21 Apr |