Un clúster MySQL proporciona alta disponibilidad, escalabilidad y redundancia al distribuir datos y carga de trabajo entre nodos. Está compuesto de nodos de administración, datos y SQL. Los nodos de datos almacenan los datos e índices en memoria y replican la información de forma síncrona entre sí para garantizar la consistencia de datos. Los clientes se conectan de forma transparente al clúster a través de los nodos SQL.
TALLER PAEC preparatoria directamente de la secretaria de educación pública
Mysql cluster
1. INTRODUCCION
En la actualidad con el surgimiento de nuevas tecnologías y nuevas
necesidades de los usuarios de sistemas informáticos, surge la necesidad de
poder implementar un concepto el cual garantice y asegure que los recursos y
las aplicaciones de importancia decisiva permanecerán disponibles así como
que también la carga de trabajo sea balanceado para garantizar el alto
rendimiento.
Por ende un clúster es un grupo de sistemas independientes, conocidos
como nodos, que trabajan juntos como un sistema único para garantizar la
premisa anterior mencionada en donde hacíamos referencia a garantizarle al
usuario la disponibilidad.
La organización en clústeres permite a los usuarios y administradores
tener acceso a los nodos y administrarlos como un sistema único en lugar de
como equipos independientes.
Un clúster de servidores puede comprender hasta 8 nodos y se puede
configurar de tres formas: como clúster de servidores de nodo único, como
clúster de servidores de dispositivo de quórum único o como clúster de
servidores de conjunto de nodos mayoritario
En este trabajo se realiza lo que es un clúster, así como la configuración
en modo activo/activo el cual hace referencia a que si un servidor o nodo posee
mucha carga esta se distribuye entre los nodos para obtener un alto
rendimiento en la ejecución de los procesos.
MYSQL CLUSTER
MySQLCluster es una base de datos que como su nombre indica
funciona en un Clúster de servidores. Mucha gente confunde términos y define
un conjunto de servidores con replicación como un MySQLCluster, pero hay
que tener en cuenta que son dos conceptos totalmente distintos. MySQLCluster
nos ofrece:
Alta disponibilidad
Escalabilidad
Failover automático
Redundancia
Alto throughput
La versión actual es la 7.1
COMPONENTES
Un ClusterMySQL está compuesto por los siguientes componentes:
2. Manager (ndb_mgmd): es un servicio encargado de poner en marcha el
cluster, conectar nuevos servidores y ejecutar distintos comandos de
administración mediante el CLI ndb_mgm. Una vez que hemos
levantado el cluster no es necesario ni un requisito indispensable que
esté levantado.
Data Nodes (ndbd): son nodos encargados del almacenamiento de los
datos. Se recomiendan al menos dos para disponer de redundancia y
alta disponibilidad. Estas serán las máquinas más potentes del cluster,
almacenarán los índices en memoria y los datos en memoria o disco.
Todos los Data Nodes deben tener el mismo hardware para evitar crear
cuellos de botella.
API nodes (mysqld): aunque el más usado sea mysqld, un API node
puede ser cualquier aplicación que haciendo uso de la API acceda al
cluster. El típico, también conocido como SQL Node, es el demonio
mysqld típico (compilado con soporte nbdcluster). De esta forma
podremos escribir o leer datos de nuestra BBDD como hemos hecho
hasta ahora, mediante comandos SQL.
Se recomienda que cada componente esté instalado en una máquina física
distinta.
FUNCIONAMIENTO INTERNO
Internamente, el funcionamiento del cluster se basa en dos conceptos
básicos. Replicación interna síncrona y auto particionado de datos. La primera
nos ofrece la redundancia y el segundo nos da la escalabilidad. Importante
diferenciarlo de la replicación típica de MySQL (asíncrona). En este caso, hasta
que los datos no han sido replicados en los nodos seleccionados no se
devuelve el control al usuario, obteniendo de esta forma la consistencia que no
tenemos en la replicación asíncrona.
El particionado (PARTITION BY KEY) es también totalmente automático.
El clúster se encarga de dividir las tablas en distintas particiones y dividir los
datos entre los distintos Data Nodes. Aunque es posible que definamos nuestro
propio particionado, no se recomienda. Añades complejidad y posiblemente el
rendimiento no sea el esperado.
REPLICAS
A la hora de configurar nuestro clúster, una de los valores más
importantes a tener en cuenta es decidir el número de replicas que tendremos
de nuestros datos. No podemos decidir cualquier número, si no que tendremos
que seguir unas sencillas reglas. Pongamos por ejemplo que tenemos 4 Data
Nodes. En este caso podremos tener 1, 2 y 4 replicas. Esto es, el número de
nodos debe poder ser divisible por el numero de replicas. Aún así, no se
debería tener una única replica, ya que eso no nos da ningún tipo de alta
3. disponibilidad ya que al caerse un solo nodo perderíamos el acceso a los
datos.
NODEGROUPS
MySQLCluster agrupa automáticamente los Data Nodes en grupos. Esto
no está bajo nuestro control ni podemos decidir que nodo está en que grupo,
será trabajo del clúster hacer estas agrupaciones. Siguiendo el ejemplo
anterior, si tenemos 4 Data Nodes y 2 réplicas, MySQLCluster nos generará
dos NodeGroups (4/2=2). Además hay que tener en cuenta que el número de
particiones que se harán de nuestros datos siempre será igual al número
de Data Nodes.
MECANISMO DE ALMACENAMIENTO NDB
Utiliza un mecanismo de almacenamiento en memoria que ofrece alta
disponibilidad y persistencia de datos. Es altamente configurable ofreciendo un
gran número de opciones para manejar el balanceo de carga y la tolerancia a
fallos.
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. Implementa funciones de
configuración de datos, Iniciar o detener otros nodos dentro del clúster, ejecutar
respaldos, u otras tareas administrativas. Debido a que controla y configura el
resto de los nodos, debe iniciarse antes que cualquier otro tipo de nodos
utilizando el comando ndb_mgmd.
NODO DE DATOS
Este tipo de nodo almacena los datos. La cantidad de nodos de este tipo
dentro del clúster es igual a 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 manejar 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 inicia utilizando el comando ndbcluster,
especificando el archivo de configuración necesario para este servidor.
CLIENTES MYSQL
4. Para conectarse a un clúster MySQL remotamente, se debe utilizar el
mismo cliente utilizado para conectarse a un servidor MySQL no clusterizado.
El clúster es 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.
A diferencia de los nodos administrativos, los clientes permiten ejecutar las
tareas de administración remotamente. Algunas tareas que pueden realizarse
con estos clientes incluyen iniciar o detener nodos, administrar el seguimiento
de mensajes de depuración, mostrar el estado de otros nodos y sus respectivas
versiones, realizar respaldos, etc.