Anda di halaman 1dari 16

INSTITUTO TECNOLOGICO DE TUXTLA GUTIERREZ

TOPICOS SELECTOS DE BASE DE DATOS

PRACTICA #2: IMPLEMENTACION DE UN CLUSTER CON MySQL

NANGO SOLIS GALDINO BELIZARIO CATEDRATICO

INTEGRANTES DEL EQUIPO: ABRAHAM HERRERA FRANCISCO JAVIER PEA MORALES LUIS TINOCO RAMOS GUILLERMO VELAZQUEZ DIAZ GILBERTO DE JESUS INGENIERIA EN SISTEMAS COMPUTACIONALES

TUXTLA GUTIERREZ, CHIAPAS A 28 DE FEBRERO DE 2011

Qu es MySQL Cluster?
MySQL Cluster es una versin de alta disponibilidad, alta redundancia de MySQL adaptada para el entorno de computacin distribuida. Usa el motor de almacenamiento NDB Cluster para permitir la ejecucin de varios servidores MySQL en un cluster. Este motor de almacenamiento est disponible en las distribuciones binarias de MySQL 5.0 y en los RPMs compatibles con las distribuciones Linux ms modernas. (Tenga en cuenta que tanto los RPMs mysqlserver como mysql-max deben instalarse para tener la capacidad de MySQL Cluster .) Lo sistemas operativos en que MySQL Cluster est disponible son Linux, Mac OS X, y Solaris. (Agunos usuarios han reportado xito al ejecutar MySQL Cluster en FreeBSD, aunque no est soportada oficialmente por MySQL AB.) Se esta trabajando en hacer que Cluster se ejecute en todos los sistemas operativos soportados por MySQL, incluyendo Windows.

Arquitectura bsica de un clster MySQL


En su implementacin ms sencilla, un clster MySQL integra un servidor MySQL estndar y un motor de almacenamiento en memoria llamado NDB clster, funcionando en un conjunto de una o ms computadoras. Cada una de estas computadoras ejecutando uno o ms procesos, que pueden consistir en procesos de MySQL server, nodos de almacenamiento de datos, servidor administrador del clster, o programas especializados para acceder a los datos. Las tablas de la base de datos se almacenan utilizando el motor NDB en los nodos de almacenamiento. La manera de acceder a los datos almacenados en el clster es a travs de cualquiera de los nodos MySQL. Los nodos de datos funcionan utilizando un esquema de espejado, permitiendo soportar sin impacto la cada de nodos individuales de datos dentro de cluster. La nica consecuencia que tendra un suceso como la cada de un nodo de datos, es que un pequeo conjunto de transacciones relacionadas al nodo cado sern abortadas. Estas transacciones deben cumplir con el esquema transaccional, tal y 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 nmero de opciones para manejar el balanceo de cargas y la tolerancia a fallas. Nodo de administracin (Nodo MGM) Este tipo de nodo cumple con la funcin de manejar, controlar y coordinar los otros nodos dentro del clster. Implementa funciones de configuracin de datos, Iniciar o detener otros nodos dentro del clster, 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 cluster 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 necesitaran 8

nodos de datos. No es necesario manejar ms de una rplica. Este tipo de nodo se levanta utilizando el comando ndbd. Nodo SQL (MySQL server) A travs de este tipo de nodos se accede a los datos clusterizados. Bsicamente, consiste en un servidor MySQL Server que utiliza el motor de almacenamiento NDB. Se inicia utilizando el comando ndbcluster, especificando el archivo de configuracin necesario para este servidor . Clientes MySQL Para conectarse a un cluster MySQL remotamente, se debe utilizar el mismo cliente utilizado para conectarse a un servidor MySQL no clusterizado. El clster es transparente para los clientes.

Procesos Principales
MySQLD El proceso de servidor de bases de datos tradicional que puede ser utilizado en ambientes de clster o aislado. Para que este proceso sea utilizado dentro de un clster MySQL, necesita ser construido especialmente para soportar el motor de almacenamiento NDB, los binarios compilados disponibles en el sitio de MySQL ya integran esta funcionalidad al proceso. Para poder unir un servidor MySQL a un cluster, es necesario poder interactuar con el nodo de administracin de dicho cluster. Para esto en el archivo de configuracin de MySQL (my.cnf) se debe especificar el string de conexin a dicho servidor. La comunicacin entre entre servidores se realiza mediante el protocolo TCP/IP por lo cual es necesario indicar en el string de conexin la direccin IP del nodo administrativo y el puerto en el cual se publica el servicio de administracin. NDBD El proceso ndbd es el encargado de manejar todos los datos de las tablas utilizando el motor ndbd clster. Este proceso soporta la funcionalidad de manejo de transacciones distribuidas entre los nodos, recuperacin de nodos defectuososo o fuera de lnea, checkpoint to disk (el momento en el que los datos son escritos efectivamente a disco), respaldo en lnea, y otras tareas relativas a la distribucin del clster. El conjunto de procesos distribuido ndbd cooperan colectivamente en la tarea de manejo de datos. Cada uno de estos procesos genera un conjunto de archivos de log independientes que es almacenado en el directorio DataDir especificado en el archivo de configuracin de cada nodo de datos (config.ini). Para poder conectar

un nodo de datos es necesario proveer al proceso ndbd con la informacin necesaria acerca del nodo administrativo. Anlogamente a como se realiza con el nodo MySQL server, se debe especificar direccin IP y puerto del mismo en el archivo de configuracin. NDB_MGMD Es el proceso que controla el servidor de administracin, siendo responsable de conocer y mantener la configuracin del clster y distribuir dicha informacin a todos los nodos que la soliciten al unirse al cluster. Mantiene tambin el log de las actividades del clster y reporta su estado a los clientes que se conectan a l. En un esquema con un nico servidor de administracin, no es necesario especificar un string de conexin al nodod de administracin dado que es el mismo el propio servidor. Si se est trabajando en un esquema donde existe ms de un nodo de administracin se debe especificar identificar cada uno con un ID especfico e indicar las cadenas de conexin a cada uno de ellos. Junto con el proceso NDB_MDMd se encuentra ndb_mgm, que es responsable de manejar el cliente de administracin que interacta con el nodo de administracin.

Desarrollo de la Prctica
Una vez que conocemos la teora, vamos a poner en marcha nuestro primer Cluster. Estar compuesto nicamente por 3 ordenadores. Nodo 1 (192.168.0.108):

ndb_mgmd

Nodo 2 (192.168.0.107):

ndbd mysqld

Nodo 3 (192.168.0.106):

ndbd mysqld

Esto es, nuestro nodo 1 sera el nodo administrador mientras que los nodos 2 y 3 seran ambos nodos de datos y nodos SQL. Lo primero que tenemos que hacer es decargarnos MySQL Cluster de la pgina oficial http://mysql.com/downloads/cluster/ , una vez que estemos en la pagina descargamos de acuerdo a nuestro sistema operativo.

Para nuestra practica bajaremos el archivo mysql-cluster-gpl-noinstall-7.1.10win32.zip para Windows 32 bits y el archivo mysql-cluster-gpl-7.1.10-linux-i686glibc23.tar.gz para Linux Generic, esto debido a que los nodos 1 y 2 correran bajo Linux (Debian y Ubuntu respectivamente) mientras que el nodo 3 correra bajo Windows Vista de 32bits. La versin de MySQL Cluster en el momento de elaborar este documento era MySQL Cluster 7.1.10. Teniendo el software antes mencionado procedemos primeramente a hacer la configuracin necesaria, procederemos entonces a hacer los ajustes necesarios para la maquinas donde estarn los nodos de datos y el nodo de administracion. Primero descomprimimos el archivo mysql-cluster-gpl-7.1.10-linux-i686glibc23.tar.gz si es una maquina Linux en nuestra carpeta personal (/home/tuUsuario) y si es una maquina Windows descomprimimos el archivo mysql-cluster-gpl-noinstall-7.1.10-win32.zip en c:\Users\tuUsuario; luego independientemente del sistema operativo renombramos la carpeta que se crea a mysqlc. (tuUsuario es el nombre del usuario que uses en la maquina).

Mysqlc contiene todos los archivos binarios necesarios para correr los demonios que el cluster necesita.

Hecho lo anterior ahora en nuestra carpeta personal crearemos una carpeta llamada my_cluster y dentro de esta carpeta crearemos las siguientes carpetas: conf mysqld_data, dentro de esta carpeta crearemos las siguientes carpetas: o mysql o ndbinfo ndb_data

Hasta aqu la configuracin del nodo de administracin y los nodos de datos es la misma, es decir creamos las mismas carpetas en las 3 maquinas donde se alojen los nodos, solo que para Windows las carpetas mysqlc y my_cluster debern estar en el directorio c:\Users\tuUsuario, mientras que en las maquinas Linux estas carpetas estarn en el directorio /home/tuUsuario. Ahora procederemos a hacer la configuracin del nodo administrador, para lo cual crearemos el archivo config.ini dentro de la carpeta conf que creamos anteriormente. Este archivo contendr lo siguiente [ndb_mgmd] hostname=192.168.0.108 #IP nodo administrador datadir=/home/usuarioMaquinaAdministradora/my_cluster/ndb_data NodeId=1 [ndbd default] Noforeplicas=2 #Maquina Linux

[ndbd] hostname=192.168.0.107 #IP nodo de datos Linux datadir=/home/usuarioMaquinaNododeDatos/my_cluster/ndb_data NodeId=3 #Maquina Windows [ndbd] hostname=192.168.0.106 #IP nodo de datos Windows datadir=c:\Users\usuarioMaquinaNododeDatos\my_cluster\ndb_data NodeId=4 [mysqld] [mysqld]

En el archivo anterior definimos que maquina va a ser el nodo administrador en el bloque [ndb_mgmd] indicando la direccin en la etiqueta hostname y definiendo el directorio donde se guardara los logs de los nodos de datos en la etiqueta datadir, asi como indicando el directorio donde se encuentran los binarios necesarios para los demonios que necesita el cluster esto se indica en la etiqueta basedir. Adems

la maquina administradora deber tener el id 1 indicandoselo en la etiqueta NodeId. Los nodos de datos se definen bajo el bloque [ndbd] definiendo casi los mismos parmetros que para el nodo administrador ya que los nodos de datos no definen el parmetro basedir, se debe definir tambin un Id para los nodos. La ruta del parmetro datadir se especifica de manera diferente para una maquina Linux que para una maquina Windows, como se puede ver en la imagen del ejemplo del archivo de config.ini. En config.ini se agregan los bloques [mysqld] dependiendo de el numero de nodos sql que se quieran levantar. Una vez definido el archivo config.ini se procede a arrancar el demonio del nodo administrador, para lo cual abrimos una terminal e ingresamos a la carpeta my_cluster y escribimos lo siguiente: /home/tuUsuario/mysqlc/bin/ndb_mgmd f configdir=/home/tuUsuario/my_cluster/conf/ conf/config.ini initial

Si todo sale bien procedemos a entrar a la consola del nodo de administracion pero tenemos que movernos antes a la carpeta que contiene el ejecutable cd /home/tuUsuario/mysqlc/bin y ahora si escibimos ./ndb_mgm Y luego escribimos show para ver las conexiones.

Dejaremos esta consola abierta y procederemos a configurar los nodos de datos. Antes que nada como el demonio de mysqld necesita la base de datos de mysql con la configuracin esencial de datos procederemos a instalar la base de datos. En Linux lo anterior se hace escribiendo en una terminal el siguiente comando $HOME/mysqlc/scripts/mysql_install_db --no-defaults -datadir=$HOME/my_cluster/mysqld_data/ Mientras que en windows se hace con los siguientes comandos desde smbolo de sistema copy c:\Users\tuUsuario\mysqlc\data\mysql my_cluster\mysqld_data\mysql copy c:\Users\tuUsuario\mysqlc\data\ndbinfo my_cluster\mysqld_data\ndbinfo

una vez hecho lo anterior se procede a crear el archive de configuracion para los nodos de datos el cual debera guardarse dentro de la carpeta conf, dicho archive en una maquina Windows contendra lo siguiente: [mysqld] ndbcluster port=4001 ndb-connectstring=host=192.168.0.108 #IP nodo administrador [mysql_cluster] ndb-connectstring=host=192.168.0.108 #IP nodo administrador

el Puerto que indiques debe ser diferente a 3306 de preferencia mayor a 4000, 3306 no por que lo utiliza otro demonio de mysql.

mientras que la configuracion en una maquina linux sera similar solo que se debera de agregar los siguientes parmetros datatir=/home/UsuarioMaquinaNodoDatos/my_cluster/mysqld_data basedir=/home/UsuarioMaquinaNodoDatos/mysqlc ademas de indicar un Puerto diferente al que se indico en la maquina Windows y que no sea 3306 puesto que ese esta ocupado por otro demonio de mysql.

Hecho lo anterior conectaremos ahora con el nodo administrador esto se hace en windows con el siguiente comando C:\Users\UsuarioMaquinaNodoDatos\mysqlc\bin\ndbd c 192.168.0.108:1186

Mientras que en Linux se hace con el comando /home/UsuarioMaquinaNodoDatos/mysqlc/bin/ndbd c 192.168.0.108:1186

Seguido de esto en la maquina administradora al ingresar el comando show en la consola del nodo administrador podremos ver que ya tenemos los 2 nodos de datos conectados.

Ahora solo resta levantar los nodos SQL, para lo cual ingresamos a travs de consola hasta la carpeta my_cluster y escribimos el siguiente comando en Windows para levantar la api c:\Users\UsuarioNodoDatos\mysqlc\bin\mysqld --defaults-file=conf\my.cnf

en linux el commando seria /home/usuarioNodosDatos/mysqlc/bin/mysqld --defaults-file=conf\my.cnf Una vez ingresado dichos commandos checamos nuevamente con show en la consola del nodo administrador y veremos que ya tenemos los apis levantados.

Con esto ya tenemos el cluster de mysql configurado correctamente, solo resta hacer algunas pruebas para ver si el cluster esta funcionando correctamente. Dichas pruebas y lo que esta escrito en este documento se puede ver en el video que se adjunta al reporte de esta practica.

Referencias
Captulo 16. MySQL Cluster. Recuperado el 23 de Febrero de 2011, de http://dev.mysql.com/doc/refman/5.0/es/ndbcluster.html MySQL Cluster Quick Start for Linux. Recuperado el 24 de Febrero de 2011, de http://downloads.mysql.com/tutorials/cluster/GetMySQLClusterRunningLINUX.pdf MySQL Cluster Quick Start for Windows .Recuperado el 24 de Febrero de 2011, de http://downloads.mysql.com/tutorials/cluster/GetMySQLClusterRunningWindows.pdf Instalacion y configuracion de un cluster de mysql en windows y linux simultneamente. Recuperado el 25 de Febrero de 2011, de http://www.youtube.com/watch?v=o-wKz2o9Nvs (Agosto 25, 2010). MySQL Cluster. Recuperado el 26 de Febrero de 2011, de http://es.wikipedia.org/wiki/MySQL_Cluster

Anda mungkin juga menyukai