reporte instalaciÓn y configuraciÓn del mysql cluster
TRANSCRIPT
Subsecretaría de Educación Superior
TECNOLÓGICO NACIONAL DE MÉXICO Instituto Tecnológico de Pachuca
“2015, Año del Generalísimo José María Morelos y Pavón”
INGENIERÍA EN SISTEMAS COMPUTACIONALES
ADMINISTRACIÓN BASE DE DATOS
PRESENTAN:
NOMBRE NO. CONTROL: BENÍTEZ GASPAR EDUARDO 12200597 CABRERA CRUZ RICARDO LEVI 12200600 DOMÍNGUEZ QUIROZ HERIBERTO 12200607
CATEDRÁTICO: ING ARRIETA ZÚÑIGA JUAN ALEJANDRO
11 DE MAYO DEL 2015
Carretera México-Pachuca Km. 87.5, Col. Venta Prieta, Pachuca, Hidalgo. C.P. 42080 A. P. 276, Tels. : (01 771) 7113073, 7113596, 7113140, 7115119,
www.itpachuca.edu.mx 7115538 Fax (01771)7113399
REPORTE CLUSTER
INTRODUCCIÓN
En este documento se realiza con la intención de dar conocimiento del proyecto
realizado acerca de un clúster, realizado con MySQL Clúster versión -7.1.34- .
CONCEPTOS
Clúster: se aplica a los conjuntos o conglomerados de computadoras unidos entre
sí normalmente por una red de alta velocidad y que se comportan como si fuesen
una única computadora.
MySQL clúster: 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 gestor de base de datos (SGBD) funcione utilizando
hardware no muy costoso y con requerimientos mínimos tanto de software como
de hardware.
COMPONENTES
Un Clúster MySQL está compuesto por los siguientes componentes:
Manager (ndb_mgmd): es un servicio encargado de poner en marcha el
clúster, conectar nuevos servidores y ejecutar distintos comandos de
administración mediante el CLI ndb_mgm. Una vez que hemos levantado el
clúster 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 clúster,
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
clúster. 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.
INSTRUCCIONES PARA REALIZAR EL CLUSTER DE MySQL
A continuación se presenta la configuración, la primera parte es tanto para nodos
como para el administrador:
1. Descargar MySQL clúster desde la página oficial que
es: http://www.mysql.com/products/cluster/ la cual
su última versión es la 7.4.6 pero aquí se usó la
versión 7.1.34.
2. Desactivar los servicios de antivirus y firewall recordando también
desactivar el del sistema operativo en este caso Windows si se tiene
activado.
3. Crear una red para las computadoras (al menos 3), en este caso usamos
un modem, pueden ser útil otros dispositivos como un router.
4. Establecer direcciones IP fijas para lo cual vamos a centro de redes y
recursos compartidos, luego en administrar conexiones de red
seleccionamos la red en la que trabajaremos (propiedades),
seleccionamos protocolo de internet versión.
En seguida asignamos ip´s fijas a
los equipos en nuestro caso
fueron:
Administrador:192.168.3.7
Nodo 1:192.168.3.5
Nodo 2:192.168.3.4
5. Al hacer esto y para verificar que la conexión fue exitosa, abrimos la
consola de comandos (cmd) y mandamos un ping a cualquiera de las ip´s
de los equipos para cerciorarnos de que están conectados.
6. Detener el servicio de MySQL56, para esto busca servicios y buscamos lo
anterior mencionado
7. Nos dirigimos al disco local(C:) creamos dos carpetas con los siguientes
nombres estas tanto para el administrador como para los dos nodos:
my_cluster
mysql
8. Ahora entramos a la carpeta my_cluster y crearemos dentro tres
carpetas:
conf
mysqld_data
ndb_data
9. Posteriormente En la carpeta mysqld_data creamos las siguientes dos
carpetas:
mysql
ndbinfo
10. El siguiente paso es descomprimir el archivo .zip que descargamos de la
página oficial, una vez descomprimido procedemos a copiar todos los
archivos que descomprimimos en este caso son 17 archivos a la carpeta
que se llama “mysql” que creamos en la unidad “C:” de nuestro equipo.
Con esto terminamos los pasos generales para ambas partes tanto para nodos
como el administrador.
Con el uso de la
aplicación winrar
descomprimimos el
archivo.zip en el
escritorio.
Después de que se
descomprime el archivo
copiamos los archivos
en este caso son 17 a la
carpeta que se llama
mysql que se creo en
la unidad “C:”.
CONFIGURACIÓN DEL ADMINISTRADOR
En la carpeta conf crearemos un archivo en bloc de notas y lo guardemos como
config y con extensión .ini, es importante que este escrito de la misma forma tanto
las minúsculas como las mayúsculas deben respetarse por lo que tendrá lo
siguiente:
------------------------------------------------------------------------------------------------------------------------
[ndb_mgmd]
#opciones de procesos
HostName=192.168.3.7
#se guardaran acá los logs de admon
DataDir=c:\my_cluster\ndb_data
Nodeid=1
[Ndbd default]
#numero de replicas
NoOfReplicas=2
#Datadir=c:/mysql/bin/cluster-data
#DataMemory=80M
#IndexMemory=18M
#nodo 1
[Ndbd]
HostName=192.168.3.5
DataDir=c:\my_cluster\ndb_data
Nodeid=2
#nodo 2
[Ndbd]
HostName=192.168.3.4
DataDir=c:\my_cluster\ndb_data
Nodeid=3
[Mysqld]
[Mysqld]
------------------------------------------------------------------------------------------------------------------------
Nota: en la parte hostname pondremos las direcciones ip que asignamos a nuestros equipos.
Los nodos de datos se definen bajo el bloque [ndbd] definiendo casi los mismos
parámetros que para el nodo administrador ya que los nodos de datos no definen
el parámetro basedir, se debe definir también un Id para los nodos.
En config.ini se agregan los bloques [mysqld] dependiendo del número de nodos
SQL que se quieran levantar. Al terminar el archivo config.ini al nodo
administrador procede a abrir una nueva terminal cmd (ejecutada como
administrador) para iniciar el nodo administrador, escribimos lo siguiente en este
orden:
cd..
cd..
cd my_cluster
/mysql/bin/ndb_mgmd -f conf/config.ini --initial --configdir=c:\my_cluster\conf\
Al terminar dejamos esta ventana del cmd abierta y abrimos otra, y escribimos lo
siguiente:
cd.. cd.. cd mysql cd bin ndb_mgm
Hasta aquí tenemos el nodo administrador ya levantado.
NOTA: Es importante realizar todos los comandos a mano para evitar errores que
se pueden producir al copiarlos, ya sea falta de una letra o un espacio en blanco
de más.
Dentro del ndb_mgm este escribir show para ver las conexiones existentes de los
nodos, se puede observar que dice not connected, a continuación pasaremos a
trabajar en los nodos dejando lo anterior abierto.
CONFIGURACIÓN DE LOS NODOS
MySQL necesita la base de datos de MySQL con la configuración esencial de
datos procederemos a instalar la base de datos, para esto usaremos los siguientes
comandos.
copy c:\mysql\data\mysql my_cluster\mysqld_data\mysql
copy c:\mysql\data\ndbinfo my_cluster\mysqld_data\ndbinfo
El primero nos copió 69 archivos
Y el segundo comando nos copió 46 archivos, hay que decir que la cantidad de
archivos que se copian varía en cada versión pudiendo ser mayor o menor a la
que se menciono
Una vez que se realizó esto se dirige a la carpeta my_cluster luego a la carpeta
conf que ahí crearemos un archivo nuevamente con el bloc de notas con el
nombre my y extensión .cnf y se escribirá lo siguiente, solo lo correspondiente a
cada nodo:
Nodo 1 [mysqld] ndbcluster port=4001 ndb-connectstring='host=192.168.3.7' [mysql_cluster] ndb-connectstring='host=192.168.3.7'
Nodo 2 [mysqld] ndbcluster port=4002 ndb-connectstring='host=192.168.3.7' [mysql_cluster] ndb-connectstring='host=192.168.3.7'
En la parte ndb-connectstring va la ip del administrador, nuevamente es
importante mencionar que debemos respetar las mayúsculas y minúsculas del
archivo.
Otro punto es que el puerto que indiques debe ser diferente a 3306 ya que este
puerto es ocupado por el servicio de MySQL, es recomendable asignar un puerto
de preferencia mayor a 4000, dependiendo el nodo se asigna un valor que se
empareje con el número de nodo, es decir, nodo1=4001, nodo2=4002, etc.
Una vez realizado para conectarnos con el nodo administrador usamos los
siguientes comandos:
cd..
cd..
c:\mysql\bin\ndbd –c 192.168.3.8:1186
Aquí se muestra cuando se conectaron ambos nodos.
Solo falta levantar los nodos por lo que se realizara el siguiente comando, para lo
cual abrimos una nueva terminal (como administrador) e ingresamos las
siguientes instrucciones, para levantar las APIS de los nodos:
cd..
cd..
cd my_cluster
c: /mysql/bin/mysqld --defaults-file=conf/my.cnf –console
Una vez que tengamos los nodos levantados en la consola del administrador
ponemos un show para verificar que efectivamente los Apis fueron levantados, al
final tiene que mostrarse así:
PRUEBAS
Primero hay que inicializar el MySQL, para esto se abre una nueva consola en uno
de los nodos y escribir lo siguiente:
cd.. cd.. cd mysql cd bin MySQL –u root –P4001
Una vez dentro podemos crear una base de datos con el comando, create
database
1. Creamos una base de datos llamada “createdatabase cluster”
2. Después ingresamos el comando “show databases” para verificar que fue
creada la base de datos cluster.
3. Ponemos en uso la base de datos con el comando “use cluster”
4. Ahora mediante el comando “show tables” veremos las tablas que hemos
creado, en este caso como no se ha creado ninguna no nos mostrara
nada.
5. Ahora crearemos dos tablas ingresando los siguientes comandos:
Create table prueba (id int) engine=ndbcluster;
Create table levi(id int) engine=ndbcluster;
6. Ahora mediante otro “show tables” verificamos que nuestras tablas
hayan sido creadas.
7. Ahora procedemos a insertar dos registros en las tablas que creamos
mediante los siguientes comandos:
Insert into levi values (1);
Insert into prueba values (5);
8. Procedemos a revisar si nuestros registros fueron insertados
correctamente mediante el comando:
Select * from prueba;
Select * from levi;
Por ultimo tenemos el segundo nodo que visualiza las base de datos que se
crearon y entre estas bases de datos se encuentra la base de datos cluster que
se creó en el otro nodo así como la tabla que se creo en ese instante en el que
ingreso el nodo 2 la cual fue la tabla prueba.
CONCLUSIONES
El cluster de MySQL es una herramienta que puede ser utilizada para bases de
datos en sistemas distribuidos, MySQL es de distribución libre, resulta ser de
utilidad para crear un sistema distribuido sin tener que hacer muchos gastos en
equipo de cómputo. cluster de MySQL nos permite compartir una base de datos
con distintos clientes y resulta de gran ayuda ya que permite una mejor
administración y mejorar la seguridad de la base de datos. Durante la instalación
y configuración de MySQL en nuestros equipos se tuvieron algunas dificultades en
lo que fue la creación de los archivos de configuración ya que no los escribíamos
correctamente, lo cual ocasionaba errores, por ello es muy importante revisar la
sintaxis de estos comandos y respetar el uso de minúsculas y mayúsculas. Este
tipo de prácticas nos puede ser muy útil cuando realicemos una base de datos
distribuida para un pequeño negocio, además de que nos sirve para obtener
experiencia.
REFERENCIAS
http://www.mysql.com/products/cluster/
http://dev.mysql.com/doc/refman/5.0/es/multi-install.html