Skip to main content
MySQL Cluster, una solución open source a tener muy en cuenta

MySQL Cluster, una solución open source a tener muy en cuenta

En este post describiremos las características principales de MySQL Cluster.

MySQL Cluster es un cluster de base de datos escalable en escritura, que cumple el test ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad) y diseñado para proporcionar un 99,999% de disponibilidad. Con arquitectura distribuida, multi-master y sin SPOT (punto único de fallo).

MySQL Cluster escala horizontalmente en cualquier hardware, basado en el concepto “shared nothing” (múltiples máquinas físicamente independientes trabajando en común), con auto-sharding (almacenar datos de forma distribuida sin tener que configurar nada), para dar soporte a cargas de trabajo intensivas en escritura y lectura. Además, es accesible mediante interfaces SQL y NoSQL.

Algunas de sus características:

  • Licencia GNU GPL, open source.
  • Funciona en múltiples plataformas hardware, “commodity hardware”.
  • Uso completo de multi-threaded mediante threads del kernel.
  • Cumple con el test ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad).
  • Un sistema de privilegios y contraseñas muy flexible y seguro, que permite una verificación basada en el host. Las contraseñas son seguras porque todo el tráfico de las mismas está cifrado cuando se conecta con un servidor.
  • Los clientes pueden conectar con el servidor MySQL usando sockets TCP/IP en cualquier plataforma.

Podemos ver un diagrama de la arquitectura de MySQL Cluster:

MySQL Cluster AplciacionesCon la tecnología “Shared Nothing” de MySQL Cluster no necesitaremos de complejas y costosas soluciones hardware tradicionalmente pensadas para el escalamiento “Vertical”. Sistemas de ficheros en cluster o almacenamiento compartido ya no son necesarios para disponer de un motor de bases de datos escalable, tanto en lecturas como en escrituras.

Los datos se distribuyen entre los nodos de datos, que residen en servidores totalmente independientes, donde cada uno tiene su RAM, CPU y disco local (estos servidores pueden ser de cualquier tipo, incluso virtualizados).

La disponibilidad de los datos nos la ofrece la replicación, es decir, marcaremos un nivel de replicación de nuestros datos, tal y como podemos ver en la siguiente imagen:

MySQ Cluter 2Observamos que los registros 1 y 3 residen en 2 servidores de forma replicada, podemos perder uno de esos servidores y aun así tener los datos disponibles. Lo mismo ocurre con los registros 2 y 4 en otros 2 servidores diferentes.

De esta forma se consigue que los datos estén distribuidos y asegurados en esta tecnología “shared nothing”.

Hasta aquí bien, pero alguien se podría preguntar: “Entonces si MySQL Cluster es tan bueno, bonito y barato, ¿por qué no he oído hablar de esta opción para mis bases de datos?”, a continuación intentaremos dar respuesta a esta pregunta:

¿Tiene MySQL Cluster realmente un bajo TCO?

MySQL Cluster se distribuye en la versión Community con las mismas prestaciones que las versiones de pago, la diferencia está en el Soporte y en herramientas específicas para mejorar la gestión y monitorización del entorno, como “MySQL Cluster Manager” o “MySQL Cluster Monitor”.

Es decir, tenemos a nuestra disposición un motor MySQL escalable, capaz de soportar cualquier volumen de carga típicamente transaccional (OLTP), a coste de licenciamiento cero, con la única desventaja de requerir una configuración un poco más compleja que la instalación de cualquier otro motor de pago.

¿Puedo montar cualquier tipo de base de datos sobre MySQL Cluster?

No. MySQL Cluster no es una buena opción para entornos DWH (Data Ware House), debido a su arquitectura (múltiples nodos de datos independientes) ya que, en entornos donde existen joins complejas, el tráfico de red del cluster se puede convertir en un cuello de botella.

¿Cumple MySQL Cluster realmente el test ACID?

Sí, pero no, como diría David Bisbal en su canción… MySQL Cluster cumple todo el ACID, salvo la D (“Durabilidad”), que la cumple hasta un porcentaje determinado, de ahí el 99,999% que solemos ver en la documentación. Ese porcentaje lo marcamos a nivel de configuración con el parámetro “TimeBetweenGlobalCheckpoints”, que marca el tiempo en función de los “milisegundos” en los que se hace un checkpoint global. Por defecto son 2 segundos y podemos bajarlo hasta 20 milisegundos, pero aun así, en sentido estricto, no tenemos garantizado que al hacer un “commit” esos cambios los podamos recuperar tras un fallo (podemos perder los últimos 20 milisegundos). Esto no pasa en otros motores de BBDD, en los que al hacer un “commit” se garantiza que esos cambios han “bajado” a disco.

¿Requiere MySQL Cluster mucha memoria?

Sí, hace falta mucha memoria para montar una base de datos con MySQL Cluster. Por defecto, todo lo que ocupa la base de datos se carga en memoria (multiplicado por el número de réplicas de los datos). Estamos hablando de la memoria total del cluster si, por ejemplo, tenemos un cluster con 10 servidores con 20Gbytes cada uno disponibles para el cluster MySQL, tendremos un total de 200Gbytes para almacenar las BBDD. En cambio, si esas BBDD ocupan 80Gbytes en disco y configuramos nuestro cluster para un número de réplicas de 2, ocuparán un total de 160Gbytes del total de 200Gbytes disponibles.

Se puede hacer uso del concepto de “Tablespaces” para bajar estos requerimientos de memoria, de forma que sólo necesitemos suficiente memoria para almacenar los índices.

¿Hasta dónde puedo llegar con MySQL Cluster?

Existe el límite de 48 Nodos de datos. Se pueden ver algunos benchmarks en http://www.mysql.com/why-mysql/benchmarks/mysql-cluster/

FlexNoSQL“MySQL Cluster 7.4 delivers massively concurrent NoSQL access – 200 Million reads per second using the FlexAsync benchmark. This was achieved with 32 (out of a maximum 48) data nodes, each running on a server with 2x Intel Haswell E5-2697 v3 CPUs. “

DBT2SQL“MySQL Cluster 7.4 delivers massively concurrent SQL access – 2.5 Million SQL statements per second using the DBT2 benchmark. This was achieved with 16 (out of a maximum 48) data nodes, each running on a server with 2x Intel Haswell E5-2697 v3 CPUs. “

¿Qué puedo hacer como responsable de TI habiendo leído todo esto?

Pues, en primer lugar, debería buscar información más detallada de esta opción (https://www.mysql.com/) y evaluar los pros y contras con detenimiento para, posteriormente, plantear seriamente el uso de este motor de bases de datos y estimar los costes asociados de las migraciones, de la capacitación del personal técnico, etc. Así, quizás, con el simple hecho de ahorrarse los elevados costes de licenciamiento de otros motores de bases de datos le compense, al menos, intentar meterse en este “berenjenal”.

En Gfi le proponemos la migración de sus bases de datos a MySQL Cluster con las siguientes características:

  • Estudio inicial de viabilidad de la/s migración/es.
  • Diseño e implantación de la arquitectura MySQL Cluster, incluyendo varias sesiones de formación técnica para el mantenimiento de la infraestructura por parte de recursos propios del cliente, bajo presupuesto cerrado.
  • Diseño y ejecución de los procesos de migración, bajo presupuesto cerrado.
  • Soporte y mantenimiento de la solución, según los requerimientos del cliente:
    • Bolsa de horas para soporte y mantenimiento.
    • Mantenimiento preventivo semanal de rendimiento y capacidad.

     

 

 

Francisco Javier Pardillo Martín

Francisco Javier Pardillo Martín

Consultor Senior Base de Datos que con más de 12 años de experiencia como DBA y con más de 10 certificaciones, destacando: Oracle RAC 11g Release 2 and Grid Infrastructure Administration, Oracle Database 11g:New Features for Oracle10g OCP, Oracle Database 11g Data Warehousing y Oracle GoldenGate 10 Certified Impl Specialist

Francisco Javier Pardillo Martín ha escrito 5 entradas


Francisco Javier Pardillo Martín

Francisco Javier Pardillo Martín

Consultor Senior Base de Datos que con más de 12 años de experiencia como DBA y con más de 10 certificaciones, destacando: Oracle RAC 11g Release 2 and Grid Infrastructure Administration, Oracle Database 11g:New Features for Oracle10g OCP, Oracle Database 11g Data Warehousing y Oracle GoldenGate 10 Certified Impl Specialist

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *