Spec-Zone .ru
спецификации, руководства, описания, API
|
mysqld is the traditional MySQL server process. To be used with
MySQL Cluster, mysqld needs to be built with support for the NDB
storage engine, as it is in the precompiled binaries available from -DWITH_NDBCLUSTER=1
option to include support for NDB
.
For more information about compiling MySQL Cluster from source, see Section 17.2.2.3, "Building MySQL Cluster from Source on Linux", and Section 17.2.3.2, "Compiling and Installing MySQL Cluster from Source on Windows".
(For information about mysqld options and variables, in addition to those discussed in this section, which are relevant to MySQL Cluster, see Section 17.3.4, "MySQL Server Options and Variables for MySQL Cluster".)
If the mysqld binary has been built with Cluster support, the NDBCLUSTER
storage engine is still disabled by default. You can use either of two possible options to enable this engine:
Use --ndbcluster
as a startup option on the command line when starting mysqld.
Insert a line containing ndbcluster
in the [mysqld]
section of your my.cnf
file.
An easy way to verify that your server is running with the NDBCLUSTER
storage engine enabled is to issue the SHOW ENGINES
statement in the MySQL Monitor (mysql). You should see the value YES
as the Support
value in the row for NDBCLUSTER
. If you see NO
in this row or if there is
no such row displayed in the output, you are not running an NDB
-enabled version of MySQL. If you see DISABLED
in this row, you need to enable it in either one of the two ways just
described.
To read cluster configuration data, the MySQL server requires at a minimum three pieces of information:
The MySQL server's own cluster node ID
The host name or IP address for the management server (MGM node)
The number of the TCP/IP port on which it can connect to the management server
Node IDs can be allocated dynamically, so it is not strictly necessary to specify them explicitly.
The mysqld parameter ndb-connectstring
is used to specify the connectstring either on the command line when starting mysqld or in my.cnf
. The
connectstring contains the host name or IP address where the management server can be found, as well as the
TCP/IP port it uses.
In the following example, ndb_mgmd.mysql.com
is the host where the management
server resides, and the management server listens for cluster messages on port 1186:
shell> mysqld --ndbcluster
--ndb-connectstring=ndb_mgmd.mysql.com:1186
See Section 17.3.2.3, "The MySQL Cluster Connectstring", for more information on connectstrings.
Given this information, the MySQL server will be a full participant in the cluster. (We often refer to a mysqld process running in this manner as an SQL node.) It will be fully aware of all cluster data nodes as well as their status, and will establish connections to all data nodes. In this case, it is able to use any data node as a transaction coordinator and to read and update node data.
You can see in the mysql client whether a MySQL server is connected to the cluster
using SHOW PROCESSLIST
. If the MySQL server is connected to the cluster, and you
have the PROCESS
privilege,
then the first row of the output is as shown here:
mysql> SHOW PROCESSLIST \G*************************** 1. row *************************** Id: 1 User: system user Host: db:Command: Daemon Time: 1 State: Waiting for event from ndbclusterInfo: NULL
To participate in a MySQL Cluster, the mysqld process must be started with both the options --ndbcluster
and --ndb-connectstring
(or their equivalents in my.cnf
). If mysqld is started with only the --ndbcluster
option, or if it is unable to contact the cluster, it is not
possible to work with NDB
tables, nor is it possible to create any new tables regardless of storage
engine. The latter restriction is a safety measure intended to prevent the creation of
tables having the same names as NDB
tables while the SQL node is not connected to the cluster. If you
wish to create tables using a different storage engine while the mysqld process is not participating in a MySQL Cluster,
you must restart the server without the --ndbcluster
option.