Añadir nodos online a nuestro MySQL Cluster
A partir de la versión 7.0 y 7.1 se han añadido nuevas funcionalidades a MySQL Cluster que aumentan tanto la escalabilidad como el rendimiento de la base de datos. La nueva mejora que hoy voy a tratar aquí es la posibilidad de añadir nuevos nodos de almacenamiento a nuestro cluster en caliente sin necesidad de hacer una parada de mantenimiento.
A la hora de escalar nuestro cluster hay que tener en cuenta siempre el número de réplicas (NoOfReplicas) y el número de nodos que queremos. Debemos recordar que dicho número debe ser divisible y al mismo tiempo que tanto uno como otro tienen un límite. En el ejemplo que voy a mostrar tendremos la base de datos con dos réplicas y dos nodos y lo pasaremos a 2 réplicas y 4 nodos. De esta forma, pasaremos de tener un único Node Group (2/2=1) a tener dos Node Groups (4/2=2).
El primer paso es configurar los Management Node. Para ello añadimos los dos nuevos ndbd a los ficheros config.ini:
[ndbd] Id = 1 Hostname = 192.168.1.10 [ndbd] Id = 2 Hostname = 192.168.1.11 [ndbd] Id = 3 Hostname = 192.168.1.12 [ndbd] Id = 4 Hostname = 192.168.1.13
A continuación reiniciamos todos los Management Nodes para que lean el nuevo fichero de configuración y una vez en marcha haremos lo mismo con los Data Nodes que ya están en funcionamiento:
# db_mgmd -f config.ini –reload ndb_mgm> 1 RESTART ndb_mgm> 2 RESTART
De la misma forma, reiniciamos nuestros SQL Nodes con el típico /etc/init.d/mysqld restart
Iniciamos los dos nuevos nodos con --initial:
3 #> ndbd --initial 4 #> ndbd --initial
Desde la consola de administración creamos el nuevo Node Group incluyendo los nuevos nodos 3 y 4:
ndb_mgm> CREATE NODEGROUP 3,4
Desde un SQL Node lanzamos el reparticionado de cada tabla para que los datos y los índices se repartan entre los 4 nodos existentes.
mysql> ALTER ONLINE TABLE productos REORGANIZE PARTITION; mysql> ALTER ONLINE TABLE clientes REORGANIZE PARTITION; mysql> ALTER ONLINE TABLE ventas REORGANIZE PARTITION;
Una vez hecho, se recomienda un OPTIMIZE TABLE en las tablas para "desfragmentar" los dos nodos originales.
Listo, hemos pasado de una infraestructura de dos nodos a una de cuatro sin ninguna parada de servicio. Nadie se ha enterado y hemos aumentado el throughput y la disponibilidad de nuestro cluster.
Comments
- james jara on March 12, 2012, at 07:56 PM







