MariaDB Galera Cluster es una solución de replicación activa-activa para bases de datos MariaDB, diseñada para proporcionar alta disponibilidad y tolerancia a fallos. A diferencia de la replicación tradicional (asíncrona o semi-síncrona), Galera permite que las lecturas y escrituras se realicen en cualquier nodo del clúster, teóricamente ofreciendo una consistencia en tiempo real.
¿Cómo funciona? El proceso comienza con la ejecución optimista de las transacciones en cualquier nodo. Luego, estas transacciones se replican sincrónicamente a los demás nodos, quienes las certifican basándose en las claves primarias modificadas. Para resolver conflictos, Galera utiliza un sistema de números de secuencia (seqno). La documentación de MariaDB a menudo afirma que las transacciones se comprometen solo después de la certificación en todos los nodos, lo cual es una simplificación; Galera puede continuar operando incluso con la pérdida de un subconjunto de nodos, siempre que se mantenga un quorum (mayoría) de nodos activos y conectados. Esto se basa en el protocolo EVS (External Virtual Synchrony).
Aplicaciones: Galera es ideal para aplicaciones que requieren alta disponibilidad, como sistemas bancarios, comercio electrónico, o cualquier servicio donde la pérdida de datos o el tiempo de inactividad son inaceptables. Permite a los desarrolladores distribuir la carga de trabajo entre múltiples servidores, mejorando el rendimiento y la resiliencia. Es utilizado por empresas que necesitan una base de datos distribuida y altamente disponible.
Consideraciones importantes: A pesar de las afirmaciones de consistencia en tiempo real, la implementación original de Galera (antes de la adquisición de Codership por MariaDB) tenía una limitación crítica: carecía de una propiedad clave de Snapshot Isolation (first-committer-wins), lo que podía llevar a inconsistencias en los datos, como la creación o pérdida de dinero en simulaciones de transferencias bancarias. Aunque MariaDB ha trabajado para mejorar esto, es crucial entender que la consistencia de Galera se sitúa entre los modelos Serializable y Repeatable Read, y no ofrece una consistencia serializable completa. La documentación de MariaDB a veces es engañosa al respecto. Además, Galera impone restricciones, como el uso del motor de almacenamiento InnoDB, y ciertas operaciones de bloqueo explícito no son compatibles. Es fundamental comprender estas limitaciones y considerar alternativas como replicación tradicional o soluciones de bases de datos distribuidas más robustas si se requiere una consistencia más estricta.
