Академический Документы
Профессиональный Документы
Культура Документы
0. ndice de contenidos.
1. Entorno.
2. Introduccin.
3. Configuramos el MGM.
5. Probamos el cluster.
6. Conclusiones.
1. Entorno
Hardware: Porttil Mac Book Pro 17 (2,6 Ghz Intel Core i7, 8 GB DDR3)
MySQL 5.1
MySQL Cluster
2. Introduccin
A veces nos encontramos en proyectos donde los entornos de produccin requieren de un sistema
que garantice la alta disponibilidad. Una de las soluciones para conseguir esto es montar la base
de datos en un clster de tal forma que no haya ningn punto dbil en el sistema y si se cae un
nodo que el sistema no deje de dar servicio.
En este tutorial vamos a ver como conseguirlo con la solucin MySQL Cluster. Para seguir el
ejemplo antes tenemos que tener claros los siguientes conceptos:
Motor de almacenamiento NDB: A partir de la versin 5.1 MySQL incorpora este nuevo motor de
almacenamiento especfico para tablas que se encuentran en cluster.
Nodo de administracin (MGM): Es el nodo que se va a encargar de manejar, controlar y coordinar
al resto de nodos del cluster. Debido a esto tiene que ser el primero en iniciarse.
Nodo de datos (NDB): Este tipo de nodo almacena los datos del cluster de forma distribuida. De tal
forma que si uno de ellos cae, el resto de nodos pueden seguir sirviendo la informacin.
Nodo SQL (MYSQLD): Este tipo de nodo nos permite acceder a los datos del cluster.
2 nodos de datos (NDB) que a su vez van a ser nodos SQL (MYSQLD)
3. Configuramos el MGM
Lo primero que tenemos que hacer es configurar el nodo de administracin. Para ello arrancamos
una de las mquinas virtuales e instalamos MySQL con el soporte de NDBCluster. En Ubuntu es tan
sencillo como ejecutar:
Esto hace que se instale MySQL Cluster y MySQL Server y Client como dependencias en la versin
5.1.
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=256M
IndexMemory=18M
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
[NDB_MGMD]
HostName=192.168.1.10
[NDBD]
HostName=192.168.1.11
DataDir=/var/lib/mysql-cluster
[NDBD]
HostName=192.168.1.12
DataDir=/var/lib/mysql-cluster
[MYSQLD]
HostName=192.168.1.11
[MYSQLD]
HostName=192.168.1.12
[MYSQLD]
HostName=192.168.1.13
Para este caso estamos determinando que nuestro cluster se va a componer de dos replicas de
datos que estn descritas en las secciones [NDBD], donde indicamos cual es la IP de la mquina y
donde se van a almacenar los datos del cluster en esa mquina. Luego en las secciones [MYSQLD]
determinamos la direccin IP de las mquinas que van a poder acceder a los datos del cluster. En
este caso las mquinas NDB tambin adoptaran el rol de nodo SQL y solo una de ellas tendr
exclusivamente este rol. Como se vea en la figura de la arquitectura propuesta.
Nota muy importante: El contenido de este fichero queda cacheado por lo que nos puede pasar
que lo modifiquemos, reiniciemos el servicio y los cambios no se vean reflejados. Para evitar esto
antes de reiniciar el servicio debemos eliminar el fichero cacheado con esta sentencia:
sudo rm /usr/mysql-cluster/ndb_1_config.bin.1
Vamos a describir los pasos para uno de ellos, posteriormente habra que repetir estos pasos para
el resto de nodos.
ndbcluster
ndb-connectstring=192.168.1.10
ndb-connectstring=192.168.1.10
Esta configuracin nos sirve por un lado para habilitar el soporte del motor de almacenamiento
NDBCluster y por otro para saber como conectar con el MGM.
Ahora reiniciamos primero el nodo MGM con la sentencia:
En cada caso tenemos que ver que la salida no muestra ningn tipo de error.
Con esto ya estara configurado y arrancado nuestro cluster, ahora vamos a comprobar el estado a
travs del nodo MGM, ejecutando:
ndb_mgm
Con lo que el sistema mostrar una pantalla informando de que nodos del cluster estn
conectados. Separndolos en los distintos roles: MGM, NDB y MYSQLD
Hasta que este informe no muestre que todos los nodos estn conectados no podremos probar
nuestro cluster.
Los principales motivos por lo que un nodo puede salir como no conectado una vez se ha
reiniciado su servicio, son que la variable connectstring no est apuntando al nodo MGM o que los
servicios no se han reiniciado apropiadamente.
El que alguno de los nodos SQL no salga conectado es de los problemas ms comunes que se
pueden dar. Si nos aseguramos de que la configuracin est bien y por mas que reiniciamos el
servicio mysql no conseguimos que se conecte al MGM, la mejor solucin es reiniciar
completamente la mquina que este dando el problema. Esto lo resuelve en el 99% de los casos.
5. Probamos el cluster
Una vez que tenemos el cluster perfectamente configurado y arrancados todos los nodos, vamos a
crear una base de datos. Para ello seleccionamos cualquiera de los nodos que tengan un rol de
MYSQLD. Nos logamos como root:
mysql -u root -p
Y proporcionamos la contrasea que hayamos definido para el root. Ahora en la consola de MySQL
creamos nuestro esquema cluster_test con la sentencia:
Y ahora creamos nuestra primera tabla sin olvidar utilizar el motor de almacenamiento
NDBCluster. Vamos a crear una sencillita para este ejemplo:
Ahora nos logamos en la consola MySQL de cualquier otro nodo con rol MYSQLD en el cluster y
realizamos:
USE table_test;
Vemos que sin hacer nada el schema table_test ya existe y ahora si ejecutamos la sentencia:
Veremos que el sistema nos devuelve los datos anteriormente introducidos. Esto es porque los
datos del cluster se almacenan en los nodos con rol NDB, y los nodos con rol MYSQLD nos
permiten acceder y trabajar sobre ellos.