Skip to main content

Instalar Cluster MariaDB con Galera

Instalación de un cluster de MariaDB con Galera

Requisitos previos

Necesitaremos al menos 2 servidores, preferiblemente 3, en los que instalaremos MariaDB Una vez instalado MariaDB en los tres servidores, para que cualquier instalación en cluster funcione, debemos de instalar ntp, y asegurarnos que todos los servidores tienen la hora sincronizada. Esto lo conseguimos instalando NTP y configurándolo. Una vez que todos los servidores estén sincronizados, procederemos a comprobar que el sistema de índices de nuestra base de datos MariaDB es el correcto (debe ser InnoDB) Para ello accedemos a cada uno de los servidores mediante En una instalación limpia de Linux (en este caso Debian), deberemos proceder a ejecutar los procesos siguientes:

Actualización

Ejecutaremos un update parta asegurar que todos los paquetes está en la última versión, y que hay conectividad con el repositorio de Debian

apt-get update

Configuración del servicio NTP

Seguiremos los pasos que se explican en Configurar NTP en Debian

Instalación de MariaDB

Procederemos como se explica en Instalación MariaDB para cada uno de los nodos del cluster.


Una vez que todos los servidores estén sincronizados, procederemos a comprobar que el sistema de índices de nuestra base de datos MariaDB es el correcto (debe ser InnoDB) Para ello accedemos a cada uno de los servidores mediante

mysql -u root

Nos aparecerá el prompt

MariaDB [(none)]>

Ejecutamos el comando

show variables like 'default_storage_engine';

Nos aparecerá el resultado de la consulta


MariaDB [(none)]> show variables like 'default_storage_engine';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+-------+| 
| default_storage_engine | InnoDB |
+------------------------+--------+
>1 row in set (0.00 sec)

En este caso vemos que el motor es InnoDB


Configuración del Cluster

Una vez instalado en todos los nodos del cluster, procederemos a instalar Galera

apt install galera-3

Y a continuación editaremos el fichero de configuración del servicio de Mysql para cada uno de los nodos del cluster

nano /etc/mysql/mariadb.conf.d/50-server.cnf

Aparecerá el fichero e configuración de MariaDB (Mysql), y verificaremos los siguientes parametros:

# this is only for the mysqld standalone daemon
[mysqld]
####################################
##   A PARTIR DE AQUI
####################################
# Galera Cluster configurations
wsrep_on = ON
wsrep_provider = /usr/lib/galera/libgalera_smm.so
wsrep_cluster_address = "gcomm://192.168.250.191,192.168.250.192,192.168.250.193"
default_storage_engine = InnoDB
binlog_format = row
innodb_autoinc_lock_mode = 2
innodb_force_primary_key = 1
innodb_doublewrite = 1
wsrep_cluster_name = MariadbCluster
wsrep_node_name = Nodo2
wsrep_node_address = "192.168.250.192"
innodb_flush_log_at_trx_commit=0

####################################
## Hay que comentar esta linea ya que de lo contrario, el servidor no responderá a peticiones externas. O bien poner bind-address= 192.168.250.192
####################################
#bind-address           = 127.0.0.1
#bind-address           = 127.0.0.1

Las IP proporcionadas habrá que sutituirlas por sus respectivas IP Hay que tener cuidado con el apartado


innodb_force_primary_key = 1

En muchos casos nos puede dar problemas a la hora de crear tablas. Para desactivarlo temporalmente podemos usar


ateinco@db01:~#mysql -u root
MariaDB [(none)]>set global innodb_force_primary_key = 0;

Deberemos modificar el fichero en todos los servidores cambiando los parámetros

wsrep_node_name y wsrep_node_address

Arrancar el cluster

Instalaremos el apparmor

apt install apparmor apparmor-profiles apparmor-utils

A continuación ejecutaremos lo siguiente:

cd /etc/apparmor.d/disable/
ln -s /etc/apparmor.d/usr.sbin.mysqld
systemctl restart apparmor
systemctl stop mariadb
galera_new_cluster
systemctl restart mariadb

Otra forma de ejecutarlo desde una sóla línea

Una vez que hemos modificado el fichero en todos los servidores, procederemos a modificar los servicios en los tres servidores.

cd /etc/apparmor.d/disable/
ln -s /etc/apparmor.d/usr.sbin.mysqld
systemctl restart apparmor
systemctl stop mariadb

Ahora en el primer servidor ejecutaremos

galera_new_cluster

Y en los servidores restantes arrancaremos el servicio MariaDB

systemctl restart mariadb

Comprobaciones

Para comprobar que el cluster está funcionando, ejecutaremos el siguiente comando de MariaDB


mysql -u root
MariaDB [(none)]> show status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+
1 row in set (0.00 sec)

Como vemos tenemos un cluster con 3 nodos de MariaDB