Arrancando nuestro primer cluster
Una vez que conocemos la teoría, vamos a poner en marcha nuestro primer Cluster. Estará compuesto únicamente por 3 ordenadores.
Nodo 1 (192.168.1.106):
- ndb_mgmd
- mysqld
Nodo 2 (192.168.1.104):
- ndbd
Nodo 3 (192.168.1.105):
- ndbd
Esto es, el nodo 1 será un Management Node + API Node y los dos restantes Data Nodes.
Lo primero de todo es descargarnos MySQL Cluster de http://dev.mysql.com/downloads/cluster/
La instalación es tan sencilla como descomprimir el fichero y copiar a nuestro PATH los ejecutables que necesitemos. Por lo tanto, llevaremos a /usr/bin/ los ejecutables ndbd, ndb_mgmd, ndb_mgm, mysqld, mysqld_safe.
Para tener un poco ordenadas las cosas, creamos la carpeta /etc/mysql-cluster/ donde alojaremos el fichero de configuración del cluster config.ini.
# cat /etc/mysql-cluster/config.ini [ndbd default] NoOfReplicas=2 DataDir=/var/lib/mysql-cluster DataMemory=512M IndexMemory=128M TransactionDeadlockDetectionTimeout=5000 MaxNoOfConcurrentOperations=100000 MaxNoOfLocalOperations=110000 [ndb_mgmd] Id=1 HostName=192.168.1.106 [ndbd] Id=5 HostName=192.168.1.104 [ndbd] Id=6 HostName=192.168.1.105 [mysqld] Id=7
Como vemos, en primer lugar indicamos los valores por defecto para todos los Data Nodes (ndbd). Por ejemplo se indican el número de replicas, donde se almacenarán los datos, la cantidad de memoria usada para almacenar datos e índices, número de operaciones concurrentes, etc. Estos valores no están ni calculados ni ajustados a la realidad, solamente son funcionales para este ejemplo y para trabajar con la base de datos employees. Cada caso y cada base de datos necesitará distintos valores que se deberán ajustar en función de la carga y cantidad de datos a almacenar.
El Management Node será el número 1 con la IP indicada, mientras que los Data Nodes serán los ID 5 y 6 con sus respectivas IPs. El API node (o en este caso más concreto Mysql Node) no tiene una ip asignada, por lo que se podría conectar desde cualquier equipo de la red.
Una vez que tenemos el fichero procedemos a arrancar el Management Node:
# ndb_mgmd -f /etc/mysql-cluster/config.ini 2010-07-25 19:30:06 [MgmtSrvr] INFO -- NDB Cluster Management Server. mysql-5.1.44 ndb-7.1.4b 2010-07-25 19:30:06 [MgmtSrvr] INFO -- Reading cluster configuration from '/etc/mysql-cluster/config.ini'
Arrancamos la consola y vemos que nodos tenemos arrancados:
# ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=5 (not connected, accepting connect from 192.168.1.104) id=6 (not connected, accepting connect from 192.168.1.105) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.1.106 (mysql-5.1.44 ndb-7.1.4) [mysqld(API)] 1 node(s) id=7 (not connected, accepting connect from any host)
Solo tenemos el Management Node en marcha. Vamos a proceder a arrancar los Data Nodes. Nos conectamos a cada nodo y ejecutamos:
# ndbd --connect-string=192.168.1.106 --initial -n 2010-07-25 19:31:38 [ndbd] INFO -- Configuration fetched from '192.168.1.106:1186', generation: 1
La opción --initial se usa cuando iniciamos por primera vez el Cluster para arrancar con el sistema de ficheros limpio. -n indica que el nodo no se autoarranque y --connect-string indica la IP del Management Node al que nos conectaremos.
Una vez que Data Node se conecta al Management Node, este último les entrega el fichero de configuración con los parametros necesarios para que se configuren. Ahora, desde la consola de administración podremos arrancar los dos Data Nodes:
ndb_mgm> 5 start Database node 5 is being started. ndb_mgm> Node 5: Start initiated (version 7.1.4) ndb_mgm> 6 start Database node 6 is being started. ndb_mgm> Node 6: Start initiated (version 7.1.4) ndb_mgm> show Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=5 @192.168.1.104 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master) id=6 @192.168.1.105 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.1.106 (mysql-5.1.44 ndb-7.1.4) [mysqld(API)] 1 node(s) id=7 @192.168.1.106 (mysql-5.1.44 ndb-7.1.4)
Ya tenemos los Data Nodes en marcha.
Para arrancar el Api Node únicamente hay que ejecutar el demonio mysqld:
# mysqld_safe --ndbcluster &
No es necesario indicarle la IP del Management Node ya que se encuentran en la misma máquina.
Listo! Si ahora nos conectamos con el cliente mysql a localhost y creamos una base de datos usando tablas ndbcluster, estas se almacenarán en nuestro recién creado Cluster :)



