### 23.3.3 Initial Configuration of NDB Cluster

[]()[]()[]()

 In this section, we discuss manual configuration of an installed NDB Cluster by creating and editing configuration files.

 For our four-node, four-host NDB Cluster (see [Cluster nodes and host computers](mysql-cluster-installation.html#mysql-cluster-install-nodes-hosts)), it is necessary 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 connection string that tells the node where to find the management node, and a line telling the MySQL server on this host (the machine hosting the data node) to enable the [`NDBCLUSTER`](mysql-cluster.html) storage engine.

   For more information on connection strings, see [Section 23.4.3.3, “NDB Cluster Connection Strings”](mysql-cluster-connection-strings.html).

* The management node needs a `config.ini` file telling it how many fragment 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 data nodes 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:

```
$> vi /etc/my.cnf
```

Note

 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:

```
[mysqld]
# Options for mysqld process:
ndbcluster                      # run NDB storage engine

[mysql_cluster]
# Options for NDB Cluster processes:
ndb-connectstring=198.51.100.10  # location of management server
```

 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.

Important

 Once you have started a [**mysqld**](mysqld.html) process with the `ndbcluster` and `ndb-connectstring` parameters in the `[mysqld]` and `[mysql_cluster]` sections of the `my.cnf` file as shown previously, you cannot execute any [`CREATE TABLE`](create-table.html) or [`ALTER TABLE`](alter-table.html) statements without having actually started the cluster. Otherwise, these statements fail with an error. This is by design.

**Configuring the management node.**  The first step in configuring the management 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`):

```
$> mkdir /var/lib/mysql-cluster
$> cd /var/lib/mysql-cluster
$> vi config.ini
```

 For our representative setup, the `config.ini` file should read as follows:

```
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2    # Number of fragment replicas
DataMemory=98M    # How much memory to allocate for data storage

[ndb_mgmd]
# Management process options:
HostName=198.51.100.10          # Hostname or IP address of management node
DataDir=/var/lib/mysql-cluster  # Directory for management node log files

[ndbd]
# Options for data node "A":
                                # (one [ndbd] section per data node)
HostName=198.51.100.30          # Hostname or IP address
NodeId=2                        # Node ID for this data node
DataDir=/usr/local/mysql/data   # Directory for this data node's data files

[ndbd]
# Options for data node "B":
HostName=198.51.100.40          # Hostname or IP address
NodeId=3                        # Node ID for this data node
DataDir=/usr/local/mysql/data   # Directory for this data node's data files

[mysqld]
# SQL node options:
HostName=198.51.100.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/index-other.html](https://dev.mysql.com/doc/index-other.html).

 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 23.3.4, “Initial Startup of NDB Cluster”](mysql-cluster-install-first-start.html).

 For more detailed information about the available NDB Cluster configuration parameters and their uses, see [Section 23.4.3, “NDB Cluster Configuration Files”](mysql-cluster-config-file.html), and [Section 23.4, “Configuration of NDB Cluster”](mysql-cluster-configuration.html). For configuration of NDB Cluster as relates to making backups, see [Section 23.6.8.3, “Configuration for NDB Cluster Backups”](mysql-cluster-backup-configuration.html).

Note

 The default port for Cluster management nodes is 1186; the default port for data nodes is 2202. However, the cluster can automatically allocate ports for data nodes from those that are already free.

