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