🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

WordPress y bases de datos distribuidas: Galera Cluster y MariaDB

Actualizado el 8 de abril de 2026

Imagina que tu sitio WordPress recibe un pico de tráfico masivo. De repente, la base de datos colapsa, el servidor se cae y todo se vuelve una pantalla en blanco. Para un administrador de sistemas, este es el peor escenario posible. Aquí es donde entra en juego la alta disponibilidad base datos, y más concretamente, Galera Cluster WordPress con MariaDB. Este artículo es una guía técnica para implementar un clúster de bases de datos distribuidas que garantice que tu WordPress nunca deje de servir contenido.

¿Por qué necesitas bases de datos distribuidas en WordPress?

WordPress es, por defecto, una aplicación monolítica que depende de una única base de datos MySQL o MariaDB. En un entorno de producción, este cuello de botella es la principal causa de caídas. Cuando el tráfico crece, la base de datos se convierte en el punto único de fallo (SPOF). Las bases datos distribuidas resuelven esto distribuyendo la carga y los datos entre varios nodos.

El problema de la replicación tradicional

La replicación maestro-esclavo (Master-Slave) tradicional tiene un problema grave: la latencia. Si el maestro falla, el esclavo puede tener datos desactualizados. Además, la escritura solo ocurre en el maestro, lo que limita el rendimiento. Galera Cluster, en cambio, ofrece replicación síncrona WordPress, donde todos los nodos están actualizados en todo momento.

[INFO] La replicación síncrona garantiza que cualquier escritura se confirme solo cuando todos los nodos del clúster la tengan. Esto elimina el riesgo de pérdida de datos, pero introduce una pequeña latencia adicional en cada escritura.

Galera Cluster: El corazón de la alta disponibilidad

Galera Cluster WordPress no es un plugin mágico; es una capa de replicación síncrona multicliente para InnoDB. Funciona a nivel de base de datos, no de aplicación. Esto significa que WordPress no necesita saber que está conectado a un clúster; solo ve una conexión de base de datos normal.

Arquitectura de Galera Cluster

Un clúster típico consta de 3 nodos (mínimo recomendado para evitar split-brain). Cada nodo ejecuta MariaDB con el plugin wsrep (Write Set Replication). La comunicación entre nodos usa gcomm (Group Communication) y IST (Incremental State Transfer) o SST (State Snapshot Transfer) para sincronizar datos.

[WordPress] --> [ProxySQL / HAProxy] --> [Nodo1] <--> [Nodo2] <--> [Nodo3]

Ventajas sobre la replicación asíncrona

  • Sin pérdida de datos: Todos los nodos tienen el mismo conjunto de datos en todo momento.
  • Escritura en cualquier nodo: No hay un punto único de escritura, lo que distribuye la carga.
  • Failover automático: Si un nodo cae, los otros siguen sirviendo sin intervención manual.
  • Escalabilidad horizontal: Puedes añadir nodos para aumentar la capacidad de lectura/escritura.

MariaDB WordPress: La base de datos perfecta para el clúster

MariaDB es un fork de MySQL que ha ganado terreno por su rendimiento y características nativas para clustering. MariaDB WordPress se beneficia directamente de su integración con Galera. A diferencia de MySQL Community Edition, MariaDB incluye el plugin wsrep de serie.

Configuración básica de MariaDB para Galera

Para habilitar Galera en MariaDB, debes modificar el archivo de configuración (/etc/mysql/mariadb.conf.d/galera.cnf). Aquí tienes un ejemplo para un nodo:

[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0
innodb_log_file_size=1G

# Configuración de Galera
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="wordpress_cluster"
wsrep_cluster_address="gcomm://192.168.1.10,192.168.1.11,192.168.1.12"
wsrep_node_name="wp-db-01"
wsrep_node_address="192.168.1.10"
wsrep_sst_method=rsync

[WARNING] El parámetro innodb_autoinc_lock_mode=2 es crítico para evitar bloqueos en tablas con AUTO_INCREMENT. Sin esto, las escrituras concurrentes pueden fallar.

Implementación paso a paso de Galera Cluster WordPress

Requisitos previos

  • Tres servidores con Ubuntu 22.04 LTS (o similar).
  • MariaDB 10.11 o superior instalado en cada uno.
  • Acceso SSH y permisos de root.
  • Red privada entre nodos (evita latencia innecesaria).

Paso 1: Instalación de MariaDB y Galera

En cada nodo, ejecuta:

apt update && apt install mariadb-server mariadb-client galera-4 rsync -y

Paso 2: Configurar el primer nodo (arranque del clúster)

En el nodo 1, detén MariaDB, configura el archivo galera.cnf como el ejemplo anterior y arranca el clúster:

systemctl stop mariadb
galera_new_cluster

Este comando inicia el clúster con el nodo 1 como primario.

Paso 3: Unir los nodos restantes

En los nodos 2 y 3, configura el mismo archivo galera.cnf (cambiando wsrep_node_name y wsrep_node_address) y luego:

systemctl start mariadb

MariaDB se conectará automáticamente al clúster mediante la dirección gcomm://.

Paso 4: Verificar el estado del clúster

Conéctate a MariaDB en cualquier nodo y ejecuta:

SHOW STATUS LIKE 'wsrep_cluster_size';
SHOW STATUS LIKE 'wsrep_local_state_comment';

Deberías ver wsrep_cluster_size = 3 y wsrep_local_state_comment = Synced.

Integración con WordPress: ProxySQL como balanceador

WordPress no puede hablar directamente con un clúster Galera porque espera una única conexión de base de datos. Aquí entra ProxySQL, un proxy de base de datos inteligente que entiende la replicación síncrona.

Configuración de ProxySQL

Instala ProxySQL en un servidor separado (o en el mismo que WordPress):

apt install proxysql -y

Luego, configura las reglas de enrutamiento. Conéctate a la interfaz de administración de ProxySQL (puerto 6032) y ejecuta:

INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (0, '192.168.1.10', 3306);
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (0, '192.168.1.11', 3306);
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (0, '192.168.1.12', 3306);
INSERT INTO mysql_users (username, password, default_hostgroup) VALUES ('wp_user', 'wp_pass', 0);
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;

Ahora, en wp-config.php, cambia la dirección de la base de datos a la IP de ProxySQL (puerto 3306 por defecto).

[TIP] Para WordPress, usa el hostgroup 0 (escritura) y hostgroup 1 (lectura) si quieres separar tráfico. Galera permite escrituras en cualquier nodo, pero ProxySQL puede optimizar las lecturas.

Consideraciones de rendimiento y monitorización

La replicación síncrona WordPress introduce latencia en las escrituras. En entornos de alta concurrencia, esto puede ser un problema. Aquí tienes algunos ajustes:

Parámetros críticos de Galera

  • wsrep_sloth_commit: Controla el tiempo de espera para confirmar una transacción. Aumentarlo puede mejorar la estabilidad en redes lentas.
  • wsrep_provider_options: Ajusta el tamaño de los buffers de replicación.
  • innodb_flush_log_at_trx_commit=2: Reduce la seguridad a cambio de rendimiento (no recomendado en producción crítica).

Monitorización con Prometheus y Grafana

Instala el exportador de MySQL en cada nodo:

apt install prometheus-mysqld-exporter -y

Luego, configura Prometheus para recopilar métricas de los tres nodos. En Grafana, usa el dashboard "Galera Cluster Overview" (ID 9696) para visualizar:

  • Estado de sincronización (wsrep_local_state_comment).
  • Tamaño del clúster.
  • Latencia de replicación (wsrep_flow_control_paused).
  • Número de transacciones por segundo.

Resolución de problemas comunes

Split-brain (cerebro dividido)

Ocurre cuando los nodos pierden comunicación y cada uno cree que es el único. Para evitarlo, siempre usa un número impar de nodos (3 o 5). Si ocurre, el nodo con el wsrep_last_committed más alto debe ser el primario.

SST fallido

Si un nodo se une y el SST falla, comprueba que rsync esté instalado y que los puertos 3306, 4444, 4567 y 4568 estén abiertos entre nodos.

Alto valor de wsrep_flow_control_paused

Indica que el clúster está frenando escrituras porque un nodo va lento. Revisa la red y el rendimiento de disco (usa SSD).

Conclusión: ¿Merece la pena Galera Cluster para WordPress?

La respuesta es un rotundo sí si tu sitio tiene alta disponibilidad como requisito no negociable. Galera Cluster WordPress con MariaDB te ofrece una solución madura, de código abierto y sin puntos únicos de fallo. La inversión en hardware adicional (3 servidores) se amortiza con la tranquilidad de saber que tu base de datos nunca se caerá.

Sin embargo, no es para todos. Si tienes un blog pequeño con poco tráfico, la complejidad y el coste no lo justifican. Pero si gestionas un WooCommerce con miles de pedidos por hora o un portal de noticias global, esta arquitectura es tu mejor aliada.

[WARNING] No olvides hacer backups periódicos. Galera no reemplaza una estrategia de backup; solo protege contra caídas de servidor, no contra errores humanos o corrupción de datos.

Implementar bases datos distribuidas no es un paseo, pero con esta guía tienes las herramientas para empezar. ¿El siguiente paso? Integrar ProxySQL para balanceo inteligente y Keepalived para una IP flotante. Tu WordPress te lo agradecerá.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel