I created two cluster servers and one management server for MySQL Cluster
AMI: Minimal Fedora Core 8, 32-bit architecture, Apache 2.0, and Amazon EC2 AMI Tools
MySQL Cluster version 7.1
Fedora Version: 8
Security Group: default
1) Download RPM files
From http://www.mysql.com/downloads/cluster/#downloads all rpm files for Red Hat & Oracle Enterprise Linux for (x86, 32-bit).
2) In each instance
yum --enablerepo=remi erase mysql mysql-libs mysql-server mysqlclient15.i386 rpm -iv MySQL-Cluster-gpl-*
3) Config Management Server
Server IP ( ec2-79-11-111-11.eu-west-1.compute.amazonaws.com )
vi /var/lib/mysql-cluster/config.ini [NDBD DEFAULT] NoOfReplicas=2 [MYSQLD DEFAULT] [NDB_MGMD DEFAULT] [TCP DEFAULT] # Managment Server [NDB_MGMD] HostName=ec2-79-11-111-11.eu-west-1.compute.amazonaws.com # the IP of THIS SERVER # Storage Engines [NDBD] HostName=ec2-79-22-222-22.eu-west-1.compute.amazonaws.com # the IP of the FIRST SERVER DataDir= /var/lib/mysql-cluster [NDBD] HostName=ec2-79-33-333-33.eu-west-1.compute.amazonaws.com # the IP of the SECOND SERVER DataDir=/var/lib/mysql-cluster # 2 MySQL Clients # I personally leave this blank to allow rapid changes of the mysql clients; # you can enter the hostnames of the above two servers here. I suggest you dont. [MYSQLD] [MYSQLD] ndb_mgmd -f /var/lib/mysql-cluster/config.ini
The Management Server is now ready, you can check the conexions with the other servers doing this
ndb_mgm ndb_mgm> show Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @79.22.222.22 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master) id=3 @79.33.333.33 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master) [ndb_mgmd(MGM)] 1 node(s) id=1 @79.11.111.11 (mysql-5.1.44 ndb-7.1.4) [mysqld(API)] 2 node(s) id=4 @79.22.222.22 (mysql-5.1.44 ndb-7.1.4) id=5 @79.33.333.33 (mysql-5.1.44 ndb-7.1.4)
4) Config Cluster Servers
Cluster Server IPs: (ec2-79-22-222-22.eu-west-1.compute.amazonaws.com and ec2-79-33-333-33.eu-west-1.compute.amazonaws.com )
/etc/my.cnf [mysqld] ndbcluster ndb-connectstring=ec2-79-11-111-11.eu-west-1.compute.amazonaws.com # the IP of the MANAGMENT SERVER [mysql_cluster] ndb-connectstring=ec2-79-11-111-11.eu-west-1.compute.amazonaws.com # the IP of the MANAGMENT SERVER /usr/sbin/ndbd --initial /etc/init.d/mysql start
5) Testing
You can check in FIRST or SECOND server this and it will be duplicated in both servers.
mysql -u root -p use test; CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER; INSERT INTO ctest () VALUES (1); SELECT * FROM ctest;
6) Starting and Shutting down the MySQL Cluster
Starting
Management Server: db_mgmd -f /var/lib/mysql-cluster/config.ini
Cluster Servers: ndbd
Shutting down
Management Server: ndb_mgm> shutdown
Notes
Error: ERROR 1005 (HY000): Can’t create table ‘test.ctest’ (errno: 157)
Try to track the error with SHOW WARNINGS; When I have this problem I had disabled SELinux with “setenforce 0″.
Error: There is no populating changes trough the cluster servers.
Make sure they are connected each other, you can check this from management server with ndb_mgm> SHOW
Also double check all servers are in the security group “default” to leave the ports open. (see image)
Pages related: http://dev.mysql.com/tech-resources/articles/mysql-cluster-for-two-servers.html
