Para empezar hay dos cosas que debemos intentar tener claras ¿Qué es un clúster y que prestaciones puede ofrecer? Un cluster agrupa uno o varios sectores de un disco, que se encuentran consecutivos o adyacentes y que puede o debe ser utiliado para los siguientes objetivos:
- Alta disponibilidad (High Availability)
- Alto rendimiento (High Performance)
- Equilibrio de la carga (Load Balancing)
- Escalabilidad. (Scalability)
Un clúster en el caso de MySQL es una tecnología que nos permitirá optimizar el rendimiento de nuestras bases de datos con un hardware no muy costoso y con unos pocos requerimientos de software. Un clúster MySQL integra dos cosas: un servidor MySQL y un motor de almacenamiento en memoria denominado NDB clúster que nos permite funcionar en un conjunto de pcs.
Según este pequeño esquema las tablas de la BBDD se integran usando el motor NDB y se podría acceder a los datos almacenados a través de cualquiera de sus nodos, estos nodos funcionarían como espejos unos de otros, lo que nos permite que la caída de uno de los nodos de datos no afecte al conjunto de ordenadores.
Los principales procesos que nos serán necesarios para hacer funcionar un clúster de MySQL son: MySQLD, NDB_MGMD, NDBD.
Claves foránes en MySQL
A partir de la versión 4.0, MySQL agregó InnoDB (un gran exito) a la lista de tipos de tablas soportadas por MySQL, para los que no saben demasiado sobre este tipo de tablas de almacenamiento de datos decir que MyISAM es el utilizado por defecto (aunque no permite claves foráneas y nos puede llevar algún quebradero de cabeza usar SQL sin saber esto) en la mayoría de los casos pero no por ello el que más se adapte a las necesidades de nuestra aplicación. Puesto que entre otras cosas no permite claves foráneas.