sql >> Base de Datos >  >> RDS >> MariaDB

Cómo implementar MariaDB Cluster 10.5 para alta disponibilidad

 

La implementación de MariaDB Cluster 10.5 ha sido compatible con ClusterControl desde la versión 1.8.1.

MariaDB 10.5 está equipado con:

  • Más privilegios granulares

  • Mejoras de rendimiento de InnoDB

  • Soporte total de GTID para Galera Cluster

  • Más metadatos para replicación y registros binarios

  • Más instrucciones de sintaxis SQL (instrucción RETURNING para INSERTAR, EXCEPTAR TODO e INTERSECTAR TODO, …)

  • Actualizaciones del esquema de rendimiento para coincidir con MySQL 5.7

  • El motor de almacenamiento S3

Puede consultar más en nuestro blog anterior 

Para obtener más detalles sobre el lanzamiento de esta versión en particular, consulte las novedades de MariaDB 10.5. Algunos de los cambios más significativos de la versión 10.4 a la 10.5 incluyen:

  • Consistencia de GTID 

  • Incoherencia de clúster/votación por error 

  • operaciones DDL sin bloqueo (disponible solo en la versión empresarial)

  • Caja negra (disponible solo en la versión empresarial) 

  • Actualizó su biblioteca Galera wsrep, para la cual 26.4.6 es la última versión

Inicialmente, se esperaba la compatibilidad con transacciones XA para esta versión (no se confunda, ya que las transacciones XA son compatibles con MariaDB Server pero no con Galera Cluster). Sin embargo, debido a algunas implicaciones de rendimiento, MariaDB Galera Cluster no admite transacciones XA.

En este blog, discutiremos cómo implementar MariaDB Cluster 10.5 para alta disponibilidad.

Clúster de MariaDB para alta disponibilidad

El clúster de MariaDB es esencialmente un clúster de Galera que utiliza la implementación de MariaDB como capa de base de datos para interactuar con el motor InnoDB o XtraDB. MariaDB Galera Cluster es un clúster multimaestro virtualmente síncrono para MariaDB. Está disponible solo en Linux y es compatible con los motores de almacenamiento XtraDB/InnoDB (aunque hay soporte experimental para MyISAM; consulte la variable de sistema wsrep_replicate_myisam). Cuando se usa Galera Cluster, las lecturas y escrituras de la base de datos se pueden dirigir a cualquier nodo. Cualquier nodo individual se puede perder sin interrumpir las operaciones y sin usar procedimientos complejos de conmutación por error.

Con la naturaleza de Galera adaptada dentro de MariaDB Cluster, es una solución de alta disponibilidad con replicación síncrona, conmutación por error y resincronización. Brinda los beneficios de no perder datos, no hay retrasos de esclavos, escalabilidad de lectura y escritura y alta disponibilidad en diferentes centros de datos.

Implementación del clúster de MariaDB 10.5

MariaDB proporciona una configuración sencilla y sencilla para instalar MariaDB Cluster 10.5. El proceso manual puede ser tedioso, pero con los scripts automatizados proporcionados por MariaDB, los repositorios se pueden configurar de acuerdo con la versión de la base de datos de destino, el tipo de sistema operativo y la versión del sistema operativo.

Para este ejercicio, tengo la siguiente configuración de Galera Cluster de 3 nodos con las siguientes direcciones IP:192.168.40.210, 192.168.40.220, 192.168.40.230.

Configura tu repositorio

Como se mencionó anteriormente, MariaDB tiene un script llamado mariadb_repo_setup y es fácil de usar. Puede especificar la versión de destino de su base de datos, el tipo de sistema operativo y la versión de su sistema operativo.

Por ejemplo, estoy instalando usando EL 8:

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=rhel --os-version=8

o instalarlo en Ubuntu Focal Fossa,

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=ubuntu --os-version=focal

Tenga en cuenta que al usar el script mariadb_repo_setup, requiere el paquete apt-transport-https como dependencia. Así que primero instale este paquete antes de poder aprovechar el script mariadb_repo_setup.

apt update

apt install apt-transport-https

Ahora, ejecute el comando en sus tres nodos de acuerdo con su sistema operativo. Por supuesto, la versión de MariaDB tiene que ser 10.5.

Configuración de MySQL

El archivo de configuración depende de los recursos de su servidor, el tipo de entorno del servidor y la dirección IP asignada. Para este blog, puede usar esta configuración de configuración MariaDB Cluster/PXC lista para producción que usamos para implementar en nuestras bases de datos Percona XtraDB Cluster/MariaDB Cluster usando ClusterControl. Las variables notables que necesita o están sujetas a cambios son las siguientes:

  • innodb_buffer_pool_size — Establezca el grupo de búfer del 70 % al 80 % de RAM disponible de su servidor

  • wsrep_provider — Ruta de la biblioteca compilada de Galera. Para Enterprise Linux, la ruta será /usr/lib64/galera-4/libgalera_smm.so. Mientras que Debian/Ubuntu está en /usr/lib/galera/libgalera_smm.so.

  • wsrep_node_address — Esta es la dirección IP del nodo

  • wsrep_sst_method:puede cambiarlo, pero le recomendamos que use mariabackup. Los posibles valores que puede elegir son rsync, mysqldump, xtrabackup, xtrabackup-v2, mariabackup.

  • wsrep_cluster_name:el nombre de su clúster de MariaDB. Tiene que ser idéntico a todos sus nodos en un único clúster de MariaDB.

  • wsrep_cluster_address:contiene las direcciones de sus nodos dentro del clúster. Tiene que ser una IP, nombre de host o FQDN válido.

  • wsrep_node_name — El nombre de su nodo. El nombre se puede utilizar en wsrep_sst_donor como donante preferido. Tenga en cuenta que varios nodos en un clúster pueden tener el mismo nombre.

Para realizar SST, el usuario y la contraseña de las siguientes secciones [mysqldump], [xtrabackup] y [mysqld] pueden cambiar si lo desea. Para este ejercicio, hagámoslo simple, y puedes dejar los valores como están.

Ahora, copie el archivo de configuración y colóquelo en /etc/my.cnf. Haz esto con tus tres nodos de Galera.

Instalación de paquetes necesarios

Instale los paquetes para los tres nodos de Galera. Siga el comando a continuación en función de su entorno de sistema operativo de destino.

Para RHEL/Rocky/AlmaLinux:

sudo yum install MariaDB-server MariaDB-client galera-4 MariaDB-backup

Para Debian/Ubuntu:

sudo apt update

sudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3 mariadb-backup mariadb-common

Una vez completada la instalación, detenga el proceso de MariaDB e inicialice el clúster como un solo nodo. Esto arrancará su Galera Cluster. En este momento, lo estoy ejecutando en el nodo 192.168.40.210.

$ /usr/bin/galera_new_cluster

Crear usuario SST/IST

Cree el usuario de respaldo, que se utilizará para SST o IST. Solo ejecute las siguientes instrucciones SQL a continuación en el primer nodo que haya iniciado el clúster. En esta etapa, lo he ejecutado en el nodo 192.168.40.210.

CREATE USER [email protected] IDENTIFIED BY 'backuppassword';

GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';

En este punto, ya estamos configurados y listos para conectar los nodos restantes.

Iniciar el servidor MariaDB

Ahora ya hemos configurado el primer nodo. Estamos listos para conectar los nodos restantes. Simplemente, inicie el servicio MariaDB. Simplemente ejecute el siguiente comando:

systemctl start mariadb

Ejecute el comando para los nodos restantes uno a la vez. En este punto, todos los nodos están sincronizados.

Adición de esteroides para su clúster de MariaDB 10.5 para alta disponibilidad

Es probable que la implementación de MariaDB Cluster 10.5 para alta disponibilidad no sea suficiente para sus necesidades en una configuración de producción. Agregar más esteroides, como instalar HAProxy junto con Keepalived para su redundancia, brindará una mayor disponibilidad para su entorno de base de datos.

La configuración de HAProxy y Keepalived para obtener la topología y el entorno deseados puede agregar más problemas. Sin embargo, puede automatizar esto con ClusterControl. Con ClusterControl, puede implementar su MariaDB Cluster 10.5 y agregar más soluciones para equilibrar la carga, como ProxySQL, MaxScale o garbd. Puede agregar Keepalived a su clúster para agregar soluciones de redundancia y conmutación por error automática en caso de desastre.

Puede descargar una versión de prueba gratuita de ClusterControl que le permitirá implementar estas soluciones HA y administrar todas las operaciones de su base de datos desde un único panel. Explicaremos cómo implementar su clúster MariaDB 10.5 con ClusterControl.

Implementación del clúster MariaDB 10.5 con ClusterControl

Una vez que haya instalado ClusterControl, haga clic en el icono en la esquina superior derecha y verá el asistente de implementación como se muestra a continuación.

Puede configurarlo fácilmente. Simplemente siga la serie de pasos según el flujo de la interfaz de usuario.

Implemente HAProxy para la gestión del equilibrio de carga

En este punto, asumiría que tiene su MariaDB Cluster 10.5 todo configurado. Ahora, implementemos HAProxy:

O bien, puede ir a Administrar → Equilibrador de carga → HAProxy.

Luego seleccione o escriba la dirección donde se instalará el HAProxy y seleccione sus nodos Galera que serán monitoreados por el HAProxy. Vea el siguiente ejemplo:

Agregue al menos dos implementaciones de HAProxy para agregar más disponibilidad. Cada vez que uno de sus HAProxy falla, su aplicación se enrutará al otro nodo que todavía está disponible o en línea. Esto es muy importante, especialmente cuando se manejan actualizaciones de bases de datos o sistemas, además de eventos catastróficos o de desastres.

Implementar Keepalived

Utilizará el mismo proceso anterior para implementar Keepalived, como se muestra a continuación:

Si notaron, tengo dos instancias de HAProxy para las cuales instalaré Keepalived , que estará presente en todos los nodos donde se esté ejecutando HAProxy.

Finalización de MariaDB Cluster 10.5 con alta disponibilidad

Ahora que tenemos todo configurado, debería tener un entorno que se vea así:

Conclusión

Esta configuración para su clúster de MariaDB 10.5 le brinda los beneficios de lograr una alta disponibilidad con varios nueves. HAProxy le brinda más capacidades de equilibrio de carga con su separación de lectura y escritura, y Keepalived garantiza que, en caso de que uno de sus HAProxy falle, se conmutará por error al siguiente nodo disponible. Su aplicación solo se conectará a la dirección IP virtual (que sigue al VRRP) y no requerirá configuración o configuración adicional.

Para agregar aún más flexibilidad y separación de lectura/escritura simplemente jugando en un puerto, puede reemplazar HAProxy con ProxySQL. Lograr una configuración perfecta para alta disponibilidad puede ser difícil y cada uno tiene sus inconvenientes. Sin embargo, lo más importante es que se logra un tiempo de inactividad bajo o nulo.

Para obtener más consejos sobre cómo crear una configuración de MariaDB de alta disponibilidad, consulte este artículo sobre cómo implementar la replicación de MariaDB.

Si desea mantenerse actualizado sobre las mejores prácticas y las tendencias de las bases de datos, suscríbase a nuestro boletín y síganos en Twitter y LinkedIn.