La agrupación de bases de datos es el proceso de combinar varios servidores conectándolos a una sola base de datos. La agrupación en clústeres mejora la disponibilidad de su base de datos al distribuir la carga a diferentes servidores. Si algún servidor falla, otros están rápidamente disponibles para continuar sirviendo.
MariaDB Galera es una solución de agrupación en clúster multimaestro que le permite leer y escribir en cualquier nodo del clúster. Con MariaDB Galera, un cambio realizado en cualquier nodo se replica en todos los nodos. MariaDB Galera es compatible con los motores de almacenamiento XtraDB/InnoDB y solo está disponible en Linux.
Características
- Topología multimaestro activo-activo
- Unión automática de nodos
- Capacidad de lectura y escritura en cualquier nodo de clúster
- Control de membresía automático, los nodos fallidos se eliminan del clúster
- Aprovisionamiento automático de nodos
En este tutorial, le mostraremos cómo configurar un clúster de MariaDB Galera de tres nodos en Ubuntu 18.04.
Requisitos
- Tres VPS Ubuntu 18.04 nuevos en la plataforma en la nube Atlantic.Net.
- Una contraseña raíz configurada en todos los servidores.
A los efectos de este tutorial, utilizaremos tres servidores con la siguiente configuración:
servidor1 :192.168.0.101
servidor2 :192.168.0.102
servidor3 :192.168.0.103
Paso 1:crear un servidor en la nube de Atlantic.Net
Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo Ubuntu 18.04 como sistema operativo con al menos 2 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.
Una vez que haya iniciado sesión en su servidor Ubuntu 18.04, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.
apt-get update -y
Paso 2:instale el servidor MariaDB en todos los servidores
Primero, agregue la clave del repositorio de MariaDB con el siguiente comando:
apt-get install software-properties-common apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Luego, agregue el repositorio usando el siguiente comando:
add-apt-repository "deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.liquidtelecom.com/repo/10.4/ubuntu $(lsb_release -cs) main"
Una vez que se haya agregado el repositorio, actualice el repositorio con el siguiente comando:
apt-get update -y
Finalmente, instale el servidor MariaDB con el siguiente comando:
apt-get install mariadb-server -y
A partir de la versión 10.1, la función de clúster de Galera se incluye en MariaDB. El paquete del servidor MariaDB Galera se instala automáticamente con el servidor MariaDB.
Puede configurarlo con el siguiente comando:
mysql_secure_installation
Responda todas las preguntas, como se muestra a continuación:
Enter current password for root (enter for none): Provide your root user password Switch to unix_socket authentication [Y/n] n Change the root password? [Y/n] Y New password: Re-enter new password: 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
Nota :Repita los pasos anteriores en los tres servidores.
Paso 3:configurar cada servidor en el clúster
En este punto, hemos instalado y configurado el servidor MariaDB en cada servidor. A continuación, deberá configurar el clúster de Galera para comunicarse entre los servidores. Para ello, deberá crear un archivo de configuración común en cada servidor.
En esta sección, le mostraremos cómo configurar cada servidor en el clúster.
Configurar primer servidor
Primero, inicie sesión en el primer servidor y cree un archivo de configuración de Galera con el siguiente comando:
nano /etc/mysql/conf.d/galera.cnf
Agregue las siguientes líneas (asegúrese de ingresar las direcciones IP de su propio servidor):
[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.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.101" wsrep_node_name="server1"
Guarde y cierre el archivo cuando haya terminado. A continuación, puede pasar al segundo servidor.
Configurar segundo servidor
A continuación, inicie sesión en el segundo servidor y cree un archivo de configuración de Galera con el siguiente comando:
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.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.102" wsrep_node_name="server2"
Guarde y cierre el archivo cuando haya terminado. A continuación, puede pasar al tercer servidor.
Configurar el tercer servidor
A continuación, inicie sesión en el tercer servidor y cree un archivo de configuración de Galera con el siguiente comando:
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.101,192.168.0.102,192.168.0.103" # Galera Synchronization Configuration wsrep_sst_method=rsync # Galera Node Configuration wsrep_node_address="192.168.0.103" wsrep_node_name="server3"
Guarde y cierre el archivo cuando haya terminado.
En este punto, hemos configurado los tres servidores para que se comuniquen entre sí.
Paso 4:inicialice el clúster de Galera
Antes de iniciar el clúster, deberá detener el servicio MariaDB en todos los servidores.
Ejecute el siguiente comando para detener el servicio MariaDB en todos los servidores.
systemctl stop mariadb
A continuación, inicialice el clúster en el primer nodo con el siguiente comando:
galera_new_cluster
El comando anterior iniciará el clúster y agregará el servidor1 al clúster.
Puedes comprobarlo con el siguiente comando:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
Proporcione su contraseña de root y presione Enter. Debería ver el siguiente resultado:
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 1 | +--------------------+-------+
A continuación, vaya al segundo servidor e inicie el servicio MariaDB:
systemctl start mariadb
A continuación, verifique el tamaño de su clúster con el siguiente comando:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
Proporcione su contraseña de root y presione Enter. Debería ver que el segundo servidor se ha unido al clúster.
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 2 | +--------------------+-------+
A continuación, vaya al tercer servidor e inicie el servicio MariaDB:
systemctl start mariadb
A continuación, verifique el tamaño de su clúster con el siguiente comando:
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" Enter password:
Proporcione su contraseña de root y presione Enter. Debería ver que el tercer servidor se ha unido al clúster.
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+
Paso 5:probar la replicación del clúster de Galera
Su clúster de Galera ahora está en funcionamiento. Es hora de probar y ver si la replicación funciona.
Para ello, cree una base de datos en el primer servidor y compruebe si se ha replicado en otros servidores.
En el servidor 1, inicie sesión en MySQL shell con el siguiente comando:
mysql -u root -p
Proporcione su contraseña raíz cuando se le solicite, luego cree una base de datos con el siguiente comando:
create database replicadb; create database mydb;
A continuación, salga del shell de MySQL con el siguiente comando:
exit;
En el servidor 2, inicie sesión en el shell de MySQL con el siguiente comando:
mysql -u root -p
Proporcione su contraseña raíz cuando se le solicite y compruebe si existe la base de datos.
show databases;
Deberías obtener el siguiente resultado:
+--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | | replicadb | +--------------------+
En server3, inicie sesión en MySQL shell con el siguiente comando:
mysql -u root -p
Proporcione su contraseña raíz cuando se le solicite y compruebe si existe la base de datos.
show databases;
Deberías obtener el siguiente resultado:
+--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | | replicadb | +--------------------+
El resultado anterior indica claramente que la replicación funciona correctamente.
Conclusión
¡Felicidades! Ha instalado y configurado con éxito un clúster MariaDB Galera de tres nodos en Ubuntu 18.04 VPS. Ahora debería tener suficientes conocimientos para configurar un clúster de MariaDB Galera en un entorno de producción. Puede visitar la Documentación de MariaDB Galera para obtener más información.