=====Overview=====
* 192.168.0.100 mysqlndbmgm
* 192.168.0.110 mysqldatanodea
* 192.168.0.120 mysqldatanodeb
* 192.168.0.210 mysqlsqlnodea
* 192.168.0.220 mysqlsqlnodeb
====MySQL NDB Cluster Architecture:====
MySQL NDB Cluster has 3 major components:
* Management Node
* SQL Node
* Data Node
We will discuss each of these 3 components in turn:
====Management Node====
The Cluster management server is used to manage the other node of the cluster. We can create and configure new nodes, restart, delete, or backup nodes on the cluster from the management node. In nutshell, the management node is used to control the cluster engine and observe it as a monitoring tool:
Installing the management node binaries:
[root@mysqlndbmgm ~]# rpm -Uvh mysql-cluster-community-management-server-7.5.7-1.el7.x86_64.rpm
Preparing... ################################# [100%]
package mysql-cluster-community-management-server-7.5.7-1.el7.x86_64 is already installed
[root@mysqlndbmgm ~]#
Configuration:
[root@mysqlndbmgm mysql-cluster]# cat >> /var/lib/mysql-cluster/config.ini << EOF
[ndb_mgmd default]
# Directory for MGM node log files
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
#Management Node db1
HostName=192.168.0.100
[ndbd default]
NoOfReplicas=2 # Number of replicas
DataMemory=64M # Memory allocate for data storage
IndexMemory=64M # Memory allocate for index storage
#Directory for Data Node
DataDir=/var/lib/mysql-cluster
[ndbd]
#Data Node db2
HostName=192.168.0.110
[ndbd]
#Data Node db3
HostName=192.168.0.120
[mysqld]
#SQL Node db4
HostName=192.168.0.210
[mysqld]
#SQL Node db5
HostName=192.168.0.220
[root@mysqlndbmgm mysql-cluster]#
EOF
Starting:
ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini
Show configuration:
[root@mysqlsqlnodea ~]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.0.100:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.0.110 (mysql-5.7.19 ndb-7.5.7, Nodegroup: 0, *)
id=3 @192.168.0.120 (mysql-5.7.19 ndb-7.5.7, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.100 (mysql-5.7.19 ndb-7.5.7)
[mysqld(API)] 2 node(s)
id=4 @192.168.0.210 (mysql-5.7.19 ndb-7.5.7)
id=5 @192.168.0.220 (mysql-5.7.19 ndb-7.5.7)
ndb_mgm>
====SQL Node====
The interface servers that are used by the applications to connect to the database cluster. This is where the mysqld is started and the databases are available.
Installation:
[root@mysqlsqlnodea ~]# rpm -Uvh mysql-cluster-community-server-7.5.7-1.el7.x86_64.rpm
warning: mysql-cluster-community-server-7.5.7-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
package mysql-cluster-community-server-7.5.7-1.el7.x86_64 is already installed
[root@mysqlsqlnodea ~]#
Configuration:
cat >> /etc/my.cnf << EOF
[mysqld]
ndb-connectstring=192.168.0.100:1186
ndb-nodeid=N
ndbcluster
datadir=/var/lib/mysql/data
basedir=/var/lib/mysql
server-id=N
log-bin
[mysql_cluster]
ndb-connectstring=192.168.0.100
EOF
Starting a SQL Node:
service mysqld start
or on Linux 7+
systemctl start mysql
====Data Node====
This is the layer where the process of synchronizing and data replication between nodes happens.
Installing the data node:
[root@mysqldatanodea ~]# rpm -Uvh mysql-cluster-community-data-node-7.5.7-1.el7.x86_64.rpm
Preparing... ################################# [100%]
package mysql-cluster-community-data-node-7.5.7-1.el7.x86_64 is already installed
Configuration:
[root@mysqldatanodea ~]# cat >> /etc/my.cnf << EOF
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.100 # IP address of Management Node
[mysql_cluster]
ndb-connectstring=192.168.0.100 # IP address of Management Node
EOF
Starting NDB Data node
[root@mysqldatanodea ~]# ndbd
2017-10-17 11:13:58 [ndbd] INFO -- Angel connected to '192.168.0.100:1186'
2017-10-17 11:13:58 [ndbd] INFO -- Angel allocated nodeid: 2
[root@mysqldatanodea ~]#