GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar MariaDB Galera Cluster en Ubuntu 16.04

MariaDB Galera es un clúster multimaestro para MariaDB. Desde MariaDB 10.1, los paquetes de MariaDB Server y MariaDB Galera Server se han combinado y los paquetes de Galera y sus dependencias se instalan automáticamente al instalar MariaDB. Actualmente, MariaDB Galera Cluster solo es compatible con el motor de almacenamiento InnoDB/XtraDB. En MariaDB 10.0 y 5.5, deberá descargarlo por separado. MariaDB Galera agrega redundancia para la base de datos de un sitio. En MariaDB Galera Cluster, varios servidores de bases de datos se interconectan entre sí y se mantienen sincronizados.

MariaDB Galera proporciona muchas características, algunas de ellas se enumeran a continuación:

  1. Replicación síncrona.
  2. Unión automática de nodos.
  3. Topología multimaestro activo-activo.
  4. Replicación paralela verdadera, a nivel de fila.
  5. Escalabilidad de lectura y escritura, latencias de cliente más pequeñas.
  6. Nodos fallidos, eliminación automática del clúster.

En este tutorial, explicaremos cómo configurar MariaDB Galera Cluster 10.1 con 3 nodos ejecutándose en el servidor Ubuntu 16.04. También probaremos la replicación de la base de datos entre todos los nodos.

Requisitos

  • Tres nodos que ejecutan el servidor Ubuntu 16.04.
  • Nodo1 con dirección IP estática 192.168.0.102, Nodo2 con dirección IP estática 192.168.0.103 y Nodo3 con dirección IP estática 192.168.0.104 configure en su servidor.
  • Usuario no root con configuración de privilegios sudo en todos los nodos.

Cómo empezar

Primero, deberá actualizar todos los nodos con la última versión. Puede actualizarlos todos con el siguiente comando:

sudo apt-get update -y
sudo apt-get upgrade -y

A continuación, reinicie todos los nodos para aplicar estos cambios. Luego, inicie sesión con el usuario sudo y continúe con el siguiente paso.

Instalar MariaDB Galera

Los paquetes MariaDB Server y MariaDB Galera Server se combinan en la versión MariaDB 10.1. De manera predeterminada, MariaDB 10.1 no está disponible en los repositorios predeterminados de Ubuntu, por lo que deberá agregar el repositorio de MariaDB en todos los nodos.

Primero, agregue la clave del repositorio de MariaDB con el siguiente comando:

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

Luego, agregue el repositorio y actualice el caché de APT con el siguiente comando:

sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main'
sudo apt-get update -y

Una vez que el repositorio esté actualizado, instale MariaDB con el siguiente comando:

sudo apt-get install mariadb-server rsync -y

El comando anterior instalará MariaDB con Galera y varias dependencias. Las partes de Galera permanecen inactivas hasta que se configuran, como un complemento o un motor de almacenamiento. Una vez que MariaDB esté instalado en todos los nodos, puede proceder a asegurar MariaDB.

De forma predeterminada, la instalación de MariaDB no está protegida, por lo que deberá proteger la instalación de MariaDB. Puede hacer esto ejecutando el script mysql_secure_installation:

sudo mysql_secure_installation

En este proceso, se le pedirá que configure la contraseña de root, elimine usuarios anónimos, no permita el inicio de sesión de root de forma remota y elimine la base de datos de prueba. Responda todas las preguntas como se muestra a continuación:

Enter current password for root (enter for none):
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Una vez que MariaDB esté asegurado en todos los nodos, puede continuar con el siguiente paso.

Configurar el clúster de MariaDB en el nodo 1

Primero, vaya al Nodo1 y cree un archivo de configuración para Galera. De forma predeterminada, MariaDB lee la configuración desde el directorio /etc/mysql/conf.d/. Para hacerlo, ejecute el siguiente comando:

sudo nano /etc/mysql/conf.d/galera.cnf

Agregue las siguientes líneas:

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://192.168.0.102,192.168.0.103,192.168.0.104"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="192.168.0.102"
wsrep_node_name="Node1"

Guarde el archivo cuando haya terminado.

Nota: 192.168.0.102 es la dirección IP del Nodo1

Agregar Nodo2 en Galera Cluster

A continuación, vaya al Nodo2 y cree un archivo de configuración para Galera:

sudo nano /etc/mysql/conf.d/galera.cnf

Agregue las siguientes líneas:

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://192.168.0.102,192.168.0.103,192.168.0.104"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="192.168.0.103"
wsrep_node_name="Node2"

Guarde el archivo cuando haya terminado.

Nota: 192.168.0.103 es la dirección IP del Nodo2.

Agregar Nodo3 en Galera Cluster

A continuación, vaya a Node3 y cree un archivo de configuración para Galera:

sudo nano /etc/mysql/conf.d/galera.cnf

Agregue las siguientes líneas:

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://192.168.0.102,192.168.0.103,192.168.0.104"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="192.168.0.104"
wsrep_node_name="Node3"

Guarde el archivo cuando haya terminado.

Nota: 192.168.0.104 es la dirección IP del Nodo3.

Configurar cortafuegos

Galera Cluster utiliza cuatro puertos 3306 para la conexión del cliente MySQL, 4444 para la transferencia de instantáneas de estado, 4567 para el tráfico de replicación de Galera Cluster y 4568 para la transferencia de estado incremental. Por lo tanto, deberá permitir todos estos puertos mediante el firewall UFW. Puede hacerlo ejecutando el siguiente comando en todos los nodos:

Primero, habilite el firewall UFW con el siguiente comando:

sudo ufw enable

A continuación, permita todos los puertos con el siguiente comando:

sudo ufw allow 3306/tcp
sudo ufw allow 4444/tcp
sudo ufw allow 4567/tcp
sudo ufw allow 4568/tcp
sudo ufw allow 4567/udp

A continuación, puede comprobar el estado del cortafuegos con el siguiente comando:

sudo ufw status

Una vez que el firewall UFW esté configurado en todos los nodos, puede continuar con el siguiente paso.

Iniciar clúster de MariaDB Galera

Después de configurar correctamente todos los nodos, vaya al Nodo1 e inicie Galera Cluster.

Antes de que Galera pueda iniciarse, debe asegurarse de que el servicio MariaDB esté detenido en todos los nodos.

Ejecute el siguiente comando en todos los nodos:

sudo systemctl stop mysql

Ahora, inicie Galera Cluster en Node1 con el siguiente comando:

sudo galera_new_cluster

Ahora, verifique si el clúster se está ejecutando o no con el siguiente comando:

mysql -u root -p -e "show status like 'wsrep_cluster_size'"

Si todo está bien, debería ver el siguiente resultado:

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 1     |
+--------------------+-------+

En Node2, inicie el servicio MariaDB:

sudo systemctl start mysql

Puede verificar el estado del servicio MariaDB si está funcionando o no con el siguiente comando:

sudo systemctl status mysql

Si todo está bien, debería ver el siguiente resultado:

?? mariadb.service - MariaDB database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2017-09-17 10:11:20 EDT; 10min ago
  Process: 715 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 713 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
  Process: 545 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set
  Process: 535 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 514 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
 Main PID: 661 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 26 (limit: 4915)
   CGroup: /system.slice/mariadb.service
           ??????661 /usr/sbin/mysqld

Sep 17 10:11:11 debian systemd[1]: Starting MariaDB database server...
Sep 17 10:11:15 debian mysqld[661]: 2017-09-17 10:11:15 140287134630464 [Note] /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) starting as process
Sep 17 10:11:20 debian systemd[1]: Started MariaDB database server.

Ahora, su segundo nodo debería haberse vinculado automáticamente al clúster. Puede verificar eso con el siguiente comando:

mysql -u root -p -e "show status like 'wsrep_cluster_size'"

Si todo funciona bien, el tamaño del clúster debe establecerse en dos:

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 2     |
+--------------------+-------+

En Node3, inicie el servicio MariaDB:

sudo systemctl start mysql
mysql -u root -p -e "show status like 'wsrep_cluster_size'"

Si todo funciona bien, el tamaño del clúster debe establecerse en tres:

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

Su clúster ahora está funcionando y comunicándose entre sí.

Probar la replicación de la base de datos

Ahora que todos los nodos están en línea, es hora de probar la replicación de la base de datos en Galera Cluster. Comencemos por crear una base de datos en el Nodo1 y verifiquemos si está replicada en todos los nodos.

Primero, inicie sesión en la consola de MariaDb con el siguiente comando:

mysql -u root -p

Ingrese su contraseña de root y cree una base de datos con el nombre test_db:

MariaDB [(none)]> create database test_db;
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| test_db            |
+--------------------+

Ahora vaya al Nodo2 y al Nodo3, luego verifique si la replicación funciona o no:

mysql -u root -p
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| test_db            |
+--------------------+

¡Felicidades! ha instalado y configurado correctamente MariaDB Galera Cluster en el servidor Ubuntu 16.04.

Conclusión

Espero que ahora tenga suficiente conocimiento para instalar y configurar MariaDB Galera Cluster en Ubuntu 16.04. Ahora puede escalar fácilmente a varios, o incluso docenas, de nodos distintos. Si tiene alguna duda o más consultas, consulte el enlace Galera Cluster Doc


Ubuntu
  1. Cómo instalar MariaDB 10.4 en Ubuntu 18.04

  2. Cómo instalar MariaDB en Ubuntu 18.04

  3. Cómo configurar MariaDB Galera Cluster en Ubuntu 20.04

  4. Cómo instalar LiteCart en Ubuntu 15.04

  5. Cómo instalar y configurar MariaDB Galera Cluster en Ubuntu 18.04

Cómo instalar PHPList en Ubuntu 15.04

Cómo instalar ImpressCMS en Ubuntu 15.04

Cómo instalar Nextcloud en Ubuntu 16.04

Cómo instalar Mahara en Ubuntu 16.04

Cómo instalar MariaDB en Ubuntu 16.04

Cómo instalar MariaDB en Ubuntu