jueves, 11 de junio de 2015

MySQL Clúster





INTRODUCCIÓN

En este reporte hablaremos de los pasos necesarios para realizar una práctica, como su nombre lo dice, acerca del clúster. Pero antes que nada tenemos que tener claro a que se refiere el término clúster 

MySQL Clúster (del inglés cluster, "grupo" o "racimo"), es una tecnología que permite el clustering de bases de datos en memoria en un ambiente de no compartición. La arquitectura de no compartición permite que el sistema gestor de base de datos (SGBD) funcione utilizando hardware no muy costoso y con requerimientos mínimos tanto de software como de hardware.

Como todo sistema de clustering, está diseñado para no tener un sólo punto de falla, cada componente tiene su propia porción de disco y memoria para trabajar y se aplica a los conjuntos o conglomerados de computadoras construidas mediante la utilización de hardware común y que se comportan como si fueran una única computadora.

DESARROLLO

Materiales:
Para esta práctica vamos a utilizar:

·         4 computadoras
·         1 router
·         Software mysql-cluster
·         Software mysql


Configuración general:

Los pasos que a continuación se mencionan, las realizan tanto el nodo administrador como en los nodos de datos.

De la pagina http://dev.mysql.com/downloads/cluster/, descargamos el mysql-cluster-gpl-noinstall-7.1.34-win32 (para equipos de 32 bits) y el mysql-cluster-gpl-noinstall-7.1.34-win64 (para equipos de 64 bits).

Una vez realizado lo anterior procedemos a:
Ø  Desactivar los servicios del Firewall y Antivirus.
Ø  Creamos una red entre las 4 computadoras.
Ø  Establecemos las direcciones IP (fijas) y verificamos que exista conexión entre ellas.
ü  Nodo administrador à 192.168.1.50
ü  Nodo de datos A à 192.168.1.51
ü  Nodo de datos B à 192.168.1.52
ü  Nodo de datos C à 192.168.1.53

NOTA:
Nodo de administración (Nodo MGM)
Este tipo de nodo cumple con la función de manejar, controlar y coordinar los otros nodos dentro del clúster. Implementa funciones de configuración de datos, Iniciar o detener otros nodos dentro del clúster, ejecutar respaldos, u otras tareas administrativas. Debido a que controla y configura el resto de los nodos, debe iniciarse antes que cualquier otro tipo de nodos utilizando el comando ndb_mgmd.

Nodo de datos
Este tipo de nodo almacena los datos. La cantidad de nodos de este tipo dentro del clúster es igual a la cantidad de réplicas por la cantidad de fragmentos. Es decir, si se manejan 4 réplicas de los datos con 2 fragmentos, se necesitarían 8 nodos de datos. No es necesario manejar más de una réplica. Este tipo de nodo se levanta utilizando el comando ndbd.


Ø  El siguiente paso es Detener el servicio de MySQL56 en Servicios:
 
Ø  Ahora descomprimimos el archivo .zip que descargamos de la página mencionada anteriormente (en el disco local C y lo renombramos como mysql).
 
  Ø  En el disco local (C:) crearemos la  carpeta con el siguiente nombre:
ü  my_cluster
Ø  Dentro de la carpeta my_cluster creamos tres carpetas con los siguientes nombres:
ü  conf
ü  mysqld_data
ü  ndb_data 
 
Ø  Y en la carpeta mysqld_data creamos dos carpetas con los siguientes nombres:
ü  mysql
ü  ndbinfo
 
Nodo administrador:
v  Dentro de la carpeta conf creamos un archivo al cual llamamos config con la extensión .ini, dicho documento contendrá lo siguiente:

 
Los nodos de datos se definen bajo el bloque [ndbd], se debe definir también un Id para cada uno de los nodos.
Nota:
En config.ini se agregan los bloques [mysqld] dependiendo del número de nodos sql que se quieran levantar. 



v Ahora procedemos a levantar el nodo administrador, para lo cual abrimos una terminal cmd como administrador y escribimos los siguientes comandos:

 
 
v  Ejecutamos y nos aparece la siguiente línea:
 
v  Si nos aparece la línea antes mencionada dejamos la ventana del cmd abierta y abrimos otra ventana cmd (ejecutándola como administrador) y escribimos los siguientes comandos:


 
v  Por el momento dejamos el nodo administrador y seguimos con los nodos de datos.
Nodo de datos:
MySQLD necesita la base de datos de Mysql con la configuración esencial de datos por lo cual procederemos a instalar la base de datos.
v  Abrimos una terminal cmd como administrador y escribimos los siguientes comandos:
 
        Nota: Esta instrucción copiara 69 archivos: 
 
v  Dentro de la misma terminal escribimos el siguiente comando:



 
Nota: Esta instrucción copiara 46 archivos:

 
v  Realizado lo anterior, en la carpeta conf que está en my_cluster creamos un archivo con el nombre my con la extensión .cnf, dicho documento contendrá lo siguiente:
     Nota: el número de port cambiara según el número de nodo de datos.
      Nodo de datos A:
     Nodo de datos B:
 
Nodo de datos C: 
 

 
v  Realizado lo anterior procedemos a conectar los nodos  de datos con el nodo administrador mediante el siguiente comando (en la misma terminal cmd):

Nota: solo se muestran imágenes de un nodo a manera de ejemplo, pero los demás nodos se configuran de la misma manera.

 
Como se puede observar la conexión ha sido exitosa, cabe señalar que en la conexión de los nodos de datos cambiara el nodeid=?.
v  Por el momento dejamos la pantalla de nodo de datos (sin cerrarla).
 
Nodo administrador:
v  Regresando al nodo administrador volvemos a ingresar el comando show en la consola cmd del nodo administrador, y como podemos ver ya tenemos los 3 nodos de datos conectados.
v  Desde el nodo de datos se procede a levantar el api.
 
    Nodo de datos:
v  Abrimos una nueva consola mcd (como administrador) y escribimos los siguientes comandos para levantar el api de los nodos de datos:

 

v  Con los pasos anteriores quedan levantados los nodos.

    Nodo administrador:
v  Realizado lo anterior nuevamente ingresamos show en el nodo administrador para verificar que han sido levantadas las apis. 
 
Con todos los pasos mencionados anteriormente el cluster de MySQL a quedado configurado correctamente, y solo resta hacer las pruebas pertinentes para ver su funcionamiento.
 
PRUEBAS
 
v  En todos los nodos de datos hay que inicializar el MySQL, para esto se abre una nueva consola cmd en los nodos de datos y escribimos los siguientes comandos:
 

v  Con el paso anterior se ha iniciado correctamente MySQL

v  Con el comando show databases verificamos las bases de datos que contiene MySQL: 

v  Ahora vamos a crear una base de datos que llamaremos “cluster” con el comando create database ejemplo;

v  Verificamos que se halla creado la base de datos con el comando show databases 

v  Ahora ponemos en uso la base de datos con el comando use cluster; y mediante el comando show tables; podemos ver las tablas que contiene nuestra base de datos: 
 
v  Con el comando select * from cluster; podemos visualizar los datos ingresados por otro nodo:
Con la realización del clúster cualquier nodo de datos que esté conectado podrá ver las bases de datos, crearlas, eliminarlas; además eliminar y modificar las tablas, así como introducir datos a las tablas, eliminar datos, etc., los cuales se verán reflejados en los demás nodos del clúster.
 
CONCLUSIONES
MySQL Clúster es una base de datos de alta disponibilidad usando una arquitectura basada en no compartir nada y una interfaz SQL estándar. 
MySQL Clúster es tolerante a fallos de varios de los nodos de almacenamiento y se reconfigura en el aire para enmascarar los fallos. Las capacidades de auto curación, como distribución de los datos y particionamiento de la aplicación, dan como resultado un simple modelo de programación que permite a los desarrolladores incluir fácilmente en sus aplicaciones sin código complejos de bajo nivel.
Al realizar este proyecto adquirimos nuevos conocimientos y situamos los que ya teníamos para realizarla, lo difícil de este proyecto fue levantar los nodos puesto que por momentos fallaba la conexión y por lo tanto  tuvimos algunos problemas con las computadoras.
Como lo hicimos en los proyectos anteriores, trabajamos en equipo lo cual  es una combinación de comunicación, coordinación y el equilibrio de los aportes de cada miembro. Hay diversas ventajas de usar el trabajo en equipo. Estos beneficios incluyen la velocidad, la satisfacción, el apoyo, la eficiencia, la innovación, la unidad y la creatividad.
Además, estos beneficios del trabajo en equipo pueden ayudar a alcanzar y lograr los objetivos con mayor eficacia. Y gracias a ello logramos el objetivo principal que es la realización del clúster.   
 
FUENTES DE INFORMACIÓN
Ø  MySQL. (2015). Capítulo 18 MySQL Cluster NDB 7.3 y MySQL Cluster NDB 7.4. 10 de Junio de 2015, de ORACLE Sitio web: http://dev.mysql.com/doc/en/mysql-cluster.html
Ø  Desconocido. (2014). MySQL Cluster. 10 de Junio de 2015, de WIKIPEDIA Sitio web: http://es.wikipedia.org/wiki/MySQL_Cluster
Ø  Miguel Ángel Nieto. (2012). Introducción a MySQL Cluster . 10 de Junio de 2015, de Atom Feed Sitio web: http://miguelangelnieto.net/?action=view&url=introducci%C3%B3n-a-mysql-cluster
 

No hay comentarios.:

Publicar un comentario