Author: jstephens
Date: 2007-05-18 10:03:02 +0200 (Fri, 18 May 2007)
New Revision: 6518
Log:
Reformat.
Modified:
trunk/refman-5.1/mysql-cluster-limitations-working.xml
Modified: trunk/refman-5.1/mysql-cluster-limitations-working.xml
===================================================================
--- trunk/refman-5.1/mysql-cluster-limitations-working.xml 2007-05-17 21:42:47 UTC (rev
6517)
+++ trunk/refman-5.1/mysql-cluster-limitations-working.xml 2007-05-18 08:03:02 UTC (rev
6518)
Changed blocks: 15, Lines Added: 993, Lines Deleted: 891; 84107 bytes
@@ -6,49 +6,48 @@
%all.entities;
]>
<section id="mysql-cluster-limitations">
-
+
<title>Known Limitations of MySQL Cluster</title>
- <indexterm>
- <primary>MySQL Cluster limitations</primary>
- </indexterm>
+ <indexterm>
+ <primary>MySQL Cluster limitations</primary>
+ </indexterm>
- <indexterm>
- <primary>limitations of MySQL Cluster</primary>
+ <indexterm>
+ <primary>limitations of MySQL Cluster</primary>
<!-- <see>MySQL Cluster limitations</see> -->
- </indexterm>
+ </indexterm>
- <para>
- In the sections that follow, we discuss known limitations in MySQL
- ¤t-series; Cluster and &mccge-series; releases as compared
- with the features available when using the
- <literal>MyISAM</literal> and <literal>InnoDB</literal>
storage
- engines. Currently, there are no plans to address these in coming
- releases of MySQL ¤t-series; or &mccge-series;; however, we
- will attempt to supply fixes for these issues in subsequent
- release series. If you check the <quote>Cluster</quote> category
- in the MySQL bugs database at
- <ulink url="http://bugs.mysql.com"/>, you can find known bugs
- which (if marked <quote>¤t-series;</quote>) we intend to
- correct in upcoming releases of MySQL ¤t-series;. Some of
- these issues may be addressed in &mccge-series; and the fixes
- included in a future mainline MySQL Cluster version.
- </para>
+ <para>
+ In the sections that follow, we discuss known limitations in MySQL
+ ¤t-series; Cluster and &mccge-series; releases as compared
+ with the features available when using the <literal>MyISAM</literal>
+ and <literal>InnoDB</literal> storage engines. Currently, there are
+ no plans to address these in coming releases of MySQL
+ ¤t-series; or &mccge-series;; however, we will attempt to
+ supply fixes for these issues in subsequent release series. If you
+ check the <quote>Cluster</quote> category in the MySQL bugs database
+ at <ulink url="http://bugs.mysql.com"/>, you can find known bugs
+ which (if marked <quote>¤t-series;</quote>) we intend to
+ correct in upcoming releases of MySQL ¤t-series;. Some of
+ these issues may be addressed in &mccge-series; and the fixes
+ included in a future mainline MySQL Cluster version.
+ </para>
- <para>
- This information is intended to be complete with respect to the
- conditions just set forth. You can report any discrepancies that
- you encounter to the MySQL bugs database using the instructions
- given in <xref linkend="bug-reports"/>. If we do not plan to fix
- the problem in MySQL ¤t-series;, we will add it to the list.
- </para>
+ <para>
+ This information is intended to be complete with respect to the
+ conditions just set forth. You can report any discrepancies that you
+ encounter to the MySQL bugs database using the instructions given in
+ <xref linkend="bug-reports"/>. If we do not plan to fix the problem
+ in MySQL ¤t-series;, we will add it to the list.
+ </para>
- <para>
- (<emphasis role="bold">Note</emphasis>: See the end of this
- section for a list of issues in MySQL &previous-series; Cluster
- that have been resolved in the current version.)
- </para>
-
+ <para>
+ (<emphasis role="bold">Note</emphasis>: See the end of this section
+ for a list of issues in MySQL &previous-series; Cluster that have
+ been resolved in the current version.)
+ </para>
+
<note>
<para>
Limitations and other issues specific to MySQL Cluster Replication
@@ -56,152 +55,173 @@
<xref linkend="mysql-cluster-replication-issues"/>.
</para>
</note>
-
+
<section id="mysql-cluster-limitations-syntax">
+
<title>Non-Compliance In SQL Syntax</title>
+
<indexterm>
<primary>MySQL Cluster limitations</primary>
<secondary>syntax</secondary>
</indexterm>
-
+
<para>
Some SQL statements relating to certain MySQL features produce
errors when used with <literal>NDB</literal> tables, as described
in the following list:
-
+
<itemizedlist>
-
+
<listitem>
<formalpara>
- <title>Temporary tables</title>
- <para>
- Temporary tables are not supported. Trying either to create
- a temporary table that uses the <literal>NDB</literal>
- storage engine or to alter an existing temporary table to
- use <literal>NDB</literal> fails with the error
- <errortext>Table storage engine 'ndbcluster' does not
- support the create option 'TEMPORARY'</errortext>.
- </para>
+
+ <title>Temporary tables</title>
+
+ <para>
+ Temporary tables are not supported. Trying either to
+ create a temporary table that uses the
+ <literal>NDB</literal> storage engine or to alter an
+ existing temporary table to use <literal>NDB</literal>
+ fails with the error <errortext>Table storage engine
+ 'ndbcluster' does not support the create option
+ 'TEMPORARY'</errortext>.
+ </para>
+
</formalpara>
</listitem>
-
+
<listitem>
<formalpara>
- <title>Indexes and keys in <literal>NDB</literal>
tables</title>
-
+
+ <title>Indexes and keys in <literal>NDB</literal>
tables</title>
+
<para>
- Keys and indexes on MySQL Cluster tables are subject to the
- following limitations:
+ Keys and indexes on MySQL Cluster tables are subject to
+ the following limitations:
+
<itemizedlist>
+
<listitem>
-
<para>
- You cannot create indexes on <literal>NDB</literal> table
- columns that use any of the <literal>TEXT</literal> or
- <literal>BLOB</literal> data types.
+ You cannot create indexes on <literal>NDB</literal>
+ table columns that use any of the
+ <literal>TEXT</literal> or
<literal>BLOB</literal>
+ data types.
</para>
</listitem>
+
<listitem>
-
<para>
The <literal>NDB</literal> storage engine does not
support <literal>FULLTEXT</literal> indexes, which
- are possible for <literal>MyISAM</literal> tables only.
+ are possible for <literal>MyISAM</literal> tables
+ only.
</para>
+
<para>
However, you can create indexes on
<literal>VARCHAR</literal> columns of
<literal>NDB</literal> tables.
</para>
</listitem>
-
+
<listitem>
<para>
- A <literal>BIT</literal> column cannot be a primary key,
- unique key, or index, nor can it be part of a composite
- primary key, unique key, or index.
+ A <literal>BIT</literal> column cannot be a primary
+ key, unique key, or index, nor can it be part of a
+ composite primary key, unique key, or index.
</para>
</listitem>
-
+
<listitem>
<formalpara>
+
<title>Duplicate keys</title>
- <para>
- A duplicate key error returns the error message
- <errortext>ERROR 23000: Can't write; duplicate key in
- table
+
+ <para>
+ A duplicate key error returns the error message
+ <errortext>ERROR 23000: Can't write; duplicate key
+ in table
'<replaceable>tbl_name</replaceable>'</errortext>.
- </para>
+ </para>
+
</formalpara>
</listitem>
-
+
<listitem>
<formalpara>
- <title><literal>AUTO_INCREMENT</literal>
columns</title>
- <para>
- Like other MySQL storage engines, the
- <literal>NDB</literal> storage engine can handle a
- maximum of one <literal>AUTO_INCREMENT</literal>
- column per table. However, in the case of a Cluster
- table with no explicit primary key, an
- <literal>AUTO_INCREMENT</literal> column is
- automatically defined and used as a
- <quote>hidden</quote> primary key. For this reason,
- you cannot define a table that has an explicit
- <literal>AUTO_INCREMENT</literal> column unless that
- column is also declared using the <literal>PRIMARY
- KEY</literal> option. Attempting to create a table with an
- <literal>AUTO_INCREMENT</literal> column that is not
- the table's primary key, and using the
- <literal>NDB</literal> storage engine, fails with an
- error.
- </para>
+
+ <title><literal>AUTO_INCREMENT</literal>
columns</title>
+
+ <para>
+ Like other MySQL storage engines, the
+ <literal>NDB</literal> storage engine can handle a
+ maximum of one <literal>AUTO_INCREMENT</literal>
+ column per table. However, in the case of a
+ Cluster table with no explicit primary key, an
+ <literal>AUTO_INCREMENT</literal> column is
+ automatically defined and used as a
+ <quote>hidden</quote> primary key. For this
+ reason, you cannot define a table that has an
+ explicit <literal>AUTO_INCREMENT</literal> column
+ unless that column is also declared using the
+ <literal>PRIMARY KEY</literal> option. Attempting
+ to create a table with an
+ <literal>AUTO_INCREMENT</literal> column that is
+ not the table's primary key, and using the
+ <literal>NDB</literal> storage engine, fails with
+ an error.
+ </para>
+
</formalpara>
</listitem>
-
+
</itemizedlist>
</para>
-
-
+
</formalpara>
-
</listitem>
-
+
<listitem>
<formalpara>
- <title>MySQL Cluster and geometry data types</title>
- <indexterm>
- <primary>MySQL Cluster limitations</primary>
- <secondary>geometry data types</secondary>
- </indexterm>
-
- <para>
- Geometry datatypes (<literal>WKT</literal> and
- <literal>WKB</literal>) are supported in
- <literal>NDB</literal> tables in MySQL ¤t-series;.
- However, spatial indexes are not supported.
- </para>
+
+ <title>MySQL Cluster and geometry data types</title>
+
+ <indexterm>
+ <primary>MySQL Cluster limitations</primary>
+ <secondary>geometry data types</secondary>
+ </indexterm>
+
+ <para>
+ Geometry datatypes (<literal>WKT</literal> and
+ <literal>WKB</literal>) are supported in
+ <literal>NDB</literal> tables in MySQL ¤t-series;.
+ However, spatial indexes are not supported.
+ </para>
+
</formalpara>
</listitem>
-
+
<listitem>
<indexterm>
<primary>MySQL Cluster</primary>
<secondary>partitioning support</secondary>
</indexterm>
-
+
<indexterm>
<primary>partitioning</primary>
<secondary>support in MySQL Cluster</secondary>
</indexterm>
-
+
<indexterm>
<primary>MySQL Cluster limitations</primary>
<secondary>partitioning</secondary>
</indexterm>
+
<formalpara>
+
<title>Creating <literal>NDB</literal> tables with
user-defined partitioning</title>
-
+
<para>
Support for user-defined partitioning for MySQL Cluster in
MySQL ¤t-series; is restricted to
@@ -211,8 +231,9 @@
<literal>ENGINE=NDBCLUSTER</literal> in a <literal>CREATE
TABLE</literal> statement results in an error.
</para>
+
</formalpara>
-
+
<para>
As of MySQL 5.1.6, all Cluster tables are by default
partitioned by <literal>KEY</literal> using the table's
@@ -223,36 +244,41 @@
additional discussion of these and related issues, see
<xref linkend="partitioning-key"/>.
</para>
+
<formalpara>
+
<title><literal>DROP PARTITION</literal> not
supported</title>
- <para>
- It is not possible to drop partitions from
- <literal>NDB</literal> tables using <literal>ALTER TABLE
+
+ <para>
+ It is not possible to drop partitions from
+ <literal>NDB</literal> tables using <literal>ALTER TABLE
... DROP PARTITION</literal>. The other partitioning
- extensions to <literal>ALTER TABLE</literal> —
- <literal>ADD PARTITION</literal>, <literal>REORGANIZE
+ extensions to <literal>ALTER TABLE</literal> —
+ <literal>ADD PARTITION</literal>, <literal>REORGANIZE
PARTITION</literal>, and <literal>COALESCE
- PARTITION</literal> — are supported for Cluster
- tables, but use copying and so are not optimised. See
- <xref linkend="partitioning-management-range-list"/> and
- <xref linkend="alter-table"/>.
- </para></formalpara>
+ PARTITION</literal> — are supported for Cluster
+ tables, but use copying and so are not optimised. See
+ <xref linkend="partitioning-management-range-list"/> and
+ <xref linkend="alter-table"/>.
+ </para>
+
+ </formalpara>
</listitem>
-
+
<listitem>
-
<indexterm>
<primary>MySQL Cluster limitations</primary>
<secondary>replication</secondary>
</indexterm>
+
<para>
- When using row-based replication with MySQL Cluster,
- binary logging cannot be disabled. That is, the
+ When using row-based replication with MySQL Cluster, binary
+ logging cannot be disabled. That is, the
<literal>NDB</literal> storage engine ignores the value of
<literal>SQL_LOG_BIN</literal>. (Bug #16680)
</para>
</listitem>
-
+
<listitem>
<para>
The <literal>auto_increment_increment</literal> and
@@ -260,83 +286,95 @@
variables are not supported for Cluster replication.
</para>
</listitem>
-
+
</itemizedlist>
</para>
+
</section>
-
+
<section id="mysql-cluster-limitations-limits">
+
<title>Limits and Differences from Standard MySQL Limits</title>
+
<indexterm>
<primary>MySQL Cluster limitations</primary>
<secondary>and differences from standard MySQL limits</secondary>
</indexterm>
-
+
<para>
In this section, we list limits found in MySQL Cluster that either
- differ from limits found in, or that are not found in, standard MySQL.
+ differ from limits found in, or that are not found in, standard
+ MySQL.
+
<itemizedlist>
- <listitem>
- <indexterm>
- <primary>memory use</primary>
- <secondary>in MySQL Cluster</secondary>
- </indexterm>
+ <listitem>
+ <indexterm>
+ <primary>memory use</primary>
+ <secondary>in MySQL Cluster</secondary>
+ </indexterm>
- <indexterm>
- <primary>MySQL Cluster</primary>
- <secondary>memory usage and recovery</secondary>
- </indexterm>
+ <indexterm>
+ <primary>MySQL Cluster</primary>
+ <secondary>memory usage and recovery</secondary>
+ </indexterm>
- <indexterm>
- <primary><literal>DELETE</literal></primary>
- <secondary>and MySQL Cluster</secondary>
- </indexterm>
+ <indexterm>
+ <primary><literal>DELETE</literal></primary>
+ <secondary>and MySQL Cluster</secondary>
+ </indexterm>
- <indexterm>
- <primary><literal>DROP TABLE</literal></primary>
- <secondary>and MySQL Cluster</secondary>
- </indexterm>
+ <indexterm>
+ <primary><literal>DROP TABLE</literal></primary>
+ <secondary>and MySQL Cluster</secondary>
+ </indexterm>
- <indexterm>
- <primary><literal>TRUNCATE</literal></primary>
- <secondary>and MySQL Cluster</secondary>
- </indexterm>
+ <indexterm>
+ <primary><literal>TRUNCATE</literal></primary>
+ <secondary>and MySQL Cluster</secondary>
+ </indexterm>
- <formalpara>
- <title>Memory usage and recovery</title>
- <para>
+ <formalpara>
+
+ <title>Memory usage and recovery</title>
+
+ <para>
Memory comsumed when data is inserted into an
<literal>NDB</literal> table is not automatically
recovered when deleted, as it is with other storage
engines. Instead, the following rules hold true:
+
<itemizedlist>
-
+
<listitem>
<para>
A <literal>DELETE</literal> statement on an
- <literal>NDB</literal> table makes the memory formerly
- used by the deleted rows available for re-use by
- inserts on the same table only. This memory cannot be
- used by other <literal>NDB</literal> tables.
+ <literal>NDB</literal> table makes the memory
+ formerly used by the deleted rows available for
+ re-use by inserts on the same table only. This
+ memory cannot be used by other
+ <literal>NDB</literal> tables.
</para>
</listitem>
-
+
<listitem>
<para>
A <literal>DROP TABLE</literal> or
<literal>TRUNCATE</literal> operation on an
- <literal>NDB</literal> table frees the memory that was
- used by this table for re-use by any
- <literal>NDB</literal> table, either by the
- same table or by another <literal>NDB</literal> table.
+ <literal>NDB</literal> table frees the memory that
+ was used by this table for re-use by any
+ <literal>NDB</literal> table, either by the same
+ table or by another <literal>NDB</literal> table.
</para>
+
<note>
- <para>
- Recall that <literal>TRUNCATE</literal> drops and
- re-creates the table. See <xref linkend="truncate"/>.
- </para>
+ <para>
+ Recall that <literal>TRUNCATE</literal> drops and
+ re-creates the table. See
+ <xref linkend="truncate"/>.
+ </para>
</note>
+
<para>
Memory freed by <literal>DELETE</literal> operations
but still allocated to a specific table can also be
@@ -345,177 +383,196 @@
<xref linkend="mysql-cluster-rolling-restart"/>.
</para>
</listitem>
+
<listitem>
<formalpara>
+
<title>Limits imposed by the cluster's
configuration</title>
-
+
<indexterm>
<primary>MySQL Cluster limitations</primary>
<secondary>imposed by configuration</secondary>
</indexterm>
+
<para>
- A number of hard limits exist which are configurable, but
- available main memory in the cluster sets limits. See the
- complete list of configuration parameters in
+ A number of hard limits exist which are
+ configurable, but available main memory in the
+ cluster sets limits. See the complete list of
+ configuration parameters in
<xref linkend="mysql-cluster-config-file"/>. Most
- configuration parameters can be upgraded online. These
- hard limits include:<itemizedlist>
-
+ configuration parameters can be upgraded online.
+ These hard limits include:
+
+ <itemizedlist>
+
<listitem>
<para>
Database memory size and index memory size
(<literal>DataMemory</literal> and
- <literal>IndexMemory</literal>, respectively).
+ <literal>IndexMemory</literal>,
+ respectively).
</para>
-
+
<para>
- <literal>DataMemory</literal> is allocated as
32KB
- pages. As each <literal>DataMemory</literal> page
is
- used, it is assigned to a specific table; once
- allocated, this memory cannot be freed except by
- dropping the table.
+ <literal>DataMemory</literal> is allocated
+ as 32KB pages. As each
+ <literal>DataMemory</literal> page is used,
+ it is assigned to a specific table; once
+ allocated, this memory cannot be freed
+ except by dropping the table.
</para>
-
+
<para>
- See <xref linkend="mysql-cluster-ndbd-definition"/>,
+ See
+ <xref linkend="mysql-cluster-ndbd-definition"/>,
for further information about
<literal>DataMemory</literal> and
<literal>IndexMemory</literal>.
</para>
</listitem>
-
+
<listitem>
<para>
- The maximum number of operations that can be performed
- per transaction is set using the configuration
- parameters
- <literal>MaxNoOfConcurrentOperations</literal>
and
- <literal>MaxNoOfLocalOperations</literal>. Note
that
- bulk loading, <literal>TRUNCATE TABLE</literal>,
and
- <literal>ALTER TABLE</literal> are handled as
special
- cases by running multiple transactions, and so are not
- subject to this limitation.
+ The maximum number of operations that can be
+ performed per transaction is set using the
+ configuration parameters
+ <literal>MaxNoOfConcurrentOperations</literal>
+ and
+ <literal>MaxNoOfLocalOperations</literal>.
+ Note that bulk loading, <literal>TRUNCATE
+ TABLE</literal>, and <literal>ALTER
+ TABLE</literal> are handled as special cases
+ by running multiple transactions, and so are
+ not subject to this limitation.
</para>
</listitem>
-
+
<listitem>
<para>
- Different limits related to tables and indexes. For
- example, the maximum number of ordered indexes per
- table is determined by
+ Different limits related to tables and
+ indexes. For example, the maximum number of
+ ordered indexes per table is determined by
<literal>MaxNoOfOrderedIndexes</literal>.
</para>
</listitem>
-
+
</itemizedlist>
</para>
+
</formalpara>
-
-
-
-
-
</listitem>
-
-
+
<listitem>
<formalpara>
+
<title>Node and data object maximums</title>
+
<para>
The following limits apply to numbers of cluster
nodes and metadata objects:
+
<itemizedlist>
- <listitem>
- <para>
- The maximum number of data nodes is 48.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The total maximum number of nodes in a MySQL
- Cluster is 63. This number includes all SQL nodes
- (MySQL Servers), API nodes (applications accessing
- the cluster other than MySQL servers), data nodes,
- and management servers.
- </para>
-
- </listitem>
-
- <listitem>
- <para>
- The maximum number of metadata objects in MySQL
- ¤t-series; Cluster and &mccge-series; is
- 20320. This limit is hard-coded.
- </para>
- </listitem>
+
+ <listitem>
+ <para>
+ The maximum number of data nodes is 48.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The total maximum number of nodes in a MySQL
+ Cluster is 63. This number includes all SQL
+ nodes (MySQL Servers), API nodes
+ (applications accessing the cluster other
+ than MySQL servers), data nodes, and
+ management servers.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The maximum number of metadata objects in
+ MySQL ¤t-series; Cluster and
+ &mccge-series; is 20320. This limit is
+ hard-coded.
+ </para>
+ </listitem>
+
</itemizedlist>
+
<note>
<para role="mccge-warning">
- &mccge-series; users should see
+ &mccge-series; users should see
<xref linkend="mysql-cluster-limitations-resolved"/>,
for more information.
</para>
</note>
</para>
- </formalpara></listitem>
-
-
+
+ </formalpara>
+ </listitem>
+
</itemizedlist>
</para>
- </formalpara>
-
- </listitem>
+ </formalpara>
+ </listitem>
+
</itemizedlist>
-
</para>
+
</section>
-
+
<section id="mysql-cluster-limitations-transactions">
-
+
<title>Limits Relating to Transaction Handling</title>
+
<indexterm>
<primary>MySQL Cluster limitations</primary>
<secondary>transactions</secondary>
</indexterm>
-
+
<para>
A numbe of limitations exist in MySQL Cluster with regard to the
handling of transactions. These include the following:
-
+
<itemizedlist>
-
+
<listitem>
<para>
The <literal>NDBCLUSTER</literal> storage engine supports
only the <literal>READ COMMITTED</literal> transaction
isolation level.
</para>
+
<important>
- <para>
- If a
- <literal>SELECT</literal> from a Cluster table
- includes a <literal>BLOB</literal> or
- <literal>TEXT</literal> column, the <literal>READ
+ <para>
+ If a <literal>SELECT</literal> from a Cluster table
+ includes a <literal>BLOB</literal> or
+ <literal>TEXT</literal> column, the <literal>READ
COMMITTED</literal> transaction isolation level is
- converted to a read with read lock. This is done to
- guarantee consistency, due to the fact that parts of
- the values stored in columns of these types are
- actually read from a separate table.
- </para>
+ converted to a read with read lock. This is done to
+ guarantee consistency, due to the fact that parts of the
+ values stored in columns of these types are actually read
+ from a separate table.
+ </para>
</important>
</listitem>
-
+
<listitem>
<formalpara>
+
<title>Rollbacks</title>
- <para>
- There is no partial rollback of transactions. A duplicate
- key or similar error rolls back the entire transaction.
- </para></formalpara>
+
+ <para>
+ There is no partial rollback of transactions. A duplicate
+ key or similar error rolls back the entire transaction.
+ </para>
+
+ </formalpara>
</listitem>
-
+
<listitem>
<para>
As noted elsewhere in this chapter, MySQL Cluster does not
@@ -524,25 +581,25 @@
to attempt a single large transaction containing a great
many operations.
</para>
-
+
<indexterm>
<primary>MySQL Cluster limitations</primary>
<secondary>memory usage and transaction handling</secondary>
</indexterm>
-
+
<indexterm>
<primary>MySQL Cluster</primary>
<secondary>transaction handling</secondary>
</indexterm>
-
+
<para>
Among other considerations, large transactions require very
large amounts of memory. Because of this, the transactional
behaviour of a number of MySQL statements is effected as
described in the following list:
-
+
<itemizedlist>
-
+
<listitem>
<para>
<literal>TRUNCATE</literal> is not transactional when
@@ -551,7 +608,7 @@
then it must be re-run until it is successful.
</para>
</listitem>
-
+
<listitem>
<para>
<literal>DELETE FROM</literal> (even with no
@@ -562,110 +619,120 @@
<literal>DELETE FROM ... LIMIT ...</literal>
statements to <quote>chunk</quote> the delete
operation. If your objective is to empty the table,
- then you may wish to use
- <literal>TRUNCATE</literal> instead.
+ then you may wish to use <literal>TRUNCATE</literal>
+ instead.
</para>
</listitem>
-
+
<listitem>
<formalpara>
+
<title><literal>LOAD DATA</literal>
statements</title>
- <para>
- <literal>LOAD DATA INFILE</literal> is not
- transactional when used on <literal>NDB</literal>
- tables.
- <important>
- <para>
- When executing a <literal>LOAD DATA
- INFILE</literal> statement, the
- <literal>NDB</literal> engine can and does commit
- at will.
- </para>
- </important>
- <literal>LOAD DATA FROM MASTER</literal> is not
- supported in MySQL Cluster.
- </para>
+
+ <para>
+ <literal>LOAD DATA INFILE</literal> is not
+ transactional when used on <literal>NDB</literal>
+ tables.
+
+ <important>
+ <para>
+ When executing a <literal>LOAD DATA
+ INFILE</literal> statement, the
+ <literal>NDB</literal> engine can and does
+ commit at will.
+ </para>
+ </important>
+
+ <literal>LOAD DATA FROM MASTER</literal> is not
+ supported in MySQL Cluster.
+ </para>
+
</formalpara>
</listitem>
-
+
<listitem>
<formalpara>
+
<title><literal>ALTER TABLE</literal> and
transactions</title>
- <para>
- When copying an <literal>NDB</literal> table as part
- of an <literal>ALTER TABLE</literal>, the creation of
- the copy is non-transactional. (In any case, this
- operation is rolled back when the copy is deleted.)
- </para>
+
+ <para>
+ When copying an <literal>NDB</literal> table as part
+ of an <literal>ALTER TABLE</literal>, the creation
+ of the copy is non-transactional. (In any case, this
+ operation is rolled back when the copy is deleted.)
+ </para>
+
</formalpara>
</listitem>
-
+
</itemizedlist>
</para>
-
-
- </listitem>
+ </listitem>
+
</itemizedlist>
</para>
+
</section>
-
+
<section id="mysql-cluster-limitations-error-handling">
+
<title>Error Handling</title>
-
+
<para>
Starting, stopping, or restarting a node may give rise to
temporary errors causing some transactions to fail. These include
the following cases:
+
<itemizedlist>
-
+
<listitem>
<para>
- When first starting a node, it is possible that
- you may see Error 1204 <errortext>Temporary
- failure, distribution changed</errortext> and
- similar temporary errors.
+ When first starting a node, it is possible that you may see
+ Error 1204 <errortext>Temporary failure, distribution
+ changed</errortext> and similar temporary errors.
</para>
</listitem>
-
+
<listitem>
<para>
- The stopping or failure of any data node can
- result in a number of different node failure
- errors. (However, there should be no aborted
- transactions when performing a planned shutdown of
- the cluster.)
+ The stopping or failure of any data node can result in a
+ number of different node failure errors. (However, there
+ should be no aborted transactions when performing a planned
+ shutdown of the cluster.)
</para>
</listitem>
-
+
</itemizedlist>
</para>
-
+ <para>
+ In either of these cases, any errors that are generated must be
+ handled within the application. This should be done by retrying
+ the transaction.
+ </para>
- <para>
- In either of these cases, any errors that are
- generated must be handled within the application. This
- should be done by retrying the transaction.
- </para>
-
+ <para>
+ See also <xref linkend="mysql-cluster-limitations-limits"/>.
+ </para>
- <para>
- See also <xref linkend="mysql-cluster-limitations-limits"/>.
- </para>
-
</section>
+
<section id="mysql-cluster-limitations-database-objects">
+
<title>Limits Associated with Database Objects</title>
+
<indexterm>
<primary>MySQL Cluster limitations</primary>
<secondary>database objects</secondary>
</indexterm>
+
<para>
Some database objects such as tables and indexes have different
limitations when using the <literal>NDBCLUSTER</literal> storage
engine:
-
+
<itemizedlist>
+
<listitem>
<para>
Database names, table names and attribute names cannot be as
@@ -673,112 +740,116 @@
table handlers. Attribute names are truncated to 31
characters, and if not unique after truncation give rise to
errors. Database names and table names can total a maximum
- of 122 characters.
+ of 122 characters.
</para>
-
+
<para>
In other words, the maximum length for an
<literal>NDB</literal> table name is 122 characters, less
the number of characters in the name of the database of
which that table is a part.
- </para>
- </listitem>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The maximum number of <literal>NDB</literal> tables is
+ limited to 20320.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The maximum number of attributes (that is, columns and
+ indexes) per table is limited to 128.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The maximum permitted size of any one row is 8KB. Note that
+ each <literal>BLOB</literal> or
<literal>TEXT</literal>
+ column contributes 256 + 8 = 264 bytes towards this total.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The maximum number of attributes per key is 32.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </para>
+
+ </section>
+
+ <section id="mysql-cluster-limitations-unsupported-missing">
+
+ <title>Unsupported Or Missing Features</title>
+
+ <indexterm>
+ <primary>MySQL Cluster limitations</primary>
+ <secondary>unsupported features</secondary>
+ </indexterm>
+
+ <formalpara>
+
+ <title>Unsupported Features</title>
+
+ <para>
+ A number of features supported by other storage engines are not
+ supported for <literal>NDB</literal> tables. Trying to use any
+ of these features in MySQL Cluster does not cause errors in or
+ of itself; however, errors may occur in applications that
+ expects the features to be supported or enforced:
+
+ <itemizedlist>
+
<listitem>
<para>
- The maximum number of <literal>NDB</literal> tables is
- limited to 20320.
+ The foreign key construct is ignored, just as it is in
+ <literal>MyISAM</literal> tables.
</para>
</listitem>
<listitem>
<para>
- The maximum number of attributes (that is, columns and
- indexes) per table is limited to 128.
+ Savepoints and rollbacks to savepoints are ignored as in
+ <literal>MyISAM</literal>.
</para>
</listitem>
<listitem>
<para>
- The maximum permitted size of any one row is 8KB. Note
- that each <literal>BLOB</literal> or
- <literal>TEXT</literal> column contributes 256 + 8 = 264
- bytes towards this total.
+ <literal>OPTIMIZE</literal> operations are not supported.
</para>
</listitem>
<listitem>
<para>
- The maximum number of attributes per key is 32.
+ <literal>LOAD TABLE ... FROM MASTER</literal> is not
+ supported.
</para>
</listitem>
- </itemizedlist>
-
- </para>
- </section>
- <section id="mysql-cluster-limitations-unsupported-missing">
- <title>Unsupported Or Missing Features</title>
-
- <indexterm>
- <primary>MySQL Cluster limitations</primary>
- <secondary>unsupported features</secondary>
- </indexterm>
-
- <formalpara>
- <title>Unsupported Features</title>
- <para>
- A number of features supported by other storage engines are not
- supported for <literal>NDB</literal> tables. Trying to use any
- of these features in MySQL Cluster does not cause errors in or of
- itself; however, errors may occur in applications that expects the
- features to be supported or enforced:
-
- <itemizedlist>
-
- <listitem>
- <para>
- The foreign key construct is ignored, just as it is in
- <literal>MyISAM</literal> tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Savepoints and rollbacks to savepoints are ignored as in
- <literal>MyISAM</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>OPTIMIZE</literal> operations are not supported.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <literal>LOAD TABLE ... FROM MASTER</literal> is not
- supported.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </para>
- </formalpara>
-
+
+ </itemizedlist>
+ </para>
+
+ </formalpara>
+
<formalpara>
+
<title>Missing Features</title>
+
<para>
-
-
<itemizedlist>
-
+
<listitem>
<para>
The only supported isolation level is <literal>READ
- COMMITTED</literal>. (InnoDB supports <literal>READ
- COMMITTED</literal>, <literal>READ
UNCOMMITTED</literal>,
+ COMMITTED</literal>. (InnoDB supports <literal>READ
+ COMMITTED</literal>, <literal>READ UNCOMMITTED</literal>,
<literal>REPEATABLE READ</literal>, and
<literal>SERIALIZABLE</literal>.) See
<xref linkend="mysql-cluster-backup-troubleshooting"/>,
@@ -786,7 +857,7 @@
of Cluster databases.
</para>
</listitem>
-
+
<listitem>
<para>
No durable commits on disk. Commits are replicated, but
@@ -794,294 +865,307 @@
commit.
</para>
</listitem>
-
+
</itemizedlist>
</para>
+
</formalpara>
-
-
+
</section>
-
+
<section id="mysql-cluster-limitations-performance">
+
<title>Limitations Relating to Performance</title>
- <indexterm>
- <primary>MySQL Cluster limitations</primary>
- <secondary>performance</secondary>
- </indexterm>
-
-
-
+
+ <indexterm>
+ <primary>MySQL Cluster limitations</primary>
+ <secondary>performance</secondary>
+ </indexterm>
+
<para>
The following performance issues are specific to or especially
pronounced in MySQL Cluster:
-
- <itemizedlist>
- <listitem>
- <para>
- There are query performance issues due to sequential
- access to the <literal>NDB</literal> storage engine; it is
- also relatively more expensive to do many range scans than
- it is with either <literal>MyISAM</literal> or
- <literal>InnoDB</literal>.
- </para>
- </listitem>
+ <itemizedlist>
- <listitem>
- <para>
- The <literal>Records in range</literal> statistic is
- available but is not completely tested or officially
- supported. This may result in non-optimal query plans in
- some cases. If necessary, you can employ <literal>USE
- INDEX</literal> or <literal>FORCE INDEX</literal> to
alter
- the execution plan. See <xref linkend="index-hints"/>, for
- more information on how to do this.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ There are query performance issues due to sequential access
+ to the <literal>NDB</literal> storage engine; it is also
+ relatively more expensive to do many range scans than it is
+ with either <literal>MyISAM</literal> or
+ <literal>InnoDB</literal>.
+ </para>
+ </listitem>
- <listitem>
- <para>
- Unique hash indexes created with <literal>USING
- HASH</literal> cannot be used for accessing a table if
- <literal>NULL</literal> is given as part of the key.
- </para>
- </listitem>
+ <listitem>
+ <para>
+ The <literal>Records in range</literal> statistic is
+ available but is not completely tested or officially
+ supported. This may result in non-optimal query plans in
+ some cases. If necessary, you can employ <literal>USE
+ INDEX</literal> or <literal>FORCE INDEX</literal> to alter
+ the execution plan. See <xref linkend="index-hints"/>, for
+ more information on how to do this.
+ </para>
+ </listitem>
- <listitem>
- <para>
- <literal>SQL_LOG_BIN</literal> has no effect on data
- operations; however, it is supported for schema
- operations.
- </para>
+ <listitem>
+ <para>
+ Unique hash indexes created with <literal>USING
+ HASH</literal> cannot be used for accessing a table if
+ <literal>NULL</literal> is given as part of the key.
+ </para>
+ </listitem>
- <para>
- MySQL Cluster cannot produce a binlog for tables having
- <literal>BLOB</literal> columns but no primary key.
- </para>
+ <listitem>
+ <para>
+ <literal>SQL_LOG_BIN</literal> has no effect on data
+ operations; however, it is supported for schema operations.
+ </para>
- <para>
- Only the following schema operations are logged in a
- cluster binlog which is <emphasis>not</emphasis> on the
- <command>mysqld</command> executing the statement:
- </para>
+ <para>
+ MySQL Cluster cannot produce a binlog for tables having
+ <literal>BLOB</literal> columns but no primary key.
+ </para>
- <itemizedlist>
+ <para>
+ Only the following schema operations are logged in a cluster
+ binlog which is <emphasis>not</emphasis> on the
+ <command>mysqld</command> executing the statement:
+ </para>
- <listitem>
- <para>
- <literal>CREATE TABLE</literal>
- </para>
- </listitem>
+ <itemizedlist>
- <listitem>
- <para>
- <literal>ALTER TABLE</literal>
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <literal>CREATE TABLE</literal>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <literal>DROP TABLE</literal>
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <literal>ALTER TABLE</literal>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <literal>CREATE DATABASE</literal> / <literal>CREATE
- SCHEMA</literal>
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <literal>DROP TABLE</literal>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <literal>DROP DATABASE</literal> / <literal>DROP
- SCHEMA</literal>
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <literal>CREATE DATABASE</literal> / <literal>CREATE
+ SCHEMA</literal>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <literal>CREATE TABLESPACE</literal>
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <literal>DROP DATABASE</literal> / <literal>DROP
+ SCHEMA</literal>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <literal>ALTER TABLESPACE</literal>
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <literal>CREATE TABLESPACE</literal>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <literal>DROP TABLESPACE</literal>
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <literal>ALTER TABLESPACE</literal>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <literal>CREATE LOGFILE GROUP</literal>
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <literal>DROP TABLESPACE</literal>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <literal>ALTER LOGFILE GROUP</literal>
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <literal>CREATE LOGFILE GROUP</literal>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <literal>DROP LOGFILE GROUP</literal>
- </para>
- </listitem>
+ <listitem>
+ <para>
+ <literal>ALTER LOGFILE GROUP</literal>
+ </para>
+ </listitem>
- </itemizedlist>
- </listitem>
+ <listitem>
+ <para>
+ <literal>DROP LOGFILE GROUP</literal>
+ </para>
+ </listitem>
- </itemizedlist>
-
-
+ </itemizedlist>
+ </listitem>
+
+ </itemizedlist>
</para>
-
+
</section>
<section id="mysql-cluster-limitations-exclusive-to-cluster">
-
- <title>Issues Exclusive to MySQL Cluster</title>
-
- <indexterm>
- <primary>MySQL Cluster limitations</primary>
- <secondary>implementation</secondary>
- </indexterm>
+ <title>Issues Exclusive to MySQL Cluster</title>
+ <indexterm>
+ <primary>MySQL Cluster limitations</primary>
+ <secondary>implementation</secondary>
+ </indexterm>
+
+ <para>
+ The following are limitations specific to the
+ <literal>NDBCLUSTER</literal> storage engine, and do not occur
+ with <literal>MyISAM</literal> or
<literal>InnoDB</literal>:
+
+ <itemizedlist>
+
+ <listitem>
+ <formalpara>
+
+ <title>Machine architecture</title>
+
+ <para>
+ All machines used in the cluster must have the same
+ architecture. That is, all machines hosting nodes must be
+ either big-endian or little-endian, and you cannot use a
+ mixture of both. For example, you cannot have a management
+ node running on a PowerPC which directs a data node that
+ is running on an x86 machine. This restriction does not
+ apply to machines simply running <command>mysql</command>
+ or other clients that may be accessing the cluster's SQL
+ nodes.
+ </para>
+
+ </formalpara>
+ </listitem>
+
+ <listitem>
+ <formalpara>
+
+ <title>Adding and dropping of data nodes</title>
+
+ <para>
+ Online adding or dropping of data nodes is not currently
+ possible. In such cases, the entire cluster must be
+ restarted.
+ </para>
+
+ </formalpara>
+ </listitem>
+
+ <listitem>
+ <formalpara>
+
+ <title>Multiple data node processes</title>
+
+ <para>
+ While it is possible to run multiple cluster processes
+ concurrently on a single host, it is not always advisable
+ to do so for reasons of performance and high availability,
+ as well as other considerations. In particular, in MySQL
+ ¤t-series; or &mccge-series;, we do not support for
+ production use any MySQL Cluster deployment in which more
+ than one <command>ndbd</command> process is run on a
+ single physical machine.
+ </para>
+
+ </formalpara>
+
+ <para>
+ We may support multiple data nodes per host in a future
+ MySQL release, following additional testing. However, in
+ MySQL ¤t-series; and &mccge-series;, such
+ configurations can be considered experimental only.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </para>
+
+ </section>
+
+ <section id="mysql-cluster-limitations-disk-data">
+
+ <title>Limitation Relating to Disk Data Storage</title>
+
+ <indexterm>
+ <primary>MySQL Cluster limitations</primary>
+ <secondary>Disk Data storage</secondary>
+ </indexterm>
+
+ <itemizedlist>
+
+ <listitem>
<para>
- The following are limitations specific to the
- <literal>NDBCLUSTER</literal> storage engine, and do not occur
- with <literal>MyISAM</literal> or
<literal>InnoDB</literal>:<itemizedlist>
-
+ Disk data objects are subject to the following maximums:
+
+ <itemizedlist>
+
<listitem>
- <formalpara>
- <title>Machine architecture</title>
<para>
- All machines used in the cluster must have the same
- architecture. That is, all machines hosting nodes must be
- either big-endian or little-endian, and you cannot use a
- mixture of both. For example, you cannot have a management
- node running on a PowerPC which directs a data node that
- is running on an x86 machine. This restriction does not
- apply to machines simply running <command>mysql</command>
- or other clients that may be accessing the cluster's SQL
- nodes.
+ Maxmimum number of tablespaces: 2^32 (4294967296)
</para>
- </formalpara>
</listitem>
-
+
<listitem>
- <formalpara>
- <title>Adding and dropping of data nodes</title>
<para>
- Online adding or dropping of data nodes is not currently
- possible. In such cases, the entire cluster must be restarted.
+ Maximum number of data files per tablespace: 2^16
+ (65535)
</para>
- </formalpara>
</listitem>
-
+
<listitem>
- <formalpara>
- <title>Multiple data node processes</title>
- <para>
- While it is possible to run multiple cluster processes
- concurrently on a single host, it is not always
- advisable to do so for reasons of performance and high
- availability, as well as other considerations. In
- particular, in MySQL ¤t-series; or
- &mccge-series;, we do not support for production use
- any MySQL Cluster deployment in which more than one
- <command>ndbd</command> process is run on a single
- physical machine.
- </para>
- </formalpara>
-
<para>
- We may support multiple data nodes per host in a future
- MySQL release, following additional testing. However, in
- MySQL ¤t-series; and &mccge-series;, such
- configurations can be considered experimental only.
+ Maxmimum data file size: 2^47 (128GB)
</para>
</listitem>
+
</itemizedlist>
</para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Use of Disk Data tables is not supported when running the
+ cluster in diskless mode. Beginning with MySQL 5.1.12, it is
+ disallowed altogether. (Bug #20008)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
</section>
-
- <section id="mysql-cluster-limitations-disk-data">
-
- <title>Limitation Relating to Disk Data Storage</title>
- <indexterm>
- <primary>MySQL Cluster limitations</primary>
- <secondary>Disk Data storage</secondary>
- </indexterm><itemizedlist>
- <listitem>
- <para>
- Disk data objects are subject to the following
- maximums:
-
- <itemizedlist>
-
- <listitem>
- <para>
- Maxmimum number of tablespaces: 2^32
- (4294967296)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Maximum number of data files per tablespace:
- 2^16 (65535)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Maxmimum data file size: 2^47 (128GB)
- </para>
- </listitem>
-
- </itemizedlist>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use of Disk Data tables is not supported when
- running the cluster in diskless mode. Beginning with
- MySQL 5.1.12, it is disallowed altogether. (Bug
- #20008)
- </para>
- </listitem>
-
-
- </itemizedlist>
-
- </section>
-
+
<section id="mysql-cluster-limitations-multiple-nodes">
- <title>Limitations Relating to Multiple Cluster Nodes</title>
+
+ <title>Limitations Relating to Multiple Cluster Nodes</title>
+
<formalpara>
+
<title>Multiple SQL nodes</title>
+
<indexterm>
<primary>MySQL Cluster limitations</primary>
<secondary>multiple MySQL servers</secondary>
</indexterm>
-
+
<para>
- The following are issues relating to the use of multiple MySQL servers
- as MySQL Cluster SQL nodes, and are specific to the
+ The following are issues relating to the use of multiple MySQL
+ servers as MySQL Cluster SQL nodes, and are specific to the
<literal>NDBCLUSTER</literal> storage engine:
-
+
<itemizedlist>
-
+
<listitem>
<para>
<literal>ALTER TABLE</literal> is not fully locking when
@@ -1089,89 +1173,96 @@
lock).
</para>
</listitem>
-
+
<listitem>
<para>
DDL operations (such as <literal>CREATE TABLE</literal> or
- <literal>ALTER TABLE</literal>) are not safe from data node
- failures. If a data node fails while trying to peform one of
- these, the data dictionary is locked and no further DDL
- statements can be executed without restarting the cluster.
+ <literal>ALTER TABLE</literal>) are not safe from data
+ node failures. If a data node fails while trying to peform
+ one of these, the data dictionary is locked and no further
+ DDL statements can be executed without restarting the
+ cluster.
</para>
</listitem>
-
+
</itemizedlist>
</para>
+
</formalpara>
-
+
<formalpara>
+
<title>Multiple management nodes</title>
- <indexterm>
- <primary>MySQL Cluster limitations</primary>
- <secondary>multiple management servers</secondary>
- </indexterm>
-
- <para>
- When using multiple management servers:<itemizedlist>
-
- <listitem>
- <para>
- You must give nodes explicit IDs in connectstrings
- because automatic allocation of node IDs does not work
- across multiple management servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- You must take extreme care to have the same
- configurations for all management servers. No special
- checks for this are performed by the cluster.
- </para>
- </listitem>
-
- </itemizedlist>
- </para>
-
- </formalpara>
- <itemizedlist>
-
-
- <listitem>
- <formalpara>
- <title>Multiple network addresses</title>
-
- <para>
- Multiple network addresses per data node are not
- supported. Use of these is liable to cause problems:
- In the event of a data node failure, an SQL node waits
- for confirmation that the data node went down but
- never receives it because another route to that data
- node remains open. This can effectively make the
- cluster inoperable.
- </para>
- </formalpara>
-
- <para>
- It is possible to use multiple network hardware
- <emphasis>interfaces</emphasis> (such as Ethernet cards)
- for a single data node, but these must be bound to the
- same address. This also means that it not possible to
- use more than one <literal>[TCP]</literal> section per
- connection in the <literal>config.ini</literal> file.
- See <xref linkend="mysql-cluster-tcp-definition"/>, for
- more information.
- </para>
- </listitem>
-
- </itemizedlist>
-
-
+
+ <indexterm>
+ <primary>MySQL Cluster limitations</primary>
+ <secondary>multiple management servers</secondary>
+ </indexterm>
+
+ <para>
+ When using multiple management servers:
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ You must give nodes explicit IDs in connectstrings because
+ automatic allocation of node IDs does not work across
+ multiple management servers.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ You must take extreme care to have the same configurations
+ for all management servers. No special checks for this are
+ performed by the cluster.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </para>
+
+ </formalpara>
+
+ <itemizedlist>
+
+ <listitem>
+ <formalpara>
+
+ <title>Multiple network addresses</title>
+
+ <para>
+ Multiple network addresses per data node are not supported.
+ Use of these is liable to cause problems: In the event of a
+ data node failure, an SQL node waits for confirmation that
+ the data node went down but never receives it because
+ another route to that data node remains open. This can
+ effectively make the cluster inoperable.
+ </para>
+
+ </formalpara>
+
+ <para>
+ It is possible to use multiple network hardware
+ <emphasis>interfaces</emphasis> (such as Ethernet cards) for a
+ single data node, but these must be bound to the same address.
+ This also means that it not possible to use more than one
+ <literal>[TCP]</literal> section per connection in the
+ <literal>config.ini</literal> file. See
+ <xref linkend="mysql-cluster-tcp-definition"/>, for more
+ information.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
</section>
-
+
<section id="mysql-cluster-limitations-resolved">
+
<title>Previous MySQL Cluster Issues Resolved in MySQL 5.1</title>
-
+
<indexterm>
<primary>MySQL Cluster limitations</primary>
<secondary>resolved in current version from previous
versions</secondary>
@@ -1181,213 +1272,229 @@
A number of limitations and related issues existing in earlier
versions of MySQL Cluster have been resolved over the course of
development of MySQL ¤t-series; or &mccge-series;:
-
+
<itemizedlist>
-
- <listitem>
- <para>
- The <literal>NDB Cluster</literal> storage engine now
- supports variable-length column types for in-memory
- tables.
- </para>
-
- <para>
- Previously, for example, any Cluster table having one or more
- <literal>VARCHAR</literal> fields which contained only
- relatively small values, much more memory and disk space
- were required when using the <literal>NDBCLUSTER</literal>
- storage engine than would have been the case for the same
- table and data using the <literal>MyISAM</literal> engine.
- In other words, in the case of a
- <literal>VARCHAR</literal> column, such a column required
- the same amount of storage as a <literal>CHAR</literal>
- column of the same size. In MySQL 5.1, this is no longer
- the case for in-memory tables, where storage requirements
- for variable-length column types such as
- <literal>VARCHAR</literal> and
<literal>BINARY</literal>
- are comparable to those for these column types when used
- in <literal>MyISAM</literal> tables (see
- <xref linkend="storage-requirements"/>).
- </para>
-
- <important>
+
+ <listitem>
<para>
- For MySQL Cluster Disk Data tables, the fixed-width
- limitation continues to apply. See
- <xref linkend="mysql-cluster-disk-data"/>.
+ The <literal>NDB Cluster</literal> storage engine now
+ supports variable-length column types for in-memory tables.
</para>
- </important>
- </listitem>
-
- <listitem>
- <indexterm>
- <primary>MySQL Cluster limitations</primary>
- <secondary>replication</secondary>
- </indexterm>
-
- <para>
- It is now possible to use MySQL replication with Cluster
- databases. For details, see
- <xref linkend="mysql-cluster-replication"/>.
- </para>
-
- <para>
- However, circular replication is <emphasis>not</emphasis>
- currently supported for MySQL Cluster. See
- <xref linkend="mysql-cluster-replication-issues"/>.
- </para>
- </listitem>
-
- <listitem>
- <indexterm>
- <primary>MySQL Cluster limitations</primary>
- <secondary>autodiscovery</secondary>
- </indexterm>
-
- <para>
- Autodiscovery of databases is now supported for multiple
- MySQL servers accessing the same MySQL Cluster, provided
- that a given <command>mysqld</command> is already running
- and is connected to the cluster at the time that the
- database is created on a different
- <command>mysqld</command>.
- </para>
-
- <para>
- What this means is that if a <command>mysqld</command>
- process first connects to the cluster after a database
- named <replaceable>db_name</replaceable> has been created,
- you should issue a <literal>CREATE SCHEMA
- <replaceable>db_name</replaceable></literal> statement on
- the <quote>new</quote> MySQL server when it first accesses
- that MySQL Cluster. Once this has been done, the
- <quote>new</quote> <command>mysqld</command> should be
- able to detect any tables in that database tables without
- errors.
- </para>
-
- <para>
- This also means that online schema changes in
- <literal>NDB</literal> tables are now possible. That is,
- the result of operations such as <literal>ALTER
- TABLE</literal> and <literal>CREATE INDEX</literal>
- performed on one SQL node in the cluster are now visible
- to the cluster's other SQL nodes without any additional
- action being taken.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Beginning with MySQL 5.1.10, it is possible to perform a
- Cluster backup and restore between different
- architectures. Previously — for example — you
- could not back up a cluster running on a big-endian
- platform and then restore from that backup to a cluster
- running on a little-endian system. (Bug #19255)
- </para>
- </listitem>
-
- <listitem>
- <formalpara>
- <title>Character sets</title>
-
+
+ <para>
+ Previously, for example, any Cluster table having one or
+ more <literal>VARCHAR</literal> fields which contained only
+ relatively small values, much more memory and disk space
+ were required when using the <literal>NDBCLUSTER</literal>
+ storage engine than would have been the case for the same
+ table and data using the <literal>MyISAM</literal> engine.
+ In other words, in the case of a <literal>VARCHAR</literal>
+ column, such a column required the same amount of storage as
+ a <literal>CHAR</literal> column of the same size. In MySQL
+ 5.1, this is no longer the case for in-memory tables, where
+ storage requirements for variable-length column types such
+ as <literal>VARCHAR</literal> and
<literal>BINARY</literal>
+ are comparable to those for these column types when used in
+ <literal>MyISAM</literal> tables (see
+ <xref linkend="storage-requirements"/>).
+ </para>
+
+ <important>
+ <para>
+ For MySQL Cluster Disk Data tables, the fixed-width
+ limitation continues to apply. See
+ <xref linkend="mysql-cluster-disk-data"/>.
+ </para>
+ </important>
+ </listitem>
+
+ <listitem>
<indexterm>
<primary>MySQL Cluster limitations</primary>
- <secondary>character sets</secondary>
+ <secondary>replication</secondary>
</indexterm>
- <para>
- Beginning with MySQL 5.1.10, it is possible to install
- MySQL with Cluster support to a non-default location and
- change the search path for font description files using
- either the <option>--basedir</option> or
- <option>--character-sets-dir</option> options.
- (Previously, <command>ndbd</command> in MySQL 5.1 searched
- only the default path — typically
- <filename>/usr/local/mysql/share/mysql/charsets</filename>
- — for character sets.)
- </para></formalpara>
- </listitem>
-
- <listitem>
- <para>
- In MySQL 5.1, it is no longer necessary, when running
- multiple management servers, to restart all the cluster's
- data nodes to enable the management nodes to see one
- another.
- </para>
- </listitem>
-
-
- <listitem>
- <formalpara>
- <title>Length of <literal>CREATE TABLE</literal>
statements</title>
-
+
+ <para>
+ It is now possible to use MySQL replication with Cluster
+ databases. For details, see
+ <xref linkend="mysql-cluster-replication"/>.
+ </para>
+
+ <para>
+ However, circular replication is <emphasis>not</emphasis>
+ currently supported for MySQL Cluster. See
+ <xref linkend="mysql-cluster-replication-issues"/>.
+ </para>
+ </listitem>
+
+ <listitem>
<indexterm>
<primary>MySQL Cluster limitations</primary>
- <secondary>CREATE TABLE statements</secondary>
+ <secondary>autodiscovery</secondary>
</indexterm>
+
<para>
- <literal>CREATE TABLE</literal> statements may be no more
- than 4096 characters in length. <emphasis>This limitation
+ Autodiscovery of databases is now supported for multiple
+ MySQL servers accessing the same MySQL Cluster, provided
+ that a given <command>mysqld</command> is already running
+ and is connected to the cluster at the time that the
+ database is created on a different
+ <command>mysqld</command>.
+ </para>
+
+ <para>
+ What this means is that if a <command>mysqld</command>
+ process first connects to the cluster after a database named
+ <replaceable>db_name</replaceable> has been created, you
+ should issue a <literal>CREATE SCHEMA
+ <replaceable>db_name</replaceable></literal> statement on
+ the <quote>new</quote> MySQL server when it first accesses
+ that MySQL Cluster. Once this has been done, the
+ <quote>new</quote> <command>mysqld</command> should
be able
+ to detect any tables in that database tables without errors.
+ </para>
+
+ <para>
+ This also means that online schema changes in
+ <literal>NDB</literal> tables are now possible. That is, the
+ result of operations such as <literal>ALTER TABLE</literal>
+ and <literal>CREATE INDEX</literal> performed on one SQL
+ node in the cluster are now visible to the cluster's other
+ SQL nodes without any additional action being taken.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Beginning with MySQL 5.1.10, it is possible to perform a
+ Cluster backup and restore between different architectures.
+ Previously — for example — you could not back up
+ a cluster running on a big-endian platform and then restore
+ from that backup to a cluster running on a little-endian
+ system. (Bug #19255)
+ </para>
+ </listitem>
+
+ <listitem>
+ <formalpara>
+
+ <title>Character sets</title>
+
+ <indexterm>
+ <primary>MySQL Cluster limitations</primary>
+ <secondary>character sets</secondary>
+ </indexterm>
+
+ <para>
+ Beginning with MySQL 5.1.10, it is possible to install
+ MySQL with Cluster support to a non-default location and
+ change the search path for font description files using
+ either the <option>--basedir</option> or
+ <option>--character-sets-dir</option> options.
+ (Previously, <command>ndbd</command> in MySQL 5.1 searched
+ only the default path — typically
+ <filename>/usr/local/mysql/share/mysql/charsets</filename>
+ — for character sets.)
+ </para>
+
+ </formalpara>
+ </listitem>
+
+ <listitem>
+ <para>
+ In MySQL 5.1, it is no longer necessary, when running
+ multiple management servers, to restart all the cluster's
+ data nodes to enable the management nodes to see one
+ another.
+ </para>
+ </listitem>
+
+ <listitem>
+ <formalpara>
+
+ <title>Length of <literal>CREATE TABLE</literal>
statements</title>
+
+ <indexterm>
+ <primary>MySQL Cluster limitations</primary>
+ <secondary>CREATE TABLE statements</secondary>
+ </indexterm>
+
+ <para>
+ <literal>CREATE TABLE</literal> statements may be no more
+ than 4096 characters in length. <emphasis>This limitation
affects MySQL 5.1.6, 5.1.7, and 5.1.8 only</emphasis>.
- (See Bug #17813)
- </para></formalpara>
- </listitem>
-
- <listitem>
- <formalpara>
- <title><literal>IGNORE</literal> and
<literal>REPLACE</literal> functionality</title>
- <indexterm>
- <primary>MySQL Cluster limitations</primary>
- <secondary>INSERT IGNORE, UPDATE IGNORE, and REPLACE
statements</secondary>
- </indexterm>
- <para>
- In MySQL 5.1.7 and earlier, <literal>INSERT
- IGNORE</literal>, <literal>UPDATE IGNORE</literal>, and
- <literal>REPLACE</literal> were supported only for primary
- keys, but not for unique keys. It was possible to work around
- this issue by removing the constraint, then dropping the unique index,
- performing any inserts, and then adding the unique index again.
- </para></formalpara>
-
- <para>
- This limitation was removed for <literal>INSERT
+ (See Bug #17813)
+ </para>
+
+ </formalpara>
+ </listitem>
+
+ <listitem>
+ <formalpara>
+
+ <title><literal>IGNORE</literal> and
<literal>REPLACE</literal> functionality</title>
+
+ <indexterm>
+ <primary>MySQL Cluster limitations</primary>
+ <secondary>INSERT IGNORE, UPDATE IGNORE, and REPLACE
statements</secondary>
+ </indexterm>
+
+ <para>
+ In MySQL 5.1.7 and earlier, <literal>INSERT
+ IGNORE</literal>, <literal>UPDATE IGNORE</literal>, and
+ <literal>REPLACE</literal> were supported only for primary
+ keys, but not for unique keys. It was possible to work
+ around this issue by removing the constraint, then
+ dropping the unique index, performing any inserts, and
+ then adding the unique index again.
+ </para>
+
+ </formalpara>
+
+ <para>
+ This limitation was removed for <literal>INSERT
IGNORE</literal> and <literal>REPLACE</literal> in MySQL
- 5.1.8. (See Bug #17431.)
- </para>
- </listitem>
-
- <listitem>
- <formalpara>
- <title><literal>AUTO_INCREMENT</literal>
columns</title>
- <para>
- In MySQL 5.1.10 and earlier versions, the maximum number
- of tables having <literal>AUTO_INCREMENT</literal> columns
- — including those belonging to hidden primary keys
- — was 2048.
- </para>
- </formalpara>
-
- <para>
- This limitation was lifted in MySQL 5.1.11.
- </para>
- </listitem>
-
+ 5.1.8. (See Bug #17431.)
+ </para>
+ </listitem>
+
<listitem>
+ <formalpara>
+
+ <title><literal>AUTO_INCREMENT</literal>
columns</title>
+
+ <para>
+ In MySQL 5.1.10 and earlier versions, the maximum number
+ of tables having <literal>AUTO_INCREMENT</literal> columns
+ — including those belonging to hidden primary keys
+ — was 2048.
+ </para>
+
+ </formalpara>
+
+ <para>
+ This limitation was lifted in MySQL 5.1.11.
+ </para>
+ </listitem>
+
+ <listitem>
&mccge-warning-begin;
<formalpara>
- <title>Maximum number of cluster nodes</title>
+
+ <title>Maximum number of cluster nodes</title>
+
+ <para>
+ Prior to MySQL 5.1.15-ndb-6.1.1, the total maximum number
+ of nodes in a MySQL Cluster was 63, including all SQL
+ nodes (MySQL Servers), API nodes (applications accessing
+ the cluster other than MySQL servers), data nodes, and
+ management servers.
+ </para>
+
+ </formalpara>
+
<para>
- Prior to MySQL 5.1.15-ndb-6.1.1, the total maximum number
- of nodes in a MySQL Cluster was 63, including all SQL
- nodes (MySQL Servers), API nodes (applications accessing
- the cluster other than MySQL servers), data nodes, and
- management servers.
- </para>
- </formalpara>
- <para>
Starting with MySQL 5.1.15-ndb-6.1.1, up to 255 API nodes
(including MySQL servers acting as cluster SQL nodes) are
supported by a single cluster. The total number of data
@@ -1397,15 +1504,10 @@
&mccge-warning-end-cluster;
</listitem>
-
- </itemizedlist>
- </para>
-
-
-
+ </itemizedlist>
+ </para>
-
+ </section>
- </section>
-</section>
\ No newline at end of file
+</section>
| Thread |
|---|
| • svn commit - mysqldoc@docsrva: r6518 - trunk/refman-5.1 | jon | 18 May |