Ir al contenido

MySQL Cluster

De Wikipedia, la enciclopedia libre

Esta es una versión antigua de esta página, editada a las 20:30 17 nov 2007 por Marcos.s.lucas (discusión · contribs.). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.

(difs.) ← Revisión anterior · Ver revisión actual (difs.) · Revisión siguiente → (difs.)

MySQL Cluster.

Introducción

MySQL cluster es una tecnología que permite el clustering de bases de datos en memoria en un ambiente de no compartición. La arquitectura de no compartición permite que el sistema de base de datos funcione utilizando hardware no muy costoso y con requerimientos mínimos tanto de software como de hardware.

Como todo sistema de clustering, MySQL cluster está diseñado para no tener un único punto de falla, cada componente del clúster tiene su propia porción de disco y memoria para trabajar. Bajo este esquema no se recomienda el uso de mecanismos de almacenamiento compartido como carpetas compartidas por red, sistemas de archivos de red, etc.

La arquitectura básica de un clúster de MySQL integra un servidor MySQL server estándar y un motor de almacenamiento en memoria llamado NDB clúster, funcionando en un conjunto de una o más computadoras. Cada una de estas computadoras ejecutando uno o más procesos, que pueden consistir en procesos de MySQL server, nodos de almacenamiento de datos, servidor administrador del clúster, o programas especializados para acceder a los datos.

DIAGRAMA

Las tablas de la base de datos se almacenan utilizando el motor NDB en los nodos de almacenamientos. La manera de acceder a los datos almacenados en el clúster es atreves de cualquiera de los nodos MySQL. Los nodos de datos funcionan utilizando un esquema de espejado, permitiendo soportar sin impacto la caída de nodos individuales de datos dentro de cluster; la única consecuencia que tendría un suceso como la caída de un nodo de datos es que, un pequeño conjunto de transacciones relacionados al nodo caído serán abortadas, estas transacciones deben cumplir con el esquema transaccional así como si estuvieran trabajando directamente con un servidor no clusterizado de MySQL.

Conceptos principales de un cluster MySQL

· Motor de almacenamiento NDB, este es un motor de almacenamiento en memoria que ofrece alta disponibilidad y persistencia de datos. Es altamente configurable ofreciendo un gran número de opciones para manejar para balanceo de carga y la tolerancia a fallas.


· Nodo de administración (Nodo MGM), Este tipo de nodo cumple con la función de manejar, controlar y coordinar los otros nodos dentro del clúster. Este nodo implementa funciones de configuración de datos, levantar y bajar otros nodos dentro del clúster, ejecutar respaldos, y cualquier otra tarea administrativa necesaria. Como este nodo controla y configura el resto de los nodos; debería ser levantado antes que cualquier otro tipo de nodos, utilizando el comando ndb_mgmd.


· Nodo de datos, este tipo de nodo básicamente almacena los datos. La cantidad de nodos de este tipo dentro del cluster es iguala a la cantidad de replicas por la cantidad de fragmentos, es decir, si se manejan 4 replicas de los datos con 2 fragmentos, se necesitarían 8 nodos de datos. No es necesario manear más de una réplica. Este tipo de nodo se levanta utilizando el comando ndbd.


· Nodo SQL(MySQL server), a través de este tipo de nodos se accede a los datos clusterizados, básicamente consiste en un servidor MySQL server que utiliza el motor de almacenamiento NDB, se levanta utilizando el comando ndbcluster especificando el archivo de configuración necesario para este servidor.


· Cliente MySQL estándar, Para conectarse a un cluster MySQL remotamente utilizando un cliente, no es necesario configuraciones especiales, se debe utilizar el mismo cliente utilizado para conectarse a un servidor MySQL no clusterizado, el cluster debería ser transparente para los clientes.


· Clientes administrativos, existen otro tipo de clientes que se comunican con el servidor de administración y proveen las mismas funcionalidades que un nodo de este tipo implementa, con la diferencia de permitir ejecutarlas remotamente, como levantar y parar nodos, levantar y parar el seguimiento de mensajes para el permitir debugging, muestra el estado de otros nodos y sus respectivas versiones, realizar buckups, etc.