Author: jstephens
Date: 2007-06-27 09:44:30 +0200 (Wed, 27 Jun 2007)
New Revision: 6918
Log:
Reordered introductory sections to get rid of orphan section.
Modified:
trunk/refman-4.1/mysql-cluster.xml
trunk/refman-5.0/mysql-cluster.xml
trunk/refman-5.1/mysql-cluster.xml
trunk/refman-5.2/mysql-cluster.xml
Modified: trunk/refman-4.1/mysql-cluster.xml
===================================================================
--- trunk/refman-4.1/mysql-cluster.xml 2007-06-26 19:23:09 UTC (rev 6917)
+++ trunk/refman-4.1/mysql-cluster.xml 2007-06-27 07:44:30 UTC (rev 6918)
Changed blocks: 1, Lines Added: 204, Lines Deleted: 200; 17804 bytes
@@ -276,248 +276,252 @@
should not be a source of problems.
</para>
- </section>
+ <section id="mysql-cluster-basics">
- <section id="mysql-cluster-basics">
+ <title>MySQL Cluster Core Concepts</title>
- <title>Basic MySQL Cluster Concepts</title>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>concepts</secondary>
+ </indexterm>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>concepts</secondary>
- </indexterm>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>nodes and types</secondary>
+ </indexterm>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>nodes and types</secondary>
- </indexterm>
+ <indexterm>
+ <primary>data node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
- <indexterm>
- <primary>data node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
+ <indexterm>
+ <primary>management node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
- <indexterm>
- <primary>management node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
+ <indexterm>
+ <primary>SQL node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
- <indexterm>
- <primary>SQL node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
+ <indexterm>
+ <primary>API node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
- <indexterm>
- <primary>API node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
-
- <indexterm>
- <primary><command>ndbd</command> (MySQL Cluster)</primary>
- <secondary>defined</secondary>
+ <indexterm>
+ <primary><command>ndbd</command> (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
<!-- <seealso>data node (MySQL Cluster)</seealso> -->
- </indexterm>
+ </indexterm>
- <indexterm>
- <primary><command>mgmd</command> (MySQL Cluster)</primary>
- <secondary>defined</secondary>
+ <indexterm>
+ <primary><command>mgmd</command> (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
<!-- <seealso>management node (MySQL Cluster)</seealso> -->
- </indexterm>
+ </indexterm>
- <indexterm>
- <primary><command>ndb_mgmd</command> (MySQL Cluster)</primary>
- <secondary>defined</secondary>
+ <indexterm>
+ <primary><command>ndb_mgmd</command> (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
<!-- <seealso>management node (MySQL Cluster)</seealso> -->
- </indexterm>
+ </indexterm>
- <indexterm>
- <primary><command>mysqld</command></primary>
- <secondary>role in MySQL Cluster</secondary>
+ <indexterm>
+ <primary><command>mysqld</command></primary>
+ <secondary>role in MySQL Cluster</secondary>
<!-- <see>SQL Node (MySQL Cluster)</see> -->
- </indexterm>
+ </indexterm>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>data node</secondary>
- </indexterm>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>data node</secondary>
+ </indexterm>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>management node</secondary>
- </indexterm>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>management node</secondary>
+ </indexterm>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>SQL node</secondary>
- </indexterm>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>SQL node</secondary>
+ </indexterm>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>API node</secondary>
- </indexterm>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>API node</secondary>
+ </indexterm>
- <indexterm>
- <primary>Configuring MySQL Cluster (concepts)</primary>
- </indexterm>
+ <indexterm>
+ <primary>Configuring MySQL Cluster (concepts)</primary>
+ </indexterm>
- <para>
- <firstterm><literal>NDB</literal></firstterm> is an in-memory
- storage engine offering high-availability and data-persistence
- features.
- </para>
+ <para>
+ <firstterm><literal>NDB</literal></firstterm> is an in-memory
+ storage engine offering high-availability and data-persistence
+ features.
+ </para>
- <para>
- The <literal>NDB</literal> storage engine can be configured with a
- range of failover and load-balancing options, but it is easiest to
- start with the storage engine at the cluster level. MySQL
- Cluster's <literal>NDB</literal> storage engine contains a
- complete set of data, dependent only on other data within the
- cluster itself.
- </para>
+ <para>
+ The <literal>NDB</literal> storage engine can be configured with
+ a range of failover and load-balancing options, but it is
+ easiest to start with the storage engine at the cluster level.
+ MySQL Cluster's <literal>NDB</literal> storage engine contains a
+ complete set of data, dependent only on other data within the
+ cluster itself.
+ </para>
- <para>
- The cluster portion of MySQL Cluster is currently configured
- independently of the MySQL servers. In a MySQL Cluster, each part
- of the cluster is considered to be a <firstterm>node</firstterm>.
- </para>
+ <para>
+ The cluster portion of MySQL Cluster is currently configured
+ independently of the MySQL servers. In a MySQL Cluster, each
+ part of the cluster is considered to be a
+ <firstterm>node</firstterm>.
+ </para>
- <para>
- <emphasis role="bold">Note</emphasis>: In many contexts, the term
- <quote>node</quote> is used to indicate a computer, but when
- discussing MySQL Cluster it means a <emphasis>process</emphasis>.
- It is possible to run any number of nodes on a single computer,
- for which we use the term <firstterm>cluster host</firstterm>.
- </para>
+ <para>
+ <emphasis role="bold">Note</emphasis>: In many contexts, the
+ term <quote>node</quote> is used to indicate a computer, but
+ when discussing MySQL Cluster it means a
+ <emphasis>process</emphasis>. It is possible to run any number
+ of nodes on a single computer, for which we use the term
+ <firstterm>cluster host</firstterm>.
+ </para>
- <para>
- (However, it should be noted MySQL does not currently support the
- use of multiple data nodes on a single computer in a production
- setting. See
- <xref linkend="mysql-cluster-limitations-multiple-nodes"/>.)
- </para>
+ <para>
+ (However, it should be noted MySQL does not currently support
+ the use of multiple data nodes on a single computer in a
+ production setting. See
+ <xref linkend="mysql-cluster-limitations-multiple-nodes"/>.)
+ </para>
- <para>
- There are three types of cluster nodes, and in a minimal MySQL
- Cluster configuration, there will be at least three nodes, one of
- each of these types:
- </para>
+ <para>
+ There are three types of cluster nodes, and in a minimal MySQL
+ Cluster configuration, there will be at least three nodes, one
+ of each of these types:
+ </para>
- <itemizedlist>
+ <itemizedlist>
- <listitem>
- <para>
- <firstterm>Management node</firstterm> (MGM node): The role of
- this type of node is to manage the other nodes within the
- MySQL Cluster, performing such functions as providing
- configuration data, starting and stopping nodes, running
- backup, and so forth. Because this node type manages the
- configuration of the other nodes, a node of this type should
- be started first, before any other node. An MGM node is
- started with the command <command>ndb_mgmd</command>.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <firstterm>Management node</firstterm> (MGM node): The role
+ of this type of node is to manage the other nodes within the
+ MySQL Cluster, performing such functions as providing
+ configuration data, starting and stopping nodes, running
+ backup, and so forth. Because this node type manages the
+ configuration of the other nodes, a node of this type should
+ be started first, before any other node. An MGM node is
+ started with the command <command>ndb_mgmd</command>.
+ </para>
+ </listitem>
- <listitem>
- <para>
- <firstterm>Data node</firstterm>: This type of node stores
- cluster data. There are as many data nodes as there are
- replicas, times the number of fragments. For example, with two
- replicas, each having two fragments, you will need four data
- nodes. It is not necessary to have more than one replica. A
- data node is started with the command <command>ndbd</command>.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <firstterm>Data node</firstterm>: This type of node stores
+ cluster data. There are as many data nodes as there are
+ replicas, times the number of fragments. For example, with
+ two replicas, each having two fragments, you will need four
+ data nodes. It is not necessary to have more than one
+ replica. A data node is started with the command
+ <command>ndbd</command>.
+ </para>
+ </listitem>
- <listitem>
- <para>
- <firstterm>SQL node</firstterm>: This is a node that accesses
- the cluster data. In the case of MySQL Cluster, an SQL node is
- a traditional MySQL server that uses the <literal>NDB
- Cluster</literal> storage engine. An SQL node is typically
- started with the command <command>mysqld
- --ndbcluster</command> or by using <command>mysqld</command>
- with the <literal>ndbcluster</literal> option added to
- <filename>my.cnf</filename>.
- </para>
+ <listitem>
+ <para>
+ <firstterm>SQL node</firstterm>: This is a node that
+ accesses the cluster data. In the case of MySQL Cluster, an
+ SQL node is a traditional MySQL server that uses the
+ <literal>NDB Cluster</literal> storage engine. An SQL node
+ is typically started with the command <command>mysqld
+ --ndbcluster</command> or by using <command>mysqld</command>
+ with the <literal>ndbcluster</literal> option added to
+ <filename>my.cnf</filename>.
+ </para>
- <para>
- An SQL node is actually just a specialised type of
- <firstterm>API node</firstterm>, which designates any
- application which accesses Cluster data. One example of an API
- node is the <command>ndb_restore</command> utility that is
- used to restore a cluster backup. It is possible to write such
- applications using the
- <ulink url="&base-url-docs;/ndbapi/en/index.html">NDB
- API</ulink>.
- </para>
- </listitem>
+ <para>
+ An SQL node is actually just a specialised type of
+ <firstterm>API node</firstterm>, which designates any
+ application which accesses Cluster data. One example of an
+ API node is the <command>ndb_restore</command> utility that
+ is used to restore a cluster backup. It is possible to write
+ such applications using the
+ <ulink url="&base-url-docs;/ndbapi/en/index.html">NDB
+ API</ulink>.
+ </para>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- <para>
- <emphasis role="bold">Important</emphasis>: It is not realistic to
- expect to employ a three-node setup in a production environment.
- Such a configuration provides no redundancy; in order to benefit
- from MySQL Cluster's high-availability features, you must use
- multiple data and SQL nodes. The use of multiple management nodes
- is also highly recommended.
- </para>
+ <para>
+ <emphasis role="bold">Important</emphasis>: It is not realistic
+ to expect to employ a three-node setup in a production
+ environment. Such a configuration provides no redundancy; in
+ order to benefit from MySQL Cluster's high-availability
+ features, you must use multiple data and SQL nodes. The use of
+ multiple management nodes is also highly recommended.
+ </para>
- <para>
- For a brief introduction to the relationships between nodes, node
- groups, replicas, and partitions in MySQL Cluster, see
- <xref linkend="mysql-cluster-nodes-groups"/>.
- </para>
+ <para>
+ For a brief introduction to the relationships between nodes,
+ node groups, replicas, and partitions in MySQL Cluster, see
+ <xref linkend="mysql-cluster-nodes-groups"/>.
+ </para>
- <para>
- Configuration of a cluster involves configuring each individual
- node in the cluster and setting up individual communication links
- between nodes. MySQL Cluster is currently designed with the
- intention that data nodes are homogeneous in terms of processor
- power, memory space, and bandwidth. In addition, to provide a
- single point of configuration, all configuration data for the
- cluster as a whole is located in one configuration file.
- </para>
+ <para>
+ Configuration of a cluster involves configuring each individual
+ node in the cluster and setting up individual communication
+ links between nodes. MySQL Cluster is currently designed with
+ the intention that data nodes are homogeneous in terms of
+ processor power, memory space, and bandwidth. In addition, to
+ provide a single point of configuration, all configuration data
+ for the cluster as a whole is located in one configuration file.
+ </para>
- <para>
- The management server (MGM node) manages the cluster configuration
- file and the cluster log. Each node in the cluster retrieves the
- configuration data from the management server, and so requires a
- way to determine where the management server resides. When
- interesting events occur in the data nodes, the nodes transfer
- information about these events to the management server, which
- then writes the information to the cluster log.
- </para>
+ <para>
+ The management server (MGM node) manages the cluster
+ configuration file and the cluster log. Each node in the cluster
+ retrieves the configuration data from the management server, and
+ so requires a way to determine where the management server
+ resides. When interesting events occur in the data nodes, the
+ nodes transfer information about these events to the management
+ server, which then writes the information to the cluster log.
+ </para>
- <para>
- In addition, there can be any number of cluster client processes
- or applications. These are of two types:
- </para>
+ <para>
+ In addition, there can be any number of cluster client processes
+ or applications. These are of two types:
+ </para>
- <itemizedlist>
+ <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">Standard MySQL clients</emphasis>: These
- are no different for MySQL Cluster than they are for standard
- (non-Cluster) MySQL. In other words, MySQL Cluster can be
- accessed from existing MySQL applications written in PHP,
- Perl, C, C++, Java, Python, Ruby, and so on.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Standard MySQL clients</emphasis>:
+ These are no different for MySQL Cluster than they are for
+ standard (non-Cluster) MySQL. In other words, MySQL Cluster
+ can be accessed from existing MySQL applications written in
+ PHP, Perl, C, C++, Java, Python, Ruby, and so on.
+ </para>
+ </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Management clients</emphasis>: These
- clients connect to the management server and provide commands
- for starting and stopping nodes gracefully, starting and
- stopping message tracing (debug versions only), showing node
- versions and status, starting and stopping backups, and so on.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Management clients</emphasis>: These
+ clients connect to the management server and provide
+ commands for starting and stopping nodes gracefully,
+ starting and stopping message tracing (debug versions only),
+ showing node versions and status, starting and stopping
+ backups, and so on.
+ </para>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
+ </section>
+
<section id="mysql-cluster-nodes-groups">
<title>MySQL Cluster Nodes, Node Groups, Replicas, and Partitions</title>
Modified: trunk/refman-5.0/mysql-cluster.xml
===================================================================
--- trunk/refman-5.0/mysql-cluster.xml 2007-06-26 19:23:09 UTC (rev 6917)
+++ trunk/refman-5.0/mysql-cluster.xml 2007-06-27 07:44:30 UTC (rev 6918)
Changed blocks: 1, Lines Added: 204, Lines Deleted: 200; 17804 bytes
@@ -197,248 +197,252 @@
should not be a source of problems.
</para>
- </section>
+ <section id="mysql-cluster-basics">
- <section id="mysql-cluster-basics">
+ <title>MySQL Cluster Core Concepts</title>
- <title>Basic MySQL Cluster Concepts</title>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>concepts</secondary>
+ </indexterm>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>concepts</secondary>
- </indexterm>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>nodes and types</secondary>
+ </indexterm>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>nodes and types</secondary>
- </indexterm>
+ <indexterm>
+ <primary>data node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
- <indexterm>
- <primary>data node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
+ <indexterm>
+ <primary>management node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
- <indexterm>
- <primary>management node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
+ <indexterm>
+ <primary>SQL node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
- <indexterm>
- <primary>SQL node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
+ <indexterm>
+ <primary>API node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
- <indexterm>
- <primary>API node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
-
- <indexterm>
- <primary><command>ndbd</command> (MySQL Cluster)</primary>
- <secondary>defined</secondary>
+ <indexterm>
+ <primary><command>ndbd</command> (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
<!-- <seealso>data node (MySQL Cluster)</seealso> -->
- </indexterm>
+ </indexterm>
- <indexterm>
- <primary><command>mgmd</command> (MySQL Cluster)</primary>
- <secondary>defined</secondary>
+ <indexterm>
+ <primary><command>mgmd</command> (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
<!-- <seealso>management node (MySQL Cluster)</seealso> -->
- </indexterm>
+ </indexterm>
- <indexterm>
- <primary><command>ndb_mgmd</command> (MySQL Cluster)</primary>
- <secondary>defined</secondary>
+ <indexterm>
+ <primary><command>ndb_mgmd</command> (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
<!-- <seealso>management node (MySQL Cluster)</seealso> -->
- </indexterm>
+ </indexterm>
- <indexterm>
- <primary><command>mysqld</command></primary>
- <secondary>role in MySQL Cluster</secondary>
+ <indexterm>
+ <primary><command>mysqld</command></primary>
+ <secondary>role in MySQL Cluster</secondary>
<!-- <see>SQL Node (MySQL Cluster)</see> -->
- </indexterm>
+ </indexterm>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>data node</secondary>
- </indexterm>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>data node</secondary>
+ </indexterm>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>management node</secondary>
- </indexterm>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>management node</secondary>
+ </indexterm>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>SQL node</secondary>
- </indexterm>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>SQL node</secondary>
+ </indexterm>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>API node</secondary>
- </indexterm>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>API node</secondary>
+ </indexterm>
- <indexterm>
- <primary>Configuring MySQL Cluster (concepts)</primary>
- </indexterm>
+ <indexterm>
+ <primary>Configuring MySQL Cluster (concepts)</primary>
+ </indexterm>
- <para>
- <firstterm><literal>NDB</literal></firstterm> is an in-memory
- storage engine offering high-availability and data-persistence
- features.
- </para>
+ <para>
+ <firstterm><literal>NDB</literal></firstterm> is an in-memory
+ storage engine offering high-availability and data-persistence
+ features.
+ </para>
- <para>
- The <literal>NDB</literal> storage engine can be configured with a
- range of failover and load-balancing options, but it is easiest to
- start with the storage engine at the cluster level. MySQL
- Cluster's <literal>NDB</literal> storage engine contains a
- complete set of data, dependent only on other data within the
- cluster itself.
- </para>
+ <para>
+ The <literal>NDB</literal> storage engine can be configured with
+ a range of failover and load-balancing options, but it is
+ easiest to start with the storage engine at the cluster level.
+ MySQL Cluster's <literal>NDB</literal> storage engine contains a
+ complete set of data, dependent only on other data within the
+ cluster itself.
+ </para>
- <para>
- The cluster portion of MySQL Cluster is currently configured
- independently of the MySQL servers. In a MySQL Cluster, each part
- of the cluster is considered to be a <firstterm>node</firstterm>.
- </para>
+ <para>
+ The cluster portion of MySQL Cluster is currently configured
+ independently of the MySQL servers. In a MySQL Cluster, each
+ part of the cluster is considered to be a
+ <firstterm>node</firstterm>.
+ </para>
- <para>
- <emphasis role="bold">Note</emphasis>: In many contexts, the term
- <quote>node</quote> is used to indicate a computer, but when
- discussing MySQL Cluster it means a <emphasis>process</emphasis>.
- It is possible to run any number of nodes on a single computer,
- for which we use the term <firstterm>cluster host</firstterm>.
- </para>
+ <para>
+ <emphasis role="bold">Note</emphasis>: In many contexts, the
+ term <quote>node</quote> is used to indicate a computer, but
+ when discussing MySQL Cluster it means a
+ <emphasis>process</emphasis>. It is possible to run any number
+ of nodes on a single computer, for which we use the term
+ <firstterm>cluster host</firstterm>.
+ </para>
- <para>
- (However, it should be noted MySQL does not currently support the
- use of multiple data nodes on a single computer in a production
- setting. See
- <xref linkend="mysql-cluster-limitations-multiple-nodes"/>.)
- </para>
+ <para>
+ (However, it should be noted MySQL does not currently support
+ the use of multiple data nodes on a single computer in a
+ production setting. See
+ <xref linkend="mysql-cluster-limitations-multiple-nodes"/>.)
+ </para>
- <para>
- There are three types of cluster nodes, and in a minimal MySQL
- Cluster configuration, there will be at least three nodes, one of
- each of these types:
- </para>
+ <para>
+ There are three types of cluster nodes, and in a minimal MySQL
+ Cluster configuration, there will be at least three nodes, one
+ of each of these types:
+ </para>
- <itemizedlist>
+ <itemizedlist>
- <listitem>
- <para>
- <firstterm>Management node</firstterm> (MGM node): The role of
- this type of node is to manage the other nodes within the
- MySQL Cluster, performing such functions as providing
- configuration data, starting and stopping nodes, running
- backup, and so forth. Because this node type manages the
- configuration of the other nodes, a node of this type should
- be started first, before any other node. An MGM node is
- started with the command <command>ndb_mgmd</command>.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <firstterm>Management node</firstterm> (MGM node): The role
+ of this type of node is to manage the other nodes within the
+ MySQL Cluster, performing such functions as providing
+ configuration data, starting and stopping nodes, running
+ backup, and so forth. Because this node type manages the
+ configuration of the other nodes, a node of this type should
+ be started first, before any other node. An MGM node is
+ started with the command <command>ndb_mgmd</command>.
+ </para>
+ </listitem>
- <listitem>
- <para>
- <firstterm>Data node</firstterm>: This type of node stores
- cluster data. There are as many data nodes as there are
- replicas, times the number of fragments. For example, with two
- replicas, each having two fragments, you will need four data
- nodes. It is not necessary to have more than one replica. A
- data node is started with the command <command>ndbd</command>.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <firstterm>Data node</firstterm>: This type of node stores
+ cluster data. There are as many data nodes as there are
+ replicas, times the number of fragments. For example, with
+ two replicas, each having two fragments, you will need four
+ data nodes. It is not necessary to have more than one
+ replica. A data node is started with the command
+ <command>ndbd</command>.
+ </para>
+ </listitem>
- <listitem>
- <para>
- <firstterm>SQL node</firstterm>: This is a node that accesses
- the cluster data. In the case of MySQL Cluster, an SQL node is
- a traditional MySQL server that uses the <literal>NDB
- Cluster</literal> storage engine. An SQL node is typically
- started with the command <command>mysqld
- --ndbcluster</command> or by using <command>mysqld</command>
- with the <literal>ndbcluster</literal> option added to
- <filename>my.cnf</filename>.
- </para>
+ <listitem>
+ <para>
+ <firstterm>SQL node</firstterm>: This is a node that
+ accesses the cluster data. In the case of MySQL Cluster, an
+ SQL node is a traditional MySQL server that uses the
+ <literal>NDB Cluster</literal> storage engine. An SQL node
+ is typically started with the command <command>mysqld
+ --ndbcluster</command> or by using <command>mysqld</command>
+ with the <literal>ndbcluster</literal> option added to
+ <filename>my.cnf</filename>.
+ </para>
- <para>
- An SQL node is actually just a specialised type of
- <firstterm>API node</firstterm>, which designates any
- application which accesses Cluster data. One example of an API
- node is the <command>ndb_restore</command> utility that is
- used to restore a cluster backup. It is possible to write such
- applications using the
- <ulink url="&base-url-docs;/ndbapi/en/index.html">NDB
- API</ulink>.
- </para>
- </listitem>
+ <para>
+ An SQL node is actually just a specialised type of
+ <firstterm>API node</firstterm>, which designates any
+ application which accesses Cluster data. One example of an
+ API node is the <command>ndb_restore</command> utility that
+ is used to restore a cluster backup. It is possible to write
+ such applications using the
+ <ulink url="&base-url-docs;/ndbapi/en/index.html">NDB
+ API</ulink>.
+ </para>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- <para>
- <emphasis role="bold">Important</emphasis>: It is not realistic to
- expect to employ a three-node setup in a production environment.
- Such a configuration provides no redundancy; in order to benefit
- from MySQL Cluster's high-availability features, you must use
- multiple data and SQL nodes. The use of multiple management nodes
- is also highly recommended.
- </para>
+ <para>
+ <emphasis role="bold">Important</emphasis>: It is not realistic
+ to expect to employ a three-node setup in a production
+ environment. Such a configuration provides no redundancy; in
+ order to benefit from MySQL Cluster's high-availability
+ features, you must use multiple data and SQL nodes. The use of
+ multiple management nodes is also highly recommended.
+ </para>
- <para>
- For a brief introduction to the relationships between nodes, node
- groups, replicas, and partitions in MySQL Cluster, see
- <xref linkend="mysql-cluster-nodes-groups"/>.
- </para>
+ <para>
+ For a brief introduction to the relationships between nodes,
+ node groups, replicas, and partitions in MySQL Cluster, see
+ <xref linkend="mysql-cluster-nodes-groups"/>.
+ </para>
- <para>
- Configuration of a cluster involves configuring each individual
- node in the cluster and setting up individual communication links
- between nodes. MySQL Cluster is currently designed with the
- intention that data nodes are homogeneous in terms of processor
- power, memory space, and bandwidth. In addition, to provide a
- single point of configuration, all configuration data for the
- cluster as a whole is located in one configuration file.
- </para>
+ <para>
+ Configuration of a cluster involves configuring each individual
+ node in the cluster and setting up individual communication
+ links between nodes. MySQL Cluster is currently designed with
+ the intention that data nodes are homogeneous in terms of
+ processor power, memory space, and bandwidth. In addition, to
+ provide a single point of configuration, all configuration data
+ for the cluster as a whole is located in one configuration file.
+ </para>
- <para>
- The management server (MGM node) manages the cluster configuration
- file and the cluster log. Each node in the cluster retrieves the
- configuration data from the management server, and so requires a
- way to determine where the management server resides. When
- interesting events occur in the data nodes, the nodes transfer
- information about these events to the management server, which
- then writes the information to the cluster log.
- </para>
+ <para>
+ The management server (MGM node) manages the cluster
+ configuration file and the cluster log. Each node in the cluster
+ retrieves the configuration data from the management server, and
+ so requires a way to determine where the management server
+ resides. When interesting events occur in the data nodes, the
+ nodes transfer information about these events to the management
+ server, which then writes the information to the cluster log.
+ </para>
- <para>
- In addition, there can be any number of cluster client processes
- or applications. These are of two types:
- </para>
+ <para>
+ In addition, there can be any number of cluster client processes
+ or applications. These are of two types:
+ </para>
- <itemizedlist>
+ <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">Standard MySQL clients</emphasis>: These
- are no different for MySQL Cluster than they are for standard
- (non-Cluster) MySQL. In other words, MySQL Cluster can be
- accessed from existing MySQL applications written in PHP,
- Perl, C, C++, Java, Python, Ruby, and so on.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Standard MySQL clients</emphasis>:
+ These are no different for MySQL Cluster than they are for
+ standard (non-Cluster) MySQL. In other words, MySQL Cluster
+ can be accessed from existing MySQL applications written in
+ PHP, Perl, C, C++, Java, Python, Ruby, and so on.
+ </para>
+ </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Management clients</emphasis>: These
- clients connect to the management server and provide commands
- for starting and stopping nodes gracefully, starting and
- stopping message tracing (debug versions only), showing node
- versions and status, starting and stopping backups, and so on.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Management clients</emphasis>: These
+ clients connect to the management server and provide
+ commands for starting and stopping nodes gracefully,
+ starting and stopping message tracing (debug versions only),
+ showing node versions and status, starting and stopping
+ backups, and so on.
+ </para>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
+ </section>
+
<section id="mysql-cluster-nodes-groups">
<title>MySQL Cluster Nodes, Node Groups, Replicas, and Partitions</title>
Modified: trunk/refman-5.1/mysql-cluster.xml
===================================================================
--- trunk/refman-5.1/mysql-cluster.xml 2007-06-26 19:23:09 UTC (rev 6917)
+++ trunk/refman-5.1/mysql-cluster.xml 2007-06-27 07:44:30 UTC (rev 6918)
Changed blocks: 2, Lines Added: 470, Lines Deleted: 466; 33945 bytes
@@ -205,6 +205,476 @@
should not be a source of problems.
</para>
+ <section id="mysql-cluster-basics">
+
+ <title>MySQL Cluster Core Concepts</title>
+
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>concepts</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>nodes and types</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>data node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>management node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>SQL node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>API node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary><command>ndbd</command> (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+<!-- <seealso>data node (MySQL Cluster)</seealso> -->
+ </indexterm>
+
+ <indexterm>
+ <primary><command>mgmd</command> (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+<!-- <seealso>management node (MySQL Cluster)</seealso> -->
+ </indexterm>
+
+ <indexterm>
+ <primary><command>ndb_mgmd</command> (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+<!-- <seealso>management node (MySQL Cluster)</seealso> -->
+ </indexterm>
+
+ <indexterm>
+ <primary><command>mysqld</command></primary>
+ <secondary>role in MySQL Cluster</secondary>
+<!-- <see>SQL Node (MySQL Cluster)</see> -->
+ </indexterm>
+
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>data node</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>management node</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>SQL node</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>API node</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>Configuring MySQL Cluster (concepts)</primary>
+ </indexterm>
+
+ <para>
+ <firstterm><literal>NDB</literal></firstterm> is an in-memory
+ storage engine offering high-availability and data-persistence
+ features.
+ </para>
+
+ <para>
+ The <literal>NDB</literal> storage engine can be configured with
+ a range of failover and load-balancing options, but it is
+ easiest to start with the storage engine at the cluster level.
+ MySQL Cluster's <literal>NDB</literal> storage engine contains a
+ complete set of data, dependent only on other data within the
+ cluster itself.
+ </para>
+
+ <para>
+ The cluster portion of MySQL Cluster is currently configured
+ independently of the MySQL servers. In a MySQL Cluster, each
+ part of the cluster is considered to be a
+ <firstterm>node</firstterm>.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note</emphasis>: In many contexts, the
+ term <quote>node</quote> is used to indicate a computer, but
+ when discussing MySQL Cluster it means a
+ <emphasis>process</emphasis>. It is possible to run any number
+ of nodes on a single computer, for which we use the term
+ <firstterm>cluster host</firstterm>.
+ </para>
+
+ <para>
+ (However, it should be noted MySQL does not currently support
+ the use of multiple data nodes on a single computer in a
+ production setting. See
+ <xref linkend="mysql-cluster-limitations-multiple-nodes"/>.)
+ </para>
+
+ <para>
+ There are three types of cluster nodes, and in a minimal MySQL
+ Cluster configuration, there will be at least three nodes, one
+ of each of these types:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <firstterm>Management node</firstterm> (MGM node): The role
+ of this type of node is to manage the other nodes within the
+ MySQL Cluster, performing such functions as providing
+ configuration data, starting and stopping nodes, running
+ backup, and so forth. Because this node type manages the
+ configuration of the other nodes, a node of this type should
+ be started first, before any other node. An MGM node is
+ started with the command <command>ndb_mgmd</command>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <firstterm>Data node</firstterm>: This type of node stores
+ cluster data. There are as many data nodes as there are
+ replicas, times the number of fragments. For example, with
+ two replicas, each having two fragments, you will need four
+ data nodes. It is not necessary to have more than one
+ replica. A data node is started with the command
+ <command>ndbd</command>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <firstterm>SQL node</firstterm>: This is a node that
+ accesses the cluster data. In the case of MySQL Cluster, an
+ SQL node is a traditional MySQL server that uses the
+ <literal>NDB Cluster</literal> storage engine. An SQL node
+ is typically started with the command <command>mysqld
+ --ndbcluster</command> or by using <command>mysqld</command>
+ with the <literal>ndbcluster</literal> option added to
+ <filename>my.cnf</filename>.
+ </para>
+
+ <para>
+ An SQL node is actually just a specialised type of
+ <firstterm>API node</firstterm>, which designates any
+ application which accesses Cluster data. One example of an
+ API node is the <command>ndb_restore</command> utility that
+ is used to restore a cluster backup. It is possible to write
+ such applications using the
+ <ulink url="&base-url-docs;/ndbapi/en/index.html">NDB
+ API</ulink>.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ <emphasis role="bold">Important</emphasis>: It is not realistic
+ to expect to employ a three-node setup in a production
+ environment. Such a configuration provides no redundancy; in
+ order to benefit from MySQL Cluster's high-availability
+ features, you must use multiple data and SQL nodes. The use of
+ multiple management nodes is also highly recommended.
+ </para>
+
+ <para>
+ For a brief introduction to the relationships between nodes,
+ node groups, replicas, and partitions in MySQL Cluster, see
+ <xref linkend="mysql-cluster-nodes-groups"/>.
+ </para>
+
+ <para>
+ Configuration of a cluster involves configuring each individual
+ node in the cluster and setting up individual communication
+ links between nodes. MySQL Cluster is currently designed with
+ the intention that data nodes are homogeneous in terms of
+ processor power, memory space, and bandwidth. In addition, to
+ provide a single point of configuration, all configuration data
+ for the cluster as a whole is located in one configuration file.
+ </para>
+
+ <para>
+ The management server (MGM node) manages the cluster
+ configuration file and the cluster log. Each node in the cluster
+ retrieves the configuration data from the management server, and
+ so requires a way to determine where the management server
+ resides. When interesting events occur in the data nodes, the
+ nodes transfer information about these events to the management
+ server, which then writes the information to the cluster log.
+ </para>
+
+ <para>
+ In addition, there can be any number of cluster client processes
+ or applications. These are of two types:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Standard MySQL clients</emphasis>:
+ These are no different for MySQL Cluster than they are for
+ standard (non-Cluster) MySQL. In other words, MySQL Cluster
+ can be accessed from existing MySQL applications written in
+ PHP, Perl, C, C++, Java, Python, Ruby, and so on.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Management clients</emphasis>: These
+ clients connect to the management server and provide
+ commands for starting and stopping nodes gracefully,
+ starting and stopping message tracing (debug versions only),
+ showing node versions and status, starting and stopping
+ backups, and so on.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="mysql-cluster-nodes-groups">
+
+ <title>MySQL Cluster Nodes, Node Groups, Replicas, and Partitions</title>
+
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>nodes and node groups</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>replicas</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>partitions</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>node groups (MySQL Cluster)</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>replicas (MySQL Cluster)</primary>
+ </indexterm>
+
+ <indexterm>
+ <primary>partitions (MySQL Cluster)</primary>
+ </indexterm>
+
+ <remark role="note">
+ Author: Jon Stephens, with valuable assistance from Tomas Ulin,
+ Jeb Miller, and Hartmut Holzgraefe
+ </remark>
+
+ <remark role="note">
+ Revised with feedback from Mikael Ronström and bug reports
+ </remark>
+
+ <para>
+ This section discusses the manner in which MySQL Cluster divides
+ and duplicates data for storage.
+ </para>
+
+ <para>
+ Central to an understanding of this topic are the following
+ concepts, listed here with brief definitions:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">(Data) Node</emphasis>: An
+ <command>ndbd</command> process, which stores a
+ <firstterm>replica</firstterm> —that is, a copy of the
+ <firstterm>partition</firstterm> (see below) assigned to the
+ node group of which the node is a member.
+ </para>
+
+ <para>
+ Each data node should be located on a separate computer.
+ While it is also possible to host multiple
+ <command>ndbd</command> processes on a single computer, such
+ a configuration is not supported.
+ </para>
+
+ <para>
+ It is common for the terms <quote>node</quote> and
+ <quote>data node</quote> to be used interchangeably when
+ referring to an <command>ndbd</command> process; where
+ mentioned, management (MGM) nodes
+ (<command>ndb_mgmd</command> processes) and SQL nodes
+ (<command>mysqld</command> processes) are specified as such
+ in this discussion.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Node Group</emphasis>: A node group
+ consists of one or more nodes, and stores partitions, or
+ sets of <firstterm>replicas</firstterm> (see next item).
+ </para>
+
+ <para>
+ <emphasis role="bold">Note</emphasis>: Currently, all node
+ groups in a cluster must have the same number of nodes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Partition</emphasis>: This is a
+ portion of the data stored by the cluster. There are as many
+ cluster partitions as nodes participating in the cluster.
+ Each node is responsible for keeping at least one copy of
+ any partitions assigned to it (that is, at least one
+ replica) available to the cluster.
+ </para>
+
+ <para>
+ A replica belongs entirely to a single node; a node can (and
+ usually does) store several replicas.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis role="bold">Replica</emphasis>: This is a copy of
+ a cluster partition. Each node in a node group stores a
+ replica. Also sometimes known as a <firstterm>partition
+ replica</firstterm>. The number of replicas is equal to the
+ number of nodes per node group.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ The following diagram illustrates a MySQL Cluster with four data
+ nodes, arranged in two node groups of two nodes each; nodes 1
+ and 2 belong to node group 0, and nodes 3 and 4 belong to node
+ group 1. Note that only data (<command>ndbd</command>) nodes are
+ shown here; although a working cluster requires an
+ <command>ndb_mgm</command> process for cluster management and at
+ least one SQL node to access the data stored by the cluster,
+ these have been omitted in the figure for clarity.
+ </para>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/replicas-groups-1-1.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase lang="en">A MySQL Cluster, with 2 node groups having 2
+ nodes each</phrase>
+ </textobject>
+ </mediaobject>
+
+ <para>
+ The data stored by the cluster is divided into four partitions,
+ numbered 0, 1, 2, and 3. Each partition is stored — in
+ multiple copies — on the same node group. Partitions are
+ stored on alternate node groups:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Partition 0 is stored on node group 0; a <firstterm>primary
+ replica</firstterm> (primary copy) is stored on node 1, and
+ a <firstterm>backup replica</firstterm> (backup copy of the
+ partition) is stored on node 2.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Partition 1 is stored on the other node group (node group
+ 1); this partition's primary replica is on node 3, and its
+ backup replica is on node 4.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Partition 2 is stored on node group 0. However, the placing
+ of its two replicas is reversed from that of Partition 0;
+ for Partition 2, the primary replica is stored on node 2,
+ and the backup on node 1.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Partition 3 is stored on node group 1, and the placement of
+ its two replicas are reversed from those of partition 1.
+ That is, its primary replica is located on node 4, with the
+ backup on node 3.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ What this means regarding the continued operation of a MySQL
+ Cluster is this: so long as each node group participating in the
+ cluster has at least one node operating, the cluster has a
+ complete copy of all data and remains viable. This is
+ illustrated in the next diagram.
+ </para>
+
+ <remark role="todo">
+ [js] Not a very good caption; think of a better one.
+ </remark>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/replicas-groups-1-2.png" format="PNG"/>
+ </imageobject>
+ <textobject>
+ <phrase lang="en">Nodes required to keep a 2x2 cluster
+ viable</phrase>
+ </textobject>
+ </mediaobject>
+
+ <para>
+ In this example, where the cluster consists of two node groups
+ of two nodes each, any combination of at least one node in node
+ group 0 and at least one node in node group 1 is sufficient to
+ keep the cluster <quote>alive</quote> (indicated by arrows in
+ the diagram). However, if <emphasis>both</emphasis> nodes from
+ <emphasis>either</emphasis> node group fail, the remaining two
+ nodes are not sufficient (shown by the arrows marked out with an
+ <emphasis role="bold">X</emphasis>); in either case, the cluster
+ has lost an entire partition and so can no longer provide access
+ to a complete set of all cluster data.
+ </para>
+
+ </section>
+
</section>
<section id="mysql-cluster-cge">
@@ -793,472 +1263,6 @@
</section>
- <section id="mysql-cluster-basics">
-
- <title>Basic MySQL Cluster Concepts</title>
-
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>concepts</secondary>
- </indexterm>
-
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>nodes and types</secondary>
- </indexterm>
-
- <indexterm>
- <primary>data node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
-
- <indexterm>
- <primary>management node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
-
- <indexterm>
- <primary>SQL node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
-
- <indexterm>
- <primary>API node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
-
- <indexterm>
- <primary><command>ndbd</command> (MySQL Cluster)</primary>
- <secondary>defined</secondary>
-<!-- <seealso>data node (MySQL Cluster)</seealso> -->
- </indexterm>
-
- <indexterm>
- <primary><command>mgmd</command> (MySQL Cluster)</primary>
- <secondary>defined</secondary>
-<!-- <seealso>management node (MySQL Cluster)</seealso> -->
- </indexterm>
-
- <indexterm>
- <primary><command>ndb_mgmd</command> (MySQL Cluster)</primary>
- <secondary>defined</secondary>
-<!-- <seealso>management node (MySQL Cluster)</seealso> -->
- </indexterm>
-
- <indexterm>
- <primary><command>mysqld</command></primary>
- <secondary>role in MySQL Cluster</secondary>
-<!-- <see>SQL Node (MySQL Cluster)</see> -->
- </indexterm>
-
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>data node</secondary>
- </indexterm>
-
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>management node</secondary>
- </indexterm>
-
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>SQL node</secondary>
- </indexterm>
-
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>API node</secondary>
- </indexterm>
-
- <indexterm>
- <primary>Configuring MySQL Cluster (concepts)</primary>
- </indexterm>
-
- <para>
- <firstterm><literal>NDB</literal></firstterm> is an in-memory
- storage engine offering high-availability and data-persistence
- features.
- </para>
-
- <para>
- The <literal>NDB</literal> storage engine can be configured with a
- range of failover and load-balancing options, but it is easiest to
- start with the storage engine at the cluster level. MySQL
- Cluster's <literal>NDB</literal> storage engine contains a
- complete set of data, dependent only on other data within the
- cluster itself.
- </para>
-
- <para>
- The cluster portion of MySQL Cluster is currently configured
- independently of the MySQL servers. In a MySQL Cluster, each part
- of the cluster is considered to be a <firstterm>node</firstterm>.
- </para>
-
- <para>
- <emphasis role="bold">Note</emphasis>: In many contexts, the term
- <quote>node</quote> is used to indicate a computer, but when
- discussing MySQL Cluster it means a <emphasis>process</emphasis>.
- It is possible to run any number of nodes on a single computer,
- for which we use the term <firstterm>cluster host</firstterm>.
- </para>
-
- <para>
- (However, it should be noted MySQL does not currently support the
- use of multiple data nodes on a single computer in a production
- setting. See
- <xref linkend="mysql-cluster-limitations-multiple-nodes"/>.)
- </para>
-
- <para>
- There are three types of cluster nodes, and in a minimal MySQL
- Cluster configuration, there will be at least three nodes, one of
- each of these types:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <firstterm>Management node</firstterm> (MGM node): The role of
- this type of node is to manage the other nodes within the
- MySQL Cluster, performing such functions as providing
- configuration data, starting and stopping nodes, running
- backup, and so forth. Because this node type manages the
- configuration of the other nodes, a node of this type should
- be started first, before any other node. An MGM node is
- started with the command <command>ndb_mgmd</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <firstterm>Data node</firstterm>: This type of node stores
- cluster data. There are as many data nodes as there are
- replicas, times the number of fragments. For example, with two
- replicas, each having two fragments, you will need four data
- nodes. It is not necessary to have more than one replica. A
- data node is started with the command <command>ndbd</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <firstterm>SQL node</firstterm>: This is a node that accesses
- the cluster data. In the case of MySQL Cluster, an SQL node is
- a traditional MySQL server that uses the <literal>NDB
- Cluster</literal> storage engine. An SQL node is typically
- started with the command <command>mysqld
- --ndbcluster</command> or by using <command>mysqld</command>
- with the <literal>ndbcluster</literal> option added to
- <filename>my.cnf</filename>.
- </para>
-
- <para>
- An SQL node is actually just a specialised type of
- <firstterm>API node</firstterm>, which designates any
- application which accesses Cluster data. One example of an API
- node is the <command>ndb_restore</command> utility that is
- used to restore a cluster backup. It is possible to write such
- applications using the
- <ulink url="&base-url-docs;/ndbapi/en/index.html">NDB
- API</ulink>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- <emphasis role="bold">Important</emphasis>: It is not realistic to
- expect to employ a three-node setup in a production environment.
- Such a configuration provides no redundancy; in order to benefit
- from MySQL Cluster's high-availability features, you must use
- multiple data and SQL nodes. The use of multiple management nodes
- is also highly recommended.
- </para>
-
- <para>
- For a brief introduction to the relationships between nodes, node
- groups, replicas, and partitions in MySQL Cluster, see
- <xref linkend="mysql-cluster-nodes-groups"/>.
- </para>
-
- <para>
- Configuration of a cluster involves configuring each individual
- node in the cluster and setting up individual communication links
- between nodes. MySQL Cluster is currently designed with the
- intention that data nodes are homogeneous in terms of processor
- power, memory space, and bandwidth. In addition, to provide a
- single point of configuration, all configuration data for the
- cluster as a whole is located in one configuration file.
- </para>
-
- <para>
- The management server (MGM node) manages the cluster configuration
- file and the cluster log. Each node in the cluster retrieves the
- configuration data from the management server, and so requires a
- way to determine where the management server resides. When
- interesting events occur in the data nodes, the nodes transfer
- information about these events to the management server, which
- then writes the information to the cluster log.
- </para>
-
- <para>
- In addition, there can be any number of cluster client processes
- or applications. These are of two types:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <emphasis role="bold">Standard MySQL clients</emphasis>: These
- are no different for MySQL Cluster than they are for standard
- (non-Cluster) MySQL. In other words, MySQL Cluster can be
- accessed from existing MySQL applications written in PHP,
- Perl, C, C++, Java, Python, Ruby, and so on.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <emphasis role="bold">Management clients</emphasis>: These
- clients connect to the management server and provide commands
- for starting and stopping nodes gracefully, starting and
- stopping message tracing (debug versions only), showing node
- versions and status, starting and stopping backups, and so on.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <section id="mysql-cluster-nodes-groups">
-
- <title>MySQL Cluster Nodes, Node Groups, Replicas, and Partitions</title>
-
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>nodes and node groups</secondary>
- </indexterm>
-
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>replicas</secondary>
- </indexterm>
-
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>partitions</secondary>
- </indexterm>
-
- <indexterm>
- <primary>node groups (MySQL Cluster)</primary>
- </indexterm>
-
- <indexterm>
- <primary>replicas (MySQL Cluster)</primary>
- </indexterm>
-
- <indexterm>
- <primary>partitions (MySQL Cluster)</primary>
- </indexterm>
-
- <remark role="note">
- Author: Jon Stephens, with valuable assistance from Tomas Ulin,
- Jeb Miller, and Hartmut Holzgraefe
- </remark>
-
- <remark role="note">
- Revised with feedback from Mikael Ronström and bug reports
- </remark>
-
- <para>
- This section discusses the manner in which MySQL Cluster divides
- and duplicates data for storage.
- </para>
-
- <para>
- Central to an understanding of this topic are the following
- concepts, listed here with brief definitions:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <emphasis role="bold">(Data) Node</emphasis>: An
- <command>ndbd</command> process, which stores a
- <firstterm>replica</firstterm> —that is, a copy of the
- <firstterm>partition</firstterm> (see below) assigned to the
- node group of which the node is a member.
- </para>
-
- <para>
- Each data node should be located on a separate computer.
- While it is also possible to host multiple
- <command>ndbd</command> processes on a single computer, such
- a configuration is not supported.
- </para>
-
- <para>
- It is common for the terms <quote>node</quote> and
- <quote>data node</quote> to be used interchangeably when
- referring to an <command>ndbd</command> process; where
- mentioned, management (MGM) nodes
- (<command>ndb_mgmd</command> processes) and SQL nodes
- (<command>mysqld</command> processes) are specified as such
- in this discussion.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <emphasis role="bold">Node Group</emphasis>: A node group
- consists of one or more nodes, and stores partitions, or
- sets of <firstterm>replicas</firstterm> (see next item).
- </para>
-
- <para>
- <emphasis role="bold">Note</emphasis>: Currently, all node
- groups in a cluster must have the same number of nodes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <emphasis role="bold">Partition</emphasis>: This is a
- portion of the data stored by the cluster. There are as many
- cluster partitions as nodes participating in the cluster.
- Each node is responsible for keeping at least one copy of
- any partitions assigned to it (that is, at least one
- replica) available to the cluster.
- </para>
-
- <para>
- A replica belongs entirely to a single node; a node can (and
- usually does) store several replicas.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <emphasis role="bold">Replica</emphasis>: This is a copy of
- a cluster partition. Each node in a node group stores a
- replica. Also sometimes known as a <firstterm>partition
- replica</firstterm>. The number of replicas is equal to the
- number of nodes per node group.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The following diagram illustrates a MySQL Cluster with four data
- nodes, arranged in two node groups of two nodes each; nodes 1
- and 2 belong to node group 0, and nodes 3 and 4 belong to node
- group 1. Note that only data (<command>ndbd</command>) nodes are
- shown here; although a working cluster requires an
- <command>ndb_mgm</command> process for cluster management and at
- least one SQL node to access the data stored by the cluster,
- these have been omitted in the figure for clarity.
- </para>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/replicas-groups-1-1.png" format="PNG"/>
- </imageobject>
- <textobject>
- <phrase lang="en">A MySQL Cluster, with 2 node groups having 2
- nodes each</phrase>
- </textobject>
- </mediaobject>
-
- <para>
- The data stored by the cluster is divided into four partitions,
- numbered 0, 1, 2, and 3. Each partition is stored — in
- multiple copies — on the same node group. Partitions are
- stored on alternate node groups:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Partition 0 is stored on node group 0; a <firstterm>primary
- replica</firstterm> (primary copy) is stored on node 1, and
- a <firstterm>backup replica</firstterm> (backup copy of the
- partition) is stored on node 2.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Partition 1 is stored on the other node group (node group
- 1); this partition's primary replica is on node 3, and its
- backup replica is on node 4.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Partition 2 is stored on node group 0. However, the placing
- of its two replicas is reversed from that of Partition 0;
- for Partition 2, the primary replica is stored on node 2,
- and the backup on node 1.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Partition 3 is stored on node group 1, and the placement of
- its two replicas are reversed from those of partition 1.
- That is, its primary replica is located on node 4, with the
- backup on node 3.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- What this means regarding the continued operation of a MySQL
- Cluster is this: so long as each node group participating in the
- cluster has at least one node operating, the cluster has a
- complete copy of all data and remains viable. This is
- illustrated in the next diagram.
- </para>
-
- <remark role="todo">
- [js] Not a very good caption; think of a better one.
- </remark>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/replicas-groups-1-2.png" format="PNG"/>
- </imageobject>
- <textobject>
- <phrase lang="en">Nodes required to keep a 2x2 cluster
- viable</phrase>
- </textobject>
- </mediaobject>
-
- <para>
- In this example, where the cluster consists of two node groups
- of two nodes each, any combination of at least one node in node
- group 0 and at least one node in node group 1 is sufficient to
- keep the cluster <quote>alive</quote> (indicated by arrows in
- the diagram). However, if <emphasis>both</emphasis> nodes from
- <emphasis>either</emphasis> node group fail, the remaining two
- nodes are not sufficient (shown by the arrows marked out with an
- <emphasis role="bold">X</emphasis>); in either case, the cluster
- has lost an entire partition and so can no longer provide access
- to a complete set of all cluster data.
- </para>
-
- </section>
-
- </section>
-
<section id="mysql-cluster-multi-computer">
<title>Simple Multi-Computer How-To</title>
Modified: trunk/refman-5.2/mysql-cluster.xml
===================================================================
--- trunk/refman-5.2/mysql-cluster.xml 2007-06-26 19:23:09 UTC (rev 6917)
+++ trunk/refman-5.2/mysql-cluster.xml 2007-06-27 07:44:30 UTC (rev 6918)
Changed blocks: 2, Lines Added: 394, Lines Deleted: 390; 30664 bytes
@@ -205,442 +205,252 @@
should not be a source of problems.
</para>
- </section>
+ <section id="mysql-cluster-basics">
- <section id="mysql-cluster-cge">
+ <title>MySQL Cluster Core Concepts</title>
- <title>&mccge-series;</title>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>concepts</secondary>
+ </indexterm>
- <para>
- &mccge-series; is a branch of MySQL 5.1 using advanced versions of
- the <literal>NDB</literal> storage engine and
- <literal>NDB</literal> API. It is intended for use in the
- telcommunications industry, and is available in binary and source
- form to commercial customers. Two development trees can also be
- accessed via <ulink url="http://mysql.bkbits.net/"/>:
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>nodes and types</secondary>
+ </indexterm>
- <itemizedlist>
+ <indexterm>
+ <primary>data node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
- <listitem>
- <para>
- <literal>mysql-5.1-telco</literal>
- </para>
- </listitem>
+ <indexterm>
+ <primary>management node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
- <listitem>
- <para>
- <literal>mysql-5.1-telco-6.1</literal>
- </para>
- </listitem>
+ <indexterm>
+ <primary>SQL node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
- </itemizedlist>
- </para>
+ <indexterm>
+ <primary>API node (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+ </indexterm>
- <formalpara>
+ <indexterm>
+ <primary><command>ndbd</command> (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+<!-- <seealso>data node (MySQL Cluster)</seealso> -->
+ </indexterm>
- <title>&mccge-series; versioning</title>
+ <indexterm>
+ <primary><command>mgmd</command> (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+<!-- <seealso>management node (MySQL Cluster)</seealso> -->
+ </indexterm>
- <para>
- &mccge-series; — sometimes also referred to as
- <quote>CGE</quote> — follows a somewhat different release
- pattern from the mainline MySQL 5.1 Cluster series of releases.
- Each &mccge-series; release is identified by a two-part version
- string which identifies the mainline MySQL version from which
- the CGE release was branched and the version of the
- <literal>NDB</literal> storage engine used. For example, the
- first CGE release was <literal>mysql-5.1.14-ndb-6.1.0</literal>.
- The version string tells us that this version:
+ <indexterm>
+ <primary><command>ndb_mgmd</command> (MySQL Cluster)</primary>
+ <secondary>defined</secondary>
+<!-- <seealso>management node (MySQL Cluster)</seealso> -->
+ </indexterm>
- <itemizedlist>
+ <indexterm>
+ <primary><command>mysqld</command></primary>
+ <secondary>role in MySQL Cluster</secondary>
+<!-- <see>SQL Node (MySQL Cluster)</see> -->
+ </indexterm>
- <listitem>
- <para>
- Derives from MySQL 5.1.14, and contains all feature
- enhancement and bugfixes from MySQL 5.1, up to and
- including MySQL 5.1.14.
- </para>
- </listitem>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>data node</secondary>
+ </indexterm>
- <listitem>
- <para>
- Uses version 6.1.0 of the <literal>NDB</literal> storage
- engine.
- </para>
- </listitem>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>management node</secondary>
+ </indexterm>
- </itemizedlist>
- </para>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>SQL node</secondary>
+ </indexterm>
- </formalpara>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>API node</secondary>
+ </indexterm>
- <remark role="note">
- [js] Needs to be updated with each new CGE release.
- </remark>
+ <indexterm>
+ <primary>Configuring MySQL Cluster (concepts)</primary>
+ </indexterm>
- <formalpara>
+ <para>
+ <firstterm><literal>NDB</literal></firstterm> is an in-memory
+ storage engine offering high-availability and data-persistence
+ features.
+ </para>
- <title>&mccge-series; change history</title>
+ <para>
+ The <literal>NDB</literal> storage engine can be configured with
+ a range of failover and load-balancing options, but it is
+ easiest to start with the storage engine at the cluster level.
+ MySQL Cluster's <literal>NDB</literal> storage engine contains a
+ complete set of data, dependent only on other data within the
+ cluster itself.
+ </para>
<para>
- Changelogs for &mccge-series; releases may be found in
- <xref linkend="news-5-1-x"/>, and are grouped together according
- to the mainline MySQL 5.1 version from which they derive, in the
- following sections:
-
- <itemizedlist>
-
- <listitem>
- <para>
- <xref linkend="news-5-1-14-cge"/>: Includes
- <xref linkend="news-5-1-14-ndb-6-1-0"/>.
- </para>
-
- <para>
- This release includes all feature enhancements and
- bugfixes made in MySQL 5.1 up to and including the 5.1.14
- release.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <xref linkend="news-5-1-15-cge"/>: Includes
- <xref linkend="news-5-1-15-ndb-6-1-1"/>,
- <xref linkend="news-5-1-15-ndb-6-1-2"/>,
- <xref linkend="news-5-1-15-ndb-6-1-3"/>,
- <xref linkend="news-5-1-15-ndb-6-1-4"/>,
- <xref linkend="news-5-1-15-ndb-6-1-5"/>, and
- <xref linkend="news-5-1-15-ndb-6-1-6"/>.
- </para>
-
- <para>
- These releases include all feature enhancements and
- bugfixes made in MySQL 5.1 up to and including 5.1.15, as
- well as those CGE-specific enhancements made in
- MySQL-5.1.14-ndb-6.1.0.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <xref linkend="news-5-1-16-cge"/>: Includes
- <xref linkend="news-5-1-16-ndb-6-2-0"/> and
- <xref linkend="news-5-1-18-ndb-6-2-1"/>.
- </para>
-
- <para>
- These releases include all feature enhancements and
- bugfixes made in MySQL 5.1 up to and including 5.1.16, as
- well as those CGE-specific enhancements that were made in
- ndb-6.1.<replaceable>x</replaceable> releases.
- </para>
- </listitem>
-
- </itemizedlist>
-
- Each of the &mccge-series; includes enhancements to the
- <literal>NDB</literal> storage engine that do not appear in the
- mainline MySQL ¤t-series; tree. We plan to port these to
- MySQL ¤t-series; or later mainline MySQL releases at some
- point in the future.
+ The cluster portion of MySQL Cluster is currently configured
+ independently of the MySQL servers. In a MySQL Cluster, each
+ part of the cluster is considered to be a
+ <firstterm>node</firstterm>.
</para>
- </formalpara>
-
- <para>
- Some fixes that were applied first in &mccge-series; have already
- been ported to MySQL ¤t-series;. In these cases, the fix is
- listed twice in <xref linkend="news-5-1-x"/>.
- </para>
-
- <para>
- Since all bugfixes applied in &mccge-series; relate to MySQL
- Cluster, changelog entries for CGE releases are not prefixed with
- <quote><literal>NDB Cluster</literal>:</quote> as MySQL Cluster
- bugfixes in mainline MySQL ¤t-series; are.
- </para>
-
- <important>
<para>
- This chapter of the MySQL Manual covers both MySQL
- ¤t-series; and &mccge-series;.
+ <emphasis role="bold">Note</emphasis>: In many contexts, the
+ term <quote>node</quote> is used to indicate a computer, but
+ when discussing MySQL Cluster it means a
+ <emphasis>process</emphasis>. It is possible to run any number
+ of nodes on a single computer, for which we use the term
+ <firstterm>cluster host</firstterm>.
</para>
<para>
- Information which applies to &mccge-series; releases but not to
- mainline ¤t-series; releases is indicated with a warning
- such as this one:
+ (However, it should be noted MySQL does not currently support
+ the use of multiple data nodes on a single computer in a
+ production setting. See
+ <xref linkend="mysql-cluster-limitations-multiple-nodes"/>.)
</para>
-
- &mccge-warning-begin;
-
+
<para>
- Information which applies to mainline MySQL ¤t-series;
- releases but not to &mccge-series; releases is indicated with a
- warning such as this one:
+ There are three types of cluster nodes, and in a minimal MySQL
+ Cluster configuration, there will be at least three nodes, one
+ of each of these types:
</para>
-
- &mccge-warning-unsupported-begin;
- </important>
- <para>
- Currently, both the ndb-6.1.<replaceable>x</replaceable> and
- ndb-6.2.<replaceable>x</replaceable> series are under active
- development, with the ndb-6.1.<replaceable>x</replaceable> series
- intended for use by telecommunications customers and
- ndb-6.2.<replaceable>x</replaceable> intended for testing
- purposes.
- </para>
+ <itemizedlist>
- <para>
- Additional information about obtaining &mccge-series; binaries can
- be found on the MySQL AB web site at
- <ulink url="http://www.mysql.com/products/database/clustercge/"/>,
- or by contacting <email>sales@stripped</email>.
- </para>
+ <listitem>
+ <para>
+ <firstterm>Management node</firstterm> (MGM node): The role
+ of this type of node is to manage the other nodes within the
+ MySQL Cluster, performing such functions as providing
+ configuration data, starting and stopping nodes, running
+ backup, and so forth. Because this node type manages the
+ configuration of the other nodes, a node of this type should
+ be started first, before any other node. An MGM node is
+ started with the command <command>ndb_mgmd</command>.
+ </para>
+ </listitem>
- </section>
+ <listitem>
+ <para>
+ <firstterm>Data node</firstterm>: This type of node stores
+ cluster data. There are as many data nodes as there are
+ replicas, times the number of fragments. For example, with
+ two replicas, each having two fragments, you will need four
+ data nodes. It is not necessary to have more than one
+ replica. A data node is started with the command
+ <command>ndbd</command>.
+ </para>
+ </listitem>
- <section id="mysql-cluster-basics">
+ <listitem>
+ <para>
+ <firstterm>SQL node</firstterm>: This is a node that
+ accesses the cluster data. In the case of MySQL Cluster, an
+ SQL node is a traditional MySQL server that uses the
+ <literal>NDB Cluster</literal> storage engine. An SQL node
+ is typically started with the command <command>mysqld
+ --ndbcluster</command> or by using <command>mysqld</command>
+ with the <literal>ndbcluster</literal> option added to
+ <filename>my.cnf</filename>.
+ </para>
- <title>Basic MySQL Cluster Concepts</title>
+ <para>
+ An SQL node is actually just a specialised type of
+ <firstterm>API node</firstterm>, which designates any
+ application which accesses Cluster data. One example of an
+ API node is the <command>ndb_restore</command> utility that
+ is used to restore a cluster backup. It is possible to write
+ such applications using the
+ <ulink url="&base-url-docs;/ndbapi/en/index.html">NDB
+ API</ulink>.
+ </para>
+ </listitem>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>concepts</secondary>
- </indexterm>
+ </itemizedlist>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>nodes and types</secondary>
- </indexterm>
+ <para>
+ <emphasis role="bold">Important</emphasis>: It is not realistic
+ to expect to employ a three-node setup in a production
+ environment. Such a configuration provides no redundancy; in
+ order to benefit from MySQL Cluster's high-availability
+ features, you must use multiple data and SQL nodes. The use of
+ multiple management nodes is also highly recommended.
+ </para>
- <indexterm>
- <primary>data node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
+ <para>
+ For a brief introduction to the relationships between nodes,
+ node groups, replicas, and partitions in MySQL Cluster, see
+ <xref linkend="mysql-cluster-nodes-groups"/>.
+ </para>
- <indexterm>
- <primary>management node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
+ <para>
+ Configuration of a cluster involves configuring each individual
+ node in the cluster and setting up individual communication
+ links between nodes. MySQL Cluster is currently designed with
+ the intention that data nodes are homogeneous in terms of
+ processor power, memory space, and bandwidth. In addition, to
+ provide a single point of configuration, all configuration data
+ for the cluster as a whole is located in one configuration file.
+ </para>
- <indexterm>
- <primary>SQL node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
+ <para>
+ The management server (MGM node) manages the cluster
+ configuration file and the cluster log. Each node in the cluster
+ retrieves the configuration data from the management server, and
+ so requires a way to determine where the management server
+ resides. When interesting events occur in the data nodes, the
+ nodes transfer information about these events to the management
+ server, which then writes the information to the cluster log.
+ </para>
- <indexterm>
- <primary>API node (MySQL Cluster)</primary>
- <secondary>defined</secondary>
- </indexterm>
+ <para>
+ In addition, there can be any number of cluster client processes
+ or applications. These are of two types:
+ </para>
- <indexterm>
- <primary><command>ndbd</command> (MySQL Cluster)</primary>
- <secondary>defined</secondary>
-<!-- <seealso>data node (MySQL Cluster)</seealso> -->
- </indexterm>
+ <itemizedlist>
- <indexterm>
- <primary><command>mgmd</command> (MySQL Cluster)</primary>
- <secondary>defined</secondary>
-<!-- <seealso>management node (MySQL Cluster)</seealso> -->
- </indexterm>
+ <listitem>
+ <para>
+ <emphasis role="bold">Standard MySQL clients</emphasis>:
+ These are no different for MySQL Cluster than they are for
+ standard (non-Cluster) MySQL. In other words, MySQL Cluster
+ can be accessed from existing MySQL applications written in
+ PHP, Perl, C, C++, Java, Python, Ruby, and so on.
+ </para>
+ </listitem>
- <indexterm>
- <primary><command>ndb_mgmd</command> (MySQL Cluster)</primary>
- <secondary>defined</secondary>
-<!-- <seealso>management node (MySQL Cluster)</seealso> -->
- </indexterm>
+ <listitem>
+ <para>
+ <emphasis role="bold">Management clients</emphasis>: These
+ clients connect to the management server and provide
+ commands for starting and stopping nodes gracefully,
+ starting and stopping message tracing (debug versions only),
+ showing node versions and status, starting and stopping
+ backups, and so on.
+ </para>
+ </listitem>
- <indexterm>
- <primary><command>mysqld</command></primary>
- <secondary>role in MySQL Cluster</secondary>
-<!-- <see>SQL Node (MySQL Cluster)</see> -->
- </indexterm>
+ </itemizedlist>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>data node</secondary>
- </indexterm>
+ </section>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>management node</secondary>
- </indexterm>
-
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>SQL node</secondary>
- </indexterm>
-
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>API node</secondary>
- </indexterm>
-
- <indexterm>
- <primary>Configuring MySQL Cluster (concepts)</primary>
- </indexterm>
-
- <para>
- <firstterm><literal>NDB</literal></firstterm> is an in-memory
- storage engine offering high-availability and data-persistence
- features.
- </para>
-
- <para>
- The <literal>NDB</literal> storage engine can be configured with a
- range of failover and load-balancing options, but it is easiest to
- start with the storage engine at the cluster level. MySQL
- Cluster's <literal>NDB</literal> storage engine contains a
- complete set of data, dependent only on other data within the
- cluster itself.
- </para>
-
- <para>
- The cluster portion of MySQL Cluster is currently configured
- independently of the MySQL servers. In a MySQL Cluster, each part
- of the cluster is considered to be a <firstterm>node</firstterm>.
- </para>
-
- <para>
- <emphasis role="bold">Note</emphasis>: In many contexts, the term
- <quote>node</quote> is used to indicate a computer, but when
- discussing MySQL Cluster it means a <emphasis>process</emphasis>.
- It is possible to run any number of nodes on a single computer,
- for which we use the term <firstterm>cluster host</firstterm>.
- </para>
-
- <para>
- (However, it should be noted MySQL does not currently support the
- use of multiple data nodes on a single computer in a production
- setting. See
- <xref linkend="mysql-cluster-limitations-multiple-nodes"/>.)
- </para>
-
- <para>
- There are three types of cluster nodes, and in a minimal MySQL
- Cluster configuration, there will be at least three nodes, one of
- each of these types:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <firstterm>Management node</firstterm> (MGM node): The role of
- this type of node is to manage the other nodes within the
- MySQL Cluster, performing such functions as providing
- configuration data, starting and stopping nodes, running
- backup, and so forth. Because this node type manages the
- configuration of the other nodes, a node of this type should
- be started first, before any other node. An MGM node is
- started with the command <command>ndb_mgmd</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <firstterm>Data node</firstterm>: This type of node stores
- cluster data. There are as many data nodes as there are
- replicas, times the number of fragments. For example, with two
- replicas, each having two fragments, you will need four data
- nodes. It is not necessary to have more than one replica. A
- data node is started with the command <command>ndbd</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <firstterm>SQL node</firstterm>: This is a node that accesses
- the cluster data. In the case of MySQL Cluster, an SQL node is
- a traditional MySQL server that uses the <literal>NDB
- Cluster</literal> storage engine. An SQL node is typically
- started with the command <command>mysqld
- --ndbcluster</command> or by using <command>mysqld</command>
- with the <literal>ndbcluster</literal> option added to
- <filename>my.cnf</filename>.
- </para>
-
- <para>
- An SQL node is actually just a specialised type of
- <firstterm>API node</firstterm>, which designates any
- application which accesses Cluster data. One example of an API
- node is the <command>ndb_restore</command> utility that is
- used to restore a cluster backup. It is possible to write such
- applications using the
- <ulink url="&base-url-docs;/ndbapi/en/index.html">NDB
- API</ulink>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- <emphasis role="bold">Important</emphasis>: It is not realistic to
- expect to employ a three-node setup in a production environment.
- Such a configuration provides no redundancy; in order to benefit
- from MySQL Cluster's high-availability features, you must use
- multiple data and SQL nodes. The use of multiple management nodes
- is also highly recommended.
- </para>
-
- <para>
- For a brief introduction to the relationships between nodes, node
- groups, replicas, and partitions in MySQL Cluster, see
- <xref linkend="mysql-cluster-nodes-groups"/>.
- </para>
-
- <para>
- Configuration of a cluster involves configuring each individual
- node in the cluster and setting up individual communication links
- between nodes. MySQL Cluster is currently designed with the
- intention that data nodes are homogeneous in terms of processor
- power, memory space, and bandwidth. In addition, to provide a
- single point of configuration, all configuration data for the
- cluster as a whole is located in one configuration file.
- </para>
-
- <para>
- The management server (MGM node) manages the cluster configuration
- file and the cluster log. Each node in the cluster retrieves the
- configuration data from the management server, and so requires a
- way to determine where the management server resides. When
- interesting events occur in the data nodes, the nodes transfer
- information about these events to the management server, which
- then writes the information to the cluster log.
- </para>
-
- <para>
- In addition, there can be any number of cluster client processes
- or applications. These are of two types:
- </para>
-
- <itemizedlist>
-
- <listitem>
- <para>
- <emphasis role="bold">Standard MySQL clients</emphasis>: These
- are no different for MySQL Cluster than they are for standard
- (non-Cluster) MySQL. In other words, MySQL Cluster can be
- accessed from existing MySQL applications written in PHP,
- Perl, C, C++, Java, Python, Ruby, and so on.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <emphasis role="bold">Management clients</emphasis>: These
- clients connect to the management server and provide commands
- for starting and stopping nodes gracefully, starting and
- stopping message tracing (debug versions only), showing node
- versions and status, starting and stopping backups, and so on.
- </para>
- </listitem>
-
- </itemizedlist>
-
<section id="mysql-cluster-nodes-groups">
<title>MySQL Cluster Nodes, Node Groups, Replicas, and Partitions</title>
@@ -867,6 +677,200 @@
</section>
+ <section id="mysql-cluster-cge">
+
+ <title>&mccge-series;</title>
+
+ <para>
+ &mccge-series; is a branch of MySQL 5.1 using advanced versions of
+ the <literal>NDB</literal> storage engine and
+ <literal>NDB</literal> API. It is intended for use in the
+ telcommunications industry, and is available in binary and source
+ form to commercial customers. Two development trees can also be
+ accessed via <ulink url="http://mysql.bkbits.net/"/>:
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal>mysql-5.1-telco</literal>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <literal>mysql-5.1-telco-6.1</literal>
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </para>
+
+ <formalpara>
+
+ <title>&mccge-series; versioning</title>
+
+ <para>
+ &mccge-series; — sometimes also referred to as
+ <quote>CGE</quote> — follows a somewhat different release
+ pattern from the mainline MySQL 5.1 Cluster series of releases.
+ Each &mccge-series; release is identified by a two-part version
+ string which identifies the mainline MySQL version from which
+ the CGE release was branched and the version of the
+ <literal>NDB</literal> storage engine used. For example, the
+ first CGE release was <literal>mysql-5.1.14-ndb-6.1.0</literal>.
+ The version string tells us that this version:
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Derives from MySQL 5.1.14, and contains all feature
+ enhancement and bugfixes from MySQL 5.1, up to and
+ including MySQL 5.1.14.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Uses version 6.1.0 of the <literal>NDB</literal> storage
+ engine.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </para>
+
+ </formalpara>
+
+ <remark role="note">
+ [js] Needs to be updated with each new CGE release.
+ </remark>
+
+ <formalpara>
+
+ <title>&mccge-series; change history</title>
+
+ <para>
+ Changelogs for &mccge-series; releases may be found in
+ <xref linkend="news-5-1-x"/>, and are grouped together according
+ to the mainline MySQL 5.1 version from which they derive, in the
+ following sections:
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <xref linkend="news-5-1-14-cge"/>: Includes
+ <xref linkend="news-5-1-14-ndb-6-1-0"/>.
+ </para>
+
+ <para>
+ This release includes all feature enhancements and
+ bugfixes made in MySQL 5.1 up to and including the 5.1.14
+ release.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <xref linkend="news-5-1-15-cge"/>: Includes
+ <xref linkend="news-5-1-15-ndb-6-1-1"/>,
+ <xref linkend="news-5-1-15-ndb-6-1-2"/>,
+ <xref linkend="news-5-1-15-ndb-6-1-3"/>,
+ <xref linkend="news-5-1-15-ndb-6-1-4"/>,
+ <xref linkend="news-5-1-15-ndb-6-1-5"/>, and
+ <xref linkend="news-5-1-15-ndb-6-1-6"/>.
+ </para>
+
+ <para>
+ These releases include all feature enhancements and
+ bugfixes made in MySQL 5.1 up to and including 5.1.15, as
+ well as those CGE-specific enhancements made in
+ MySQL-5.1.14-ndb-6.1.0.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <xref linkend="news-5-1-16-cge"/>: Includes
+ <xref linkend="news-5-1-16-ndb-6-2-0"/> and
+ <xref linkend="news-5-1-18-ndb-6-2-1"/>.
+ </para>
+
+ <para>
+ These releases include all feature enhancements and
+ bugfixes made in MySQL 5.1 up to and including 5.1.16, as
+ well as those CGE-specific enhancements that were made in
+ ndb-6.1.<replaceable>x</replaceable> releases.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ Each of the &mccge-series; includes enhancements to the
+ <literal>NDB</literal> storage engine that do not appear in the
+ mainline MySQL ¤t-series; tree. We plan to port these to
+ MySQL ¤t-series; or later mainline MySQL releases at some
+ point in the future.
+ </para>
+
+ </formalpara>
+
+ <para>
+ Some fixes that were applied first in &mccge-series; have already
+ been ported to MySQL ¤t-series;. In these cases, the fix is
+ listed twice in <xref linkend="news-5-1-x"/>.
+ </para>
+
+ <para>
+ Since all bugfixes applied in &mccge-series; relate to MySQL
+ Cluster, changelog entries for CGE releases are not prefixed with
+ <quote><literal>NDB Cluster</literal>:</quote> as MySQL Cluster
+ bugfixes in mainline MySQL ¤t-series; are.
+ </para>
+
+ <important>
+ <para>
+ This chapter of the MySQL Manual covers both MySQL
+ ¤t-series; and &mccge-series;.
+ </para>
+
+ <para>
+ Information which applies to &mccge-series; releases but not to
+ mainline ¤t-series; releases is indicated with a warning
+ such as this one:
+ </para>
+
+ &mccge-warning-begin;
+
+ <para>
+ Information which applies to mainline MySQL ¤t-series;
+ releases but not to &mccge-series; releases is indicated with a
+ warning such as this one:
+ </para>
+
+ &mccge-warning-unsupported-begin;
+ </important>
+
+ <para>
+ Currently, both the ndb-6.1.<replaceable>x</replaceable> and
+ ndb-6.2.<replaceable>x</replaceable> series are under active
+ development, with the ndb-6.1.<replaceable>x</replaceable> series
+ intended for use by telecommunications customers and
+ ndb-6.2.<replaceable>x</replaceable> intended for testing
+ purposes.
+ </para>
+
+ <para>
+ Additional information about obtaining &mccge-series; binaries can
+ be found on the MySQL AB web site at
+ <ulink url="http://www.mysql.com/products/database/clustercge/"/>,
+ or by contacting <email>sales@stripped</email>.
+ </para>
+
+ </section>
+
<section id="mysql-cluster-multi-computer">
<title>Simple Multi-Computer How-To</title>
| Thread |
|---|
| • svn commit - mysqldoc@docsrva: r6918 - in trunk: refman-4.1 refman-5.0 refman-5.1 refman-5.2 | jon | 27 Jun |