Instalación de una versión binaria del clúster NDB en Linux

⌛ Lectura estimada: 5 minutos

Preparación máquinas

* El clúster se ha hecho con debian 9.4 stretch

Para empezar tendremos que tener 4 máquinas. La primera será donde instalaremos mysql-server, la segunda y tercera serán los nodos de datos y por último el nodo de administración.

Una vez tengamos instalada la primera máquina (mysql-server), configuraremos la red en NAT y Adaptador Host-Only. Editamos el fitxero de configuración de red de debian.

Vemos la configuración de red:

Y descargamos el siguiente paquete con wget:

# wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-7.5/mysql-cluster-gpl-7.5.9-linux-glibc2.12-x86_64.tar.gz

Descomprimimos y creamos un enlace simbólico del paquete anteriormente descargado a /usr/local/mysql

# tar -C /usr/local -xzvf mysql-cluster-gpl-7.5.11-linux-glibc2.12-x86_64.tar.gz

ln -s /usr/local/mysql-cluster-gpl-7.5.11-linux-glibc2.12-x86_64 /usr/local/mysql

Apagamos la máquina y la clonamos de forma enlazada para tener las 4. Como el siguiente ejemplo:

Configuración SQL-Cluster

# cd /usr/local/mysql/bin

Instalamos los siguientes paquetes requeridos:

apt install libaio1 && apt install libnuma1

Inicializamos mysql:

# ./mysqld –initialize

En este apartado nos va a dar una contraseña de root temporal. La vamos a guardar a copiar en un archivo de texto.

Seguidamente en el mismo directorio, ejecutamos:

# ./mysql_secure_installation

Añadimos el grupo mysql y el usuario:

#groupadd mysql
# useradd -g mysql -s /bin/false mysql

Definimos los permisos:

#cd /usr/local/mysql

#chown -R root .

#chown -R mysql data

#chgrp -R mysql .

Copiamos el script de inicio de MySQL en el directorio apropiado, lo hacemos ejecutable y lo configuramos para que se inicie cuando el sistema operativo se inicie:

# cp support-files/mysql.server /etc/init.d/

# chmod +x /etc/init.d/mysql.server

# update-rc.d mysql.server defaults

A continuación creamos el siguiente archivo de configuración en my.cnf.

# nano /etc/my.cnf

Nodos de datos

En este apartado vamos a configurar los dos nodos de datos. La configuración es la misma para los dos.

cp /usr/local/mysql/bin/ndbd /usr/local/bin/ndbd

# cp /usr/local/mysql/bin/ndbmtd /usr/local/bin/ndbmtd

Hacemos ejecutable el script:

# cd /usr/local/bin

# chmod +x ndb*

El archivo my.cnf necesario para los nodos de datos es bastante simple. El archivo de configuración debe ubicarse en el directorio /etc y puede editarse utilizando cualquier editor de texto. (Cree el archivo si no existe). Por ejemplo:

# nano /etc/my.cnf

 

 

Creamos las siguientes carpetas:

mkdir -p /usr/local/mysql/data

 

Nodo de Administración

 

cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin

Damos permisos de ejecución:

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

El primer paso para configurar el nodo de administración es crear el directorio en el que se puede encontrar el archivo de configuración y luego crearlo. Por ejemplo (ejecutándose como root):

# mkdir /var/lib/mysql-cluster

# cd /var/lib/mysql-cluster

# nano config.ini

Editamos el archivo con la siguiente configuración:

[ndbd default]

# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2       # Number of replicas
DataMemory=80M    # How much memory to allocate for data storage
IndexMemory=18M   # How much memory to allocate for index storage
                 # For DataMemory and IndexMemory, we have used the
                 # default values. Since the “world” database takes up
                 # only about 500KB, this should be more than enough for
                 # this example NDB Cluster setup.
ServerPort=2202   # This the default value; however, you can use any
                 # port that is free for all the hosts in the cluster
                 # Note1: It is recommended that you do not specify the port
                 # number at all and simply allow the default value to be used
                 # instead
                 # Note2: The port was formerly specified using the PortNumber
                 # TCP parameter; this parameter is no longer available in NDB
                 # Cluster 7.5.

[ndb_mgmd]
# Management process options:
HostName=192.168.56. 6         # Hostname or IP address of MGM node
DataDir=/var/lib/mysql-cluster  # Directory for MGM node log files

[ndbd]
# Options for data node “A”:
                               # (one [ndbd] section per data node)
HostName=192.168.56.4          # Hostname or IP address
NodeId=2                        # Node ID for this data node
DataDir=/usr/local/mysql/data   # Directory for this data node’s data files

[ndbd]
# Options for data node “B”:
HostName=192.168.56.5         # Hostname or IP address
NodeId=3                        # Node ID for this data node
DataDir=/usr/local/mysql/data   # Directory for this data node’s data files

[mysqld]
# SQL node options:
HostName=192.168.56.3          # Hostname or IP address

# (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)

Ejecución

Si hemos hecho todos los pasos correctamente, vamos a iniciarlo todo.

  • Iniciamos nodo de administración:

# ndb_mgmd -f /var/lib/mysql-cluster/config.ini –configdir=/var/lib/mysql-cluster

  • Iniciamos los nodos de datos:

# cd /usr/local/bin

# ./ndbd

 

  • Iniciamos mysql:

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

Ahora si vamos al nodo de administración podremos ver todos los nodos conectados con la siguiente orden:

# ndb_mgm -e show

Comprobación:

Creamos una base de datos en sql-node y luego paramos un nodo de datos.

Importante elegir el motor de almacenamiento como engine=ndbcluster


Ahora apagamos el node 1 y volvemos a hacer la consulta.

Funciona!

Deja un comentario

Su dirección de correo electrónico no será publicada. Campos necesarios *