Esta es la primera parte de una serie de artículos en los que aprenderemos a montar, configurar y gestionar un cluster MySQL básico. En este caso utilizaremos dos nodos de datos, dos nodos SQL y un nodo de gestión.
Hay varias formas de instalar cada uno de los nodos, ya sea con gestores de paquetes de las distribuciones (apt, yum, .deb, rpm), compilando desde el código fuente o con los paquetes binarios. En este caso vamos a utilizar los paquetes binarios por su sencillez de instalación, cada cual puede escoger la forma que estime oportuna y según sus necesidades.
No voy a detenerme a explicar como funciona un cluster MySQL en profundidad, podéis ver toda la documentación del sitio web de MySQL donde está todo perféctamente explicado (esta guía está basada en esa documentación). Simplemente explicaré las partes (nodos) que van a componer este cluster.
- Nodos de datos: Son los nodos encargados de almacenar los datos del cluster. Cada nodo será una máquina física independiente. Tal y como indica la documentación de MySQL hay tantos nodos de datos como réplicas, multiplicado por el número de fragmentos. Por ejemplo, con dos réplicas, cada uno teniendo dos fragmentos, necesita cuatro nodos de datos. Es recomendable revisar bien la documentación oficial de MySQL para entender el concepto y las diferentes configuraciones posibles.
- Nodos SQL: Son los nodos que serán usados para acceder a los datos que almacenan los nodos de datos, básicamente es un servidor MySQL estandar pero que utiliza el motor de almacenamiento NDBCLUSTER.
- Nodo de gestión: También llamado nodo MGM, es el encargado de gestionar todos los nodos del cluster, entre sus funciones encontramos las de arrancar y parar nodos, aplicar configuraciones, efectuar copias de seguridad, etc.
Instalación de nodos de datos y SQL
La instalación de un nodo de datos y un nodo SQL es igual, lo único que cambia es a posteriori la configuración y modo de arranque de cada uno de ellos (lo explicaré en el siguiente artículo) .Podéis descargar el paquete binario al igual que los demás a través de este enlace:
http://dev.mysql.com/downloads/cluster/
En este caso «Generic Linux (glibc 2.3) (x86, 32-bit), Compressed TAR Archive»:
# wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/mysql-cluster-gpl-7.1.3-linux-i686-glibc23.tar.gz/from/http://gd.tuwien.ac.at/db/mysql/
Procedemos a crear el usuario y grupo de sistema para ejecutar MySQL:
# groupadd mysql # useradd -g mysql mysql
Descomprimimos el paquete y posteriormente lo renombramos a «mysql», ubicandolo en /usr/local/:
# tar -C /usr/local -xzvf mysql-cluster-gpl-7.0.15-linux-i686-glibc23.tar.gz # mv /usr/local/mysql-cluster-gpl-7.0.15-linux-i686-glibc23.tar.gz /usr/local/mysql
Nos dirigimos a la ruta correspondiente y ejecutamos el script preparado para crear las bases de datos de sistema:
# cd /usr/local/mysql # scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql
Aplicamos los permisos correspondientes a las carpetas MySQL:
# cd /usr/local/mysql # chown -R root . # chown -R mysql data # chgrp -R mysql .
Nota: /usr/local/mysql/data es la ruta que utilizaremos en todos los nodos para guardar los datos
Finalmente copiamos el script de arranque de MySQL a init.d, le permitimos ejecución y lo añadimos al runlevel correspondiente:
# cp support-files/mysql.server /etc/rc.d/init.d/ # chmod +x /etc/init.d/mysql.server # chkconfig --add mysql.server
Nota: chkconfig solo funcionará en sistemas Red-Hat y derivados.
Bien, ya tenemos el nodo primer nodo de datos ó SQL instalado. Habría que repetir esta tarea en todas las máquinas que quisieramos utilizar como nodo de datos o nodo SQL.
MANAGEMENT ndb_mgm
La instalación del nodo de gestión es extremadamente sencilla. Tenemos que descargar el mismo paquete que para los nodos de datos y SQL, descomprimirlo en una ruta temporal y copiar los ejecutables correspondientes:
# cd mysql-5.1.44-ndb-7.0.15-linux-i686-glibc23 # cp bin/ndb_mgm* /usr/local/bin # cd /usr/local/bin # chmod +x ndb_mgm*
En el próximo artículo comenzaremos a tocar las configuraciones de los nodos de datos, gestión y mysqld. Entonces podremos arrancar el cluster y empezar a hacer las pruebas correspondientes.