miércoles, 22 de junio de 2016

MySQL Cluster

UNIVERSIDAD DE EL SALVADOR
FACULTAD MULTIDISCIPLINARIA DE OCCIDENTE 
DEPARTAMENTO DE INGENIERIA Y ARQUITECTURA

Cátedra:
Bases de Datos

Catedrático:
Ing. Alexander Calderón Peraza

Tema:
MySQL Cluster

Integrantes
Yanci Karina Nerio
Alexander Enrique Gonzalez
Carlos Eduardo Carcamo
Luis Eduardo Ramírez Ruiz




Introducción:
MySQL clúster es una tecnología que permite hacer 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. Cuando hablamos de clúster (raíz) se aplica a los conjuntos o conglomerados de ordenadores unidos entre sí normalmente por una red de alta velocidad y que se comportan como si fuesen una única computadora, la tecnología de clústeres ha evolucionado en apoyo de actividades que van desde aplicaciones de supercómputo y software para aplicaciones críticas, servidores web y comercio electrónico, hasta bases de datos de alto rendimiento, entre otros usos. Como todo sistema de clustering, está diseñado para no tener un sólo punto de falla, sino que cada componente tiene su propia porción de disco y memoria para trabajar. Bajo este esquema no se recomienda el uso de mecanismos de almacenamiento compartido como carpetas compartidas por red, sistemas de archivos de red, etc. 
En su implementación más sencilla, un clúster MySQL integra un servidor MySQL estándar y un motor de almacenamiento en memoria llamado NDB clúster, funcionando en un conjunto de una o más computadoras. Cada una de estas computadoras ejecutando uno o más procesos, que pueden consistir en procesos de MySQL server, nodos de almacenamiento de datos, servidor administrador del clúster, o programas especializados para acceder a los datos.


Las tablas de la base de datos se almacenan utilizando el motor NDB en los nodos de almacenamiento. La manera de acceder a los datos almacenados en el clúster es a través de cualquiera de los nodos MySQL. Los nodos de datos funcionan utilizando un esquema de espejado, permitiendo soportar sin impacto la caída de nodos individuales de datos dentro de cluster. La única consecuencia que tendría un suceso como la caída de un nodo de datos, es que un pequeño conjunto de transacciones relacionados al nodo caído serán abortadas. Estas transacciones deben cumplir con el esquema transaccional, tal y como si estuvieran trabajando directamente con un servidor no clusterizado de MySQL.

Guía de creación de un Clúster MySql

A continuación se configurara un clúster Mysql sobre un sistema operativo Basado en Debian 8 que puede ser Ubuntu, Linux mint o cualquier otro sistema compatible con debian, la estructura del clúster que se desarrolará es de 4 computadoras. Las computadoras se denominan con las letras de la A a la D y el rango de IPV4 desde 192.168.1.101 to 192.168.1.104.

La función de cada computadora.
  • A: Nodo Management (Management Nodes)
  • B & C: Nodos de datos (Data Nodes)
  • C: Nodo Sql (Sql Node) 
Nota: Muchos de los comandos que se ejecutan en la terminal deben de ser ejecutados con permisos de súper usuario.

Descargar MySql Cluster:
El MySql Cluster puede ser descargado del siguiente vínculo http://dev.mysql.com/downloads/cluster/, La versión que utilizaremos es la 7.4.11.


Instalación del Management Node
Instalación de ndb_mgmd y ndb_mgm: Procedemos con la instalación de ndb_mgmd y ndb_mgm, luego de haber efectuado la descarga del archivo mysql-cluster-gpl-7.4.11-linuxglibc2.5-x86_64.tar.gz

Paso 1: lo extraemos, para eso nos posicionamos en el directorio de descarga y ejecutamos en la terminal: 

# tar -zxvf mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64.tar.gz 


al extraerlo nos movemos dentro del directorio que resultante 

# cd mysql-cluster-gpl-7.4.11-linux-libc2.5-x86_64 

Luego copiamos los archivos ndb_mgm y ndb_mgmd 

# cp bin/ndb_mgm* /usr/local/bin

Paso 2: Otorgar permisos de ejecución a los archivos ndb_mgm y ndb_mgmd 

# cd /usr/local/bin 
# chmod +x ndb_mgm*

Configuración de Management Node
Para iniciar la configuración del management node procedemos a crear un archivo de configuración. 

# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster && nano config.ini

El contenido del archivo config.ini debe de contener lo siguiente:


Instalación de el Data Node

Instalar ndbd y ndbmtd 

Paso 1: 
Luego para poder instalar ndbd y ndbmtd, nos ubicamos en el directorio de descarga del archivo, y luego extraemos ndbd y ndbmtd. los movemos a /usr/local/bin 

# tar -zxvf mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64.tar.gz 
# cd mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64 
# cp bin/ndbd /usr/local/bin 

Paso 2: Hacer ejecutables a ndbd y ndbmtd. 

# cd /usr/local/bin 
# chmod +x ndb* 

Nota: El directorio de datos de cada Data node se ubica en /usr/local/mysql/data Este directorio es esencial sobretodo si se piensa configurar el Management Node, si no existe debe crearse. 

Configuración del Data Node

my.cnf es un archivo necesario para cada Nodo de datos, se ubica en /etc

# nano /etc/my.cnf 

El contenido de este archivo debe de verse de la siguiente manera:



Instalación de Nodo SQL

Instalar mysql server 

Paso 1: Revisar los archivos /etc/passwd y /etc/group para verificar si ya existe un grupo mysql y usuario mysql en el sistema. Si no existe crear un grupo de usuarios mysql y luego agregar el usuario mysql a dicho grupo.

# groupadd mysql 
# useradd -g mysql mysql

Paso 2: Descomprimir el archivo, y copiarlo al directorio /usr/local luego crear un enlace simbólico al directorio mysql.

# tar -zxvf mysql-cluster-gpl-7.3.7-linux-glibc2.5-x86_64.tar.gz 
# cp mysql-cluster* /usr/local/mysql-cluster-gpl-7.3.7-linuxglibc2.5-x86_64.tar.gz 
# ln -s /usr/local/ mysql-cluster-gpl-7.3.7-linux-glibc2.5- x86_64 /usr/local/mysql 

Paso 3: Cambiar la ubicación del directorio mysql y ejecutar el script para crear el sistema de base de datos.

# cd /usr/local/mysql 
# scripts/mysql_install_db --user=mysql 

Paso 4: Dar los permisos necesarios para el servidor MySQL y los directorios.

# chown -R root . 
# chown -R mysql data 
# chgrp -R mysql . 

Paso 5: Copiar el script de arranque de MySQL al directorio apropiado, para iniciar el servicio cuando el sistema operativo se arranque. 

# cp support-files/mysql.server /etc/init.d 
# chmod +x /etc/init.d/mysql.server
# update-rc.d mysql.server defaults

Configuración del nodo Sql

Para configurar el nodo sql, solamente tenemos que seguir los mismos pasos de configuración del nodo de datos(Data node). 

Iniciar Cluster Mysql

Una vez se haya configurado apropiadamente, el inicio de un proceso debería ser fácil de ejecutar. Notese que el nodo manejador (Management Node) debe iniciarse primero, seguido de los nodos de datos (Data nodes), y finalmente los nodos sql (Sql nodes.) Para el 

Management node: 

# /usr/local/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini 

Para cada Data node: 

# /usr/local/bin/ndbd 

Para cada Sql node: 

# /etc/init.d/mysql.server start 

Y eso es todo, una vez terminamos el proceso podemos usar ndb_mgm management client para ver si el cluster está corriendo correctamente y si todo va bien, deberíamos ver algo como eso:

shell> /usr/local/bin/ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> SHOW Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.0.30 (Version: 5.5.41-ndb-7.2.19, Nodegroup: 0, *) id=3 @192.168.0.40 (Version: 5.5.41-ndb-7.2.19, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.0.10 (Version: 5.5.41-ndb-7.2.19) [mysqld(API)] 1 node(s) id=4 @192.168.0.20 (Version: 5.5.41-ndb-7.2.19)

3 comentarios:

franklin Garcia dijo...

Muy buen contenido de Base de Datos

ammiel arturo marte dijo...

te dejo este link con un entrenamiento completo en mysql
https://thedevelopmentstages.com/entrenamiento-en-linea-mysql-y-mariadb/

ammiel arturo marte dijo...

entrenamiento mysql con videos gratis