MySQL Galera Cluster: Parte I

Fabián Arias
LINETS Tech Talk
Published in
2 min readOct 11, 2012

Durante nuestra experiencia desarrollando proyectos de plataformas de servicios con alta disponibilidad hemos experimentado una piedra de tope en el crecimiento de plataformas de bases de datos utilizando MySQL: la imposibilidad de utilizar sistemas de rápida implementación de clusters SQL sin tener que alterar los sistemas de storage o modificar los sistemas separando escritura y lectura con maestros-esclavos.

Hasta ahora, de querer utilizar sistemas distribuidos o de alta performance utilizando MySQL se debió acudir a MySQL cluster. De otra forma se debía proceder a inseguras y engorrosas configuraciones de maestros y esclavos con separacion de lectura y escritura entre ellos.

En vista de esta problemática, en situaciones donde es imposible por diseño el utilizar un sistema de storage diferente al elegido o con el fin de evitar las engorrosas configuraciones maestro-esclavo es que surge Galera, un sistema de replicación multi-maestro síncrono que permite subsanar dichas problemáticas.

El caso de uso más común, al utilizar MySQL como motor de base de datos para aplicaciones web, se siguen varios pasos.

La instalación básica consiste en un solo servidor que brinde tanto el contenido de aplicación web, y a su vez albergue el motor de bases de datos. Con esto tenemos un servidor sin especialización.

Segundo paso consistiría en especializar la plataforma separando el motor de bases de datos del servidor de aplicaciones. Con esto tenemos dos servidores especializados.

Tercer paso en la escalabilidad de la aplicación web consiste en incluír un nuevo servidor de aplicaciones a la plataforma e incluso incluír un balanceador de carga frontal entre ellos. Con esto tenemos tres, o cuatro, servidores especializados, dos de aplicaciones y un motor de bases de datos, más el balanceador de carga.

Siguiente paso sería implementar clusterizar la anterior plataforma agregando un proceso de failover para el servidor frontal. Con esto aun seguiríamos utilizando solo un servidor para motor de bases de datos.

¿Qué sigue? Segmentación de bases de datos con sistemas de replicación, que permitan separar la carga en el motor de base de datos entre las lecturas y las escrituras solicitadas por la aplicación web.

Finalmente ¿qué nos resta? Si podemos clusterizar con mediana facilidad la plataforma de servicio de aplicaciones, aun nos resta cómo realizar algo similar con la plataforma de motor de bases de datos. Requerimos una plataforma multimaster robusta, que permita control de salud y exclusión de nodos con fallos. Nace entonces MySQL Galera.

La fotografía es © Strt’s Photos.

--

--

Fabián Arias
LINETS Tech Talk

Commercial Engineer, Economist, IT Consultant, Open Source Advocate, Sysape, not a window cleaner and all around good guy.