16.3.3. Multi-Computer Configuration
For our four-node, four-host MySQL Cluster, we will need to
write four configuration files, one per node/host.
-
Each data node or SQL node requires a
my.cnf
file that provides two pieces of
information: a
connectstring telling the
node where to find the MGM node, and a line telling the
MySQL server on this host (the machine hosting the data
node) to run in NDB mode.
For more information on connectstrings, see
Section 16.4.4.2, “The MySQL Cluster connectstring
”.
The management node needs a config.ini
file telling it how many replicas to maintain, how much
memory to allocate for data and indexes on each data node,
where to find the data nodes, where to save data to disk on
each data node, and where to find any SQL nodes.
Configuring the Storage and SQL
Nodes
The my.cnf
file needed for the data nodes
is fairly simple. The configuration file should be located in
the /etc
directory and can be edited using
any text editor. (Create the file if it does not exist.) For
example:
shell> vi /etc/my.cnf
We show vi being used here to create the
file, but any text editor should work just as well.
For each data node and SQL node in our example setup,
my.cnf
should look like this:
# Options for mysqld process:
[MYSQLD]
ndbcluster # run NDB engine
ndb-connectstring=192.168.0.10 # location of MGM node
# Options for ndbd process:
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.10 # location of MGM node
After entering the preceding information, save this file and
exit the text editor. Do this for the machines hosting data node
“A”, data node “B”, and the SQL node.
Configuring the Management Node
The first step in configuring the MGM node is to create the
directory in which the configuration file can be found and then
to create the file itself. For example (running as
root
):
shell> mkdir /var/lib/mysql-cluster
shell> cd /var/lib/mysql-cluster
shell> vi config.ini
For our representative setup, the
config.ini
file should read as follows:
# Options affecting ndbd processes on all data nodes:
[NDBD DEFAULT]
NoOfReplicas=2 # Number of replicas
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # How much memory to allocate for index storage
# For DataMemory and IndexMemory, we have used the
# default values. Since the "world" database takes up
# only about 500KB, this should be more than enough for
# this example Cluster setup.
# TCP/IP options:
[TCP DEFAULT]
portnumber=2202 # This the default; however, you can use any
# port that is free for all the hosts in cluster
# Note: It is recommended beginning with MySQL 5.0 that
# you do not specify the portnumber at all and simply allow
# the default value to be used instead
# Management process options:
[NDB_MGMD]
hostname=192.168.0.10 # Hostname or IP address of MGM node
datadir=/var/lib/mysql-cluster # Directory for MGM node logfiles
# Options for data node "A":
[NDBD]
# (one [NDBD] section per data node)
hostname=192.168.0.30 # Hostname or IP address
datadir=/usr/local/mysql/data # Directory for this data node's datafiles
# Options for data node "B":
[NDBD]
hostname=192.168.0.40 # Hostname or IP address
datadir=/usr/local/mysql/data # Directory for this data node's datafiles
# SQL node options:
[MYSQLD]
hostname=192.168.0.20 # Hostname or IP address
# (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)
(Note: The
world
database can be downloaded from
https://dev.mysql.com/doc/, where it can be found listed
under “Examples.”)
After all the configuration files have been created and these
minimal options have been specified, you are ready to proceed
with starting the cluster and verifying that all processes are
running. We discuss how this is done in
Section 16.3.4, “Initial Startup”.
For more detailed information about the available MySQL Cluster
configuration parameters and their uses, see
Section 16.4.4, “Configuration File”, and
Section 16.4, “MySQL Cluster Configuration”. For configuration
of MySQL Cluster as relates to making backups, see
Section 16.6.5.4, “Configuration for Cluster Backup”.
Note: The default port for
Cluster management nodes is 1186; the default port for data
nodes is 2202. Beginning with MySQL 5.0.3, this restriction is
lifted, and the cluster automatically allocates ports for data
nodes from those that are already free.