¿Qué es un cluster?

En sentido genérico, un cluster es un conjunto de máquinas funcionando como unidad y trabajando juntas para tratar una única tarea, ahora bien, un MySQL Cluster se refiere a un grupo de máquinas trabajando juntas usando el motor de almacenamiento NDB (“Network Database”)  de MySQL para implementar almacenamiento de datos, recuperación y administración distribuida entre varias máquinas, lo que nos permite soportar una base de datos MySQL distribuída en una arquitectura de compartición nula usando almacenamiento en memoria.

Como mínimo se necesitan tres máquinas para la ejecución de un cluster, sin embargo, el número mínimo recomendado en MySQL Cluster es cuatro: una para el nodo de administración y otra para el de SQL, y dos para servir como nodos de almacenamiento. El propósito de los dos nodos de datos es proporcionar redundancia; el nodo de administración debe ejecutarse en una máquina separada para garantizar servicio de arbitración contínuo en caso que un nodo de datos falle.

Para que un clúster funcione como tal, no basta solo con conectar entre sí los ordenadores, sino que es necesario proveer un sistema de manejo del clúster, el cual se encargue de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento.

¿Cómo configuro mis máquinas para el cluster?

Se debe tener instalada alguna de las distribuciones de Linux en las máquinas, en mi caso tengo Ubuntu 8.04 y tener configurada una conexión de red entre las computadoras, para este ejemplo estoy usando un switch; las IP deben ser fijas tanto en el administrador como en los nodos, para ello se da click derecho en conexión de red cableada, entrar a la configuración manual he introducir la contraseña del administrador, en las propiedades de eth0 desactivar el modo itinerante y modificar la IP .

Instalación de paquetes

Desde el Gestor de Paquetes Synaptic se instalan los siguientes paquetes en la terminal Administrador y de la misma forma en los nodos:
  • mysql-server-5.0
  • mysql-client-5.0
  • mysql-admin

Sistema -> Administración -> Gestor de Paquetes Synaptic

marcar los paquetes para instalarlos:

Para los amantes de la consola los paquetes se instalan mediante comandos:

-> sudo apt-get install “más el nombre del paquete”

-> sudo apt-get install mysql-server-5.0

en la instalación de este paquete se solicita introducir una contraseña para el usuario root de MySQL:

Configuración del nodo Administrador

Debe crearse un fichero que se llame ndb_mgmd.cnf en la dirección /etc/mysql, usando el editor de texto gedit o cual sea que usen:

-> sudo gedit /etc/mysql/ndb_mgmd.cnf

dicho archivo debe llenarse con lo siguiente:

[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=80M # cantidad de memoria
IndexMemory=18M # cantidad de memoria
#Configuracion del Cluster
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
#En esta sección vamos a configurar el nodo administrativo del cluster
[NDB_MGMD]
HostName=192.168.1.6 #IP del nodo administrativo
[NDBD]
#Sección de los nodos de almacenamiento
#IP del primer nodo
HostName=192.168.1.7
DataDir=/var/lib/mysql-cluster
BackupDataDir=/var/lib/mysql-cluster/backup
DataMemory=128M
[NDBD]
#IP del segundo nodo
HostName=192.168.1.8
DataDir=/var/lib/mysql-cluster
BackupDataDir=/var/lib/mysql-cluster/backup
DataMemory=128M
#Por cada nodo debemos de incluir un [MYSQLD]
[MYSQLD]
[MYSQLD]


de la misma manera editar el archivo my.cnf (fichero de configuración que ya existe) y comentar la línea bind-address:

-> sudo gedit /etc/mysql/my.cnf

se guarda cada cambio realizado en los ficheros.

Configuración del nodo de almacenamiento

De igual forma se configura el nodo de almacenamiento abriendo el mismo archivo:

-> sudo gedit /etc/mysql/my.cnf

una vez que se haya abierto el archivo se busca la etiqueta [mysqld] y bajo ella escribir lo siguiente, que será la cedena de conección al motor de MySQL:

ndbcluster
ndb-connectstring=192.168.1.50 #IP del nodo administrador

dentro del mismo archivo ubicar la línea bind-address = 127.0.0.1 y comentarla agregándole al inicio un #

casi al final del archivo se encuentra la etiqueta [MYSQL_CLUSTER], descomentarla y sustituir la IP por default por la IP del administrador en la cadena de conexión:

hay que crear una carpeta donde se guarde toda la información del cluster y cambiarle el usuario y propietario a MySQL, usando los respectivos comandos para cada instrucción:

-> sudo mkdir /var/lib/mysql-cluster/backup
-> sudo chown mysql:mysql /var/lib/mysql-cluster

Reinicio de demonios

Una vez configurados todos los nodos se deben reiniciar los demonios en cada nodo empezando por el administrador:

-> sudo /etc/init.d/mysql-ndb-mgm restart


en los nodos de almacenamiento se deben reiniciar dos demonios:

-> sudo /etc/init.d/mysql restart

-> sudo /etc/init.d/mysql-ndb restart

Ahora que están ya configurados los nodos de almacenamiento en el nodo administrador revisar que la conexión entre ellos exista, para esto el administrador debe ejecutar los siguientes comandos:

-> ndb_mgm

-> show;

Comprobación del MySQL Cluster

Para acceder a MySQL se necesita el siguiente comando:

-> sudo mysql -u root -p

en el nodo administrador verificar las bases de datos existentes y crear una, para esta comprobación se crea una base de datos llamada ITT:

-> show databases;

-> create database ITT;

de igual manera en cada nodo de almacenamiento acceder a MySQL y crear una base de datos con el mismo nombre:

En el primer nodo de almacenamiento verificar la base de datos que se creó para comprobar que no tiene tablas aún y crearle una, para el ejemplo se llama informatica_alumnos:

-> use ITT;

-> show tables;

-> create table informatica_alumnos (matricula int (4), nombre varchar (20)) engine=ndbcluster;

en el segundo nodo de almacenamiento checar que se haya cumplido la replica e insertar un registro en la tabla:

-> show tables;

-> insert into informatica_alumnos values (‘0001’, ‘Gustavo’);

-> select * from informatica_alumnos;

Verificar que el registro se visualice también en el primer nodo e ingresar un nuevo registro:

-> select * from informatica_alumnos;

-> insert into informatica_alumnos values (‘2’, ‘Teresa’);

Finalmente comprobar que ese último registro se haya actualizado en el segundo nodo:

> select * from informatica_alumnos;

Con esto queda demostrado que el MySQL Cluster funciona correctamente.

Nota: si por alguna razón no queda a la primera y tienen que desinstalar los paquetes para volver a configurar, es recomendable que formateen, en mi caso tuve que recurrir a eso con dos nodos, porque ni con líneas de comando me ha funcionado.

-> sudo apt-get remove “nombre del paquete”

-> sudo apt-get purgue “nombre del paquete”

-> sudo apt-get clean “nombre del paquete”

Se está borrando el paquete, los archivos de configuración y borrando del disco los archivos descargados para la instalación; de esta forma queda listo para volver a instalar los paquetes.

Vídeo de MySQl Cluster

Parte 1

httpv://www.youtube.com/watch?v=fnQ4wgF_Yh8&feature=autofb

Parte 2

httpv://www.youtube.com/watch?v=4PySqcKxUWA&feature=autofb

Agradezco a mis compañeros de clase Irvin Barrios, Javier Torres, Arturo Ravanales y Delfín Gómez por el apoyo, en especial a Delfín Gómez, voz en los vídeos.

Powered By DT Author Box

Written by admin

MySQL Cluster
Tagged on:                                                     

17 thoughts on “MySQL Cluster

Leave a Reply

Follow

Get every new post delivered to your Inbox

Join other followers:

%d bloggers like this: