MySQL Cluster Quick Start Guide – LINUX
This guide is intended to help the reader get a simple MySQL Cluster database up and running on a single LINUX server. Note that for a live deployment multiple hosts should be used to provide redundancy but a single host can be used to gain familiarity with MySQL Cluster; please refer to the final section for links to material that will help turn this into a production system.
1 Get the software
For Generally Available (GA), supported versions of the software, download from
http://www.mysql.com/downloads/cluster/
Make sure that you select the correct platform – in this case, “Linux – Generic”
and then the correct architecture (for LINUX this means x86 32 or 64 bit).
If you want to try out a pre-GA version then check
http://dev.mysql.com/downloads/cluster/
Note: Only use MySQL Server executables (mysqlds) that come with the MySQL
Cluster installation.
2 Install
Locate the tar ball that you’ve downloaded, extract it and then create a link to it:
tar xvf Downloads/mysql-cluster-gpl-7.1.3-linux-x86_64-glibc23.tar.gz
ln -s mysql-cluster-gpl-7.1.3-linux-x86_64-glibc23 mysqlc
Optionally, you could add ~/mysqlc/bin to your path to avoid needing the full path when running the processes.
3 Configure
For a first Cluster, start with a single MySQL Server (mysqld), a pair of Data Nodes (ndbd) and a single management node (ndb_mgmd) – all running on the same server.
Create folders to store the configuration files and the data files:
mkdir my_cluster my_cluster/ndb_data my_cluster/mysqld_data my_cluster/conf
In the conf folder, create 2 files (note that “/home/user1” should be replaced with your home directory).
my.cnf:
[mysqld]
ndbcluster
datadir=/home/user1/my_cluster/mysqld_data
basedir=/home/user1/mysqlc
port=5000
config.ini:
[ndb_mgmd]
hostname=localhost
datadir=/home/user1/my_cluster/ndb_data
id=1
[ndbd default]
noofreplicas=2
datadir=/home/user1/my_cluster/ndb_data
[ndbd]
hostname=localhost
id=3
[ndbd]
hostname=localhost
id=4
[mysqld]
id=50
Note that in a production system there are other parameters that you would set to tune the configuration.
Just like any other MySQL Server, the mysqld process requires a ‘mysql’ database to be created and populated with essential system data:
cd mysqlc
scripts/mysql_install_db --no-defaults --datadir=$HOME/my_cluster/mysqld_data/
4 Run
The processes should be started in the order of management node, data nodes & then MySQL Server:
mysqlc]$ cd ../my_cluster/
my_cluster]$ $HOME/mysqlc/bin/ndb_mgmd -f conf/config.ini --initial --configdir=$HOME/my_cluster/conf/
$HOME/mysqlc/bin/ndbd -c localhost:1186
$HOME/mysqlc/bin/ndbd -c localhost:1186
Check the status of the Cluster and wait for the Data Nodes to finish starting before starting the MySQL Server:
$HOME/mysqlc/bin/ndb_mgm -e show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=3 @127.0.0.1 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0, Master)
id=4 @127.0.0.1 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @127.0.0.1 (mysql-5.1.44 ndb-7.1.3)
[mysqld(API)] 1 node(s)
id=50 (not connected, accepting connect from any host)
$HOME/mysqlc/bin/mysqld --defaults-file=conf/my.cnf &
5 Test
Connect to the MySQL Server and confirm that a table can be created that uses the ndb (MySQL Cluster) storage engine:
$HOME/mysqlc/bin/mysql -h 127.0.0.1 -P 5000 -u root
mysql> create database clusterdb;use clusterdb;
mysql> create table simples (id int not null primary key) engine=ndb;
mysql> insert into simples values (1),(2),(3),(4);
mysql> select * from simples;
+----+
| id |
+----+
| 3 |
| 1 |
| 2 |
| 4 |
+----+
6 Safely shut down
The MySQL Server must be shut down manually but then the other Cluster nodes can be stopped using the ndb_mgm tool:
$HOME/mysqlc/bin/mysqladmin -u root -h 127.0.0.1 -P 5000 shutdown
$HOME/mysqlc/bin/ndb_mgm -e shutdown