Translate

sábado, 17 de mayo de 2014

MySQL Cluster 7 en Ubuntu 14.04


Para seguir la actividad antes tenemos que tener claros los siguientes conceptos:


  • Motor de almacenamiento NDB: A partir de la versión 5.1 MySQL incorpora este nuevo motor de almacenamiento específico para tablas que se encuentran en cluster.
  • Nodo de administración (MGM): Es el nodo que se va a encargar de manejar, controlar y coordinar al resto de nodos del cluster. Debido a esto tiene que ser el primero en iniciarse.
  • Nodo de datos (NDB): Este tipo de nodo almacena los datos del cluster de forma distribuida. De tal forma que si uno de ellos cae, el resto de nodos pueden seguir sirviendo la información.
  • Nodo SQL (MYSQLD): Este tipo de nodo nos permite acceder a los datos del cluster.

La actividad la vamos a basar en la siguiente arquitectura:

  • 1 nodo de administración (MGM)
  • 2 nodos de datos (NDB) que a su vez van a ser nodos SQL (MYSQLD)
  • 1 nodo SQL (MYSQLD)


Gráficamente está sería la arquitectura:


La arquitectura debe montarla utilizando 4 maquinas virtuales con Ubuntu Server 14.04 y MySQL Cluster versión 7.3.5.





      I.         Instalación sistema Operativo

  1. Instalar emulador de maquina Virtual (VmWare Player, Virtual PC, QEMU, etc..)
  2. Descargar e instalar sistema operativo UbuntuServer 14.04
  3.  Instale servidor ssh (sudo apt-get install ssh)
  4. Descargue mysql cluster  para Ubuntu desde el sitio web de mysql.
  5. Utilizando cliente ssh (ej, Filezilla) copie el archivo a la maquina virtual.
  6.  Instale MySQL Cluster en la maquina (ej: sudo dpkg –i mysql-cluster-gpl-7.3.5-debian6.0-i686.deb)
  7. Establezca la dirección IP fija correspondiente (sudo nano /etc/network/interfaces)

  II.         Configuración de MySQL Cluster

A.    MGM

  •  Cree el directorio “/var/lib/mysql-cluster” con permisos de escritura para todos
                    sudo mkdir /var/lib/mysql-cluster
                    sudo chmod 777 /var/lib/mysql-cluster
  •  Crear el archivo “/opt/mysql/server-5.6/ndb_mgmd.cnf” con la siguiente información:

[NDBD DEFAULT] 
NoOfReplicas=2 
DataMemory=256M 
IndexMemory=18M 

[MYSQLD DEFAULT]  
[NDB_MGMD DEFAULT]  
[TCP DEFAULT]
 
[NDB_MGMD] 
NodeId=1
HostName=192.168.1.10

[NDBD]
NodeId=2 
HostName=192.168.1.11 
DataDir=/var/lib/mysql-cluster 

[NDBD]
NodeId=3 
HostName=192.168.1.12 
DataDir=/var/lib/mysql-cluster 

[MYSQLD] 
HostName=192.168.1.11 
[MYSQLD] 
HostName=192.168.1.12
[MYSQLD] 
HostName=192.168.1.13


  • Ingrese a la carpeta /opt/mysql/server-5.6/ y ejecute el siguiente comando para iniciar y configurar el servidor de Administración:
./bin/ndb_mgmd --config-file= ndb_mgmd.cnf –-ndb-nodeid=1

  •      Ahora se confirmará si el servidor esta corriendo.  Ejecute el comando:
./bin/ndb_mgm
ndb_mgm>SHOW



B.    Nodo NDB



1.     Mantenga encendido el servidor MGM, así cuando el nodo NDB se inicie, se registrará automáticamente en el servidor de Administración

2.     Cree otra maquina virtual, de acuerdo al instructivo inicial. No olvide configurar la IP correspondiente.


3.     Cree el directorio “/var/lib/mysql-cluster”  y “/tmp/mysql-cluster “ con permisos de escritura para todos.

4.     Cree el directorio “/etc/mysql” y cree un archivo llamado “my.cnf” en la carpeta recién creada, con el siguiente contenido:
# my.cnf contenido
[client]
port=3306
socket=/tmp/mysql-cluster

[mysqld]
port=3306
socket=/tmp/mysql-cluster
ndbcluster
ndb-connectstring=192.168.1.10  #Direccion IP de MGM

[mysql_cluster]
ndb-connectstring=192.168.1.10  #Direccion IP de MGM

5.     Ingrese a la carpeta /opt/mysql/server-5.6/ y ejecute el siguiente comando para iniciar el servicio.
sudo ./bin/ndbd

6.     Ejecute el paso 4 del servidor MGM y compruebe que el nodo se ha conectado exitosamente.



7.     Debe iniciar todos los Nodos de datos para que estos se sincronicen por primera vez, la palabra “starting” desaparecerá del nodo indicando que ya se configuraron. Ahora es posible seguir con la instalación de los nodos SQL.


C.     Nodo SQL



1.     Mantenga encendido el servidor MGM y Nodos NDB, así cuando el nodo SQL se inicie, se registrará automáticamente en el servidor de Administración.
2.     En el paso 4 del NODO NDB fue creado el archivo de configuración inicial que utilizara el nodo SQL.
3.     Cree el usuario “mysql”
sudo useradd mysql

4.     Descargue e instale el siguiente paquete desde internet
sudo apt-get install libaio1
5.     Una vez instalado el paquete anterior, se ejecutare un script para instalar las tablas iniciales.
cd / opt/mysql/server-5.6/
sudo ./scripts/mysql_install_db --user=mysql

6.     Ahora como root se deben establecer los permisos de acceso al usuario de MYSQL Server en la carpeta de instalación de mysql-cluster .
chown -R root .
chown -R mysql data
chgrp -R mysql .

7.     Ejecute mysql.server para iniciar una instancia de SQL.
cd /opt/mysql/server-5.6/
./support-files/mysql.server start

8.     Ejecute el paso 4 del servidor MGM y compruebe que el nodo se ha conectado exitosamente.

D.    Inicialización Base de Datos



1.     Primero debe acceder a la base de datos como root.
           cd / opt/mysql/server-5.6/
           ./bin/mysql -u root

2.     Una vez logeados, se verificara los usuarios actuales en la Base de Datos
mysql> SELECT User, Host, Password FROM mysql.user;

3.     Es necesario establecer una password para el usuario root, para ello ejecute los siguientes comandos
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('myclave');
SET PASSWORD FOR 'root'@'ubuntu' = PASSWORD('myclave');
SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('myclave');

4.     Para poder conectarse remotamente desde cualquier terminal, se debe crear un nuevo usuario root.
CREATE USER 'root'@'%' IDENTIFIED BY 'myclave';

5.     Ahora repita el paso dos y confirme que el nuevo host para root se ha creado y que las contraseñas fueron actualizadas.


6.     Se debe dar permisos de escritura y lectura al usuario ‘root’@’%’
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*23AE8... (Ver imagen anterior)' WITH GRANT OPTION;



   III.         Pruebas de MySQL Cluster

 

Para realizar pruebas en la base de datos MySQL, puede descargar el software HeidiSQL o el que mas le guste.

Las pruebas a realizar son las siguientes:

1.     Utilizando la cuenta de usuario root, conéctese a uno de los servidores SQL (192.168.1.11) y cree una tabla con el nombre ‘prueba’.

2.     Utilizando la cuenta de usuario root, conéctese a otro de los servidores SQL (192.168.1.13 y 192.168.1.12) y revise que la tabla ‘prueba’ exista.

3.  Apague la maquina Virtual con la IP 192.168.1.11 y verifique con el paso 4 de configuración del nodo MGM.

4.     Pruebe que la información en la base de datos aún es accesible, utilizando el paso 2.

5.     Encienda nuevamente la maquina virtual apagada e inicie los servicios, verifique con el paso 4 de configuración del nodo MGM.

6.     Repita el paso 4.

14 comentarios:

Unknown dijo...

Hola, estoy siguiendo paso a paso el tutorial, y lo tengo casi. He instalado los nodos MGM, NDB1, NDB2 y SQL. Cuando hago un Show en MGM me aparecen los dos nodos NDB1 y 2, y el SQL, pero no me aparecen los nodos NDB1 y 2 como nodos SQL. Solo me puedo conectar a un nodo SQL, ¿qué debo hacer en los nodos NDB1 y NDB2 para que sean SQL también?
Gracias.

Unknown dijo...

Muchas gracias llevo dias intentando y este es el mejor manual que he encontrado.

Otra vez muchas gracias.

Edu dijo...

Hola Jaume:
Repite los pasos del apartado SQL en los nodos NDB1 y NDB2 y con eso ya lo tienes.

Saludos

Unknown dijo...

Hola, tengo un par de dudas ya que no me salen, estoy en ubuntu 15.04 server, me descargo el cluster (mysql-cluster-gpl-7.4.6-debian7-x86_64.deb) lo instalo y cuando hago el show en mgm no me sale nada, sigo con el NDB 1 no se conecta mientras que sí hace ping. Utilizo las mismas IP que tú.

Edu dijo...

Hola Javier:

¿has realizado correctamente éste paso?

Ingrese a la carpeta /opt/mysql/server-5.6/ y ejecute el siguiente comando para iniciar y configurar el servidor de Administración:
./bin/ndb_mgmd --config-file= ndb_mgmd.cnf –-ndb-nodeid=1


si lo has realizado, intenta volver a ejecutar la orden ./bin/ndb_mgmd sin las opciones.

Saldos

Unknown dijo...

Hola Edu, he configurado correctamente el Nodo con la ip 192.168.1.11, y 192.168.1.12 son Nodos NDB y cuando voy a instalar el Nodo SQL ejecuto el comando ./support-files/mysql.server start y me aparece the server quit without updating pid file (/opt/mysql/server-5.6/data/Ubuntu.pid)
¿Sabes por qué aparece eso?

Unknown dijo...
Este comentario ha sido eliminado por el autor.
Unknown dijo...

Hola Edu,

he realizado la configuración siguiendo todos los pasos de tu manual. El primer nodo NDBD se me conectó correctamente pero cuando fui a conectar el segundo me dio un error de allocate nodeid y fallaba la conexión con el socket.

Después de este error me petó el primer ndbd justo con el mismo problema.
¿Sabes cuá podría ser la causa?

Gracias.

Unknown dijo...

El punto D. Inicialización Base de Datos, se hace en todos los 3 nodos o solo en uno? se hace en el mgm?

Unknown dijo...

Buena Tarde.

En el punto 6 de la instalacion del nodo SQL no me funciona, podrias guiarme como seguir alli.
Muchas Gracias

Anónimo dijo...
Este comentario ha sido eliminado por el autor.
Anónimo dijo...

GRACIAS, por la configuración, solo tengo una duda, noto que se replican las BDs, pero no las tablas o mas bien todo el contenido, eso se debe a que ?

PD. Puede el nodo MGM ser un SQL tmb ???

Saludos.

Anónimo dijo...

Cuando ejecuto
" cd /opt/mysql/server-5.6/
./support-files/mysql.server start"

Me da el error "The server quit whitout updating PID file (/opt/mysql/server-5.6/data/red-VirtaulBox.pid).

Cual es el motivo y hay alguna forma de solucionarlo?

Ingenieria en sistemas! seccion "C" MARIANO GALVEZ dijo...

amigo tengo una duda,

ya hice la configuración como lo mencionas y en el mgm me registra todo bien


quisiera que me iluminaras con lo siguiente:
al momento de probar el cluster como tal si creo por ejemplo una base de datos en cualquiera de los 3 nodos en funcionamiento se replica correctamente, pero cuando selecciono la base de datos creada y creo una tabla aqui me topo con el problema que las operaciones dentro de la base de datos ya no se replican, tendras una solucion para eso?

de antemano gracias!!