You are on page 1of 42

TEMA 5.

BASES DE DATOS
DISTRIBUIDAS
1. INTRODUCCIÓN
2. REPLICACION
3. BALANCEO DE CARGA Y ALTA
DISPONIBILIDAD
4. IMPLEMENTACIÓN DEL CLUSTER

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 1


1.INTRODUCCIÓN
 Fuentes:
 Documentación Oficial en castellano v5.0
 Documentación Oficial en ingles v5.6
 Replicación semi-sincrona con Mysql5.5 por Miguel Angel Nieto
 Blog Algo sobre Informática
 Configurar replicación en Mysql5.5
 Documento de Carlos García Perez
 Mysqlsandbox.- Una buena herramienta para tener ejecutadas varios SGBD
mysql sin tener que instalar nada.
 Mysql Cluster (5.0 o 5.6).- El entorno específico de Mysql para bases de datos
distribuidas

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 2


1. INTRODUCCIÓN

 Evolución del tratamiento de los datos

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 3


1. INTRODUCCIÓN

 Una Base de Datos Distribuida (BDD) es una base de


datos que pertenece lógicamente al mismo sistema pero
que se almacenan en diferentes maquinas conectadas
por una red.
 Un Sistema Gestor de Base de Datos Distribuido
(DDMGS), es el software que permite gestionar la
BDD y hace que dicha distribución sea transparente
para los usuarios.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 4


1. INTRODUCCIÓN

 La aparición de las BDD se debe a múltiples factores


entre los que caben destacar:
 Un cjto. de ordenadores personales es más barato y flexible
que un gran MainFrame caro y que da poca flexibilidad de
ubicación.
 Mejora rendimiento.- Las operaciones se distribuyen.
 Fiabilidad y Disponibilidad.- Si falla un nodo no pasa nada.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 5


1. INTRODUCCIÓN

 Por contra las BDD implican una mayor complejidad en el


diseño, implementación y gestión de los datos, por lo que un
buen SGBDD debe incorporar las siguientes características:
 Capacidad.- Tener acceso a sitios remotos e intercambiar información con
los mismos para ejecutar consultas.
 Diccionario.- Disponer de un catálogo sobre cómo están distribuidos y
replicados los datos del sistema distribuido.
 Capacidad de optimizar consultas sobre datos que estén en más de un
sitio.
 Mantener la integridad en los permisos sobre datos replicados.
 Mantener la consistencia de las copias de un elemento replicado.
 Garantizar la recuperación del sistema en una caída del mismo.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 6


1. INTRODUCCIÓN:
FRAGMENTACIÓN y REPLICACIÓN

Diseñar BDD implica decidir sobre dos técnicas:


 FRAGMENTACIÓN.- Consiste en distribuir los datos de las tablas en
distintos equipos:
 Horizontal.- Se deciden que registros de una tabla se almacenaran en cada nodo.
Divide las tuplas según una o varias condiciones sobre distintos atributos.
 Vertical.- Se divide la información en campos. Será necesario incluir en los
fragmentos un campo común, (suele ser la clave)
 Mixta.- Unión de las dos anteriores.
Es un proceso complejo, que implica un costo en el acceso a los datos por parte
de los usuarios.
La información sobre fragmentación se guarda en un esquema de
fragmentación.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 7


1. INTRODUCCIÓN:
FRAGMENTACIÓN y REPLICACIÓN

REPLICACIÓN.- Mejora la disponibilidad de los datos. Dos


extremos:
 Replicación de toda la base de datos en todos los equipos
 No replicación, en cada equipo se almacena una parte de la base de datos
Entre estos dos extremos se da una amplia gama de posibilidades
descrita en el esquema de replicación.
La replicación distribuye la carga, acelera búsquedas y mejora la
disponibilidad, es optima para sistemas con muchas lecturas, pero
requiere N veces más actualización y consume N veces más
almacenamiento. N es el número de replicas.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 8


2. REPLICACIÓN

 Mysql hace replicación basada en un maestro y uno o


más esclavos.
 Los esclavos son servidores que mantienen en todo
momento una copia exacta de los datos del servidor
maestro.
 Este sistema permite:
 Distribuir copias de seguridad
 Balancear la carga entre varios servidores (esclavos)
 Permitir alta disponibilidad y tolerancia a fallos, si falla un
maestro un esclavo asume su papel.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 9


2. REPLICACIÓN

 La carga de consultas se puede distribuir en los


esclavos, las de escritura siempre deberán
hacerse sobre el maestro (unidireccional).

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 10


2. REPLICACIÓN

 La arquitectura a utilizar puede ser variada, algunos


ejemplos:
 Un maestro / varios esclavos
 Un maestro / un esclavo
 Maestro dual.- Ambos hacen de maestros y esclavos
simultáneamente.
 Anillo de replicación.- Es el caso anterior pero con más de
dos servidores.
 Pirámide.- Algunos esclavos actúan de maestros de otros
esclavos.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 11


2. REPLICACIÓN

 Implementación, pasos:
 1º .- Crear en el maestro un cuenta que pueda usar el
esclavo para conectar, debe tener el privilegio
REPLICATION SLAVE (privilegio global).
 2º .- Realizar una copia de seguridad de las bases de
datos que se pretendan replicar (con mysqldump o
mysqlbackup para Innodb)

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 12


2. REPLICACIÓN

 Implementación, pasos(cont.):
 3º.- Parar el maestro y configurar el fichero my.ini
 Activar el registro binario, aconsejable ponerle nombre al
fichero.
 Asignar a la variable server-id el valor 1

 Para mayor durabilidad y consistencia usando InnoDB con


transacciones (autocommit=0), debemos usar
innodb_flush_logs_at_trx_commit=1, sync-binlog=1.
 4º.- Arrancar el maestro, con el fichero de
configuración anterior.
ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 13
2. REPLICACIÓN

 Implementación, pasos (cont.):


 5º.- En los esclavos restaurar la copia de seguridad.
 6º.- Modificar el fichero my.ini de los esclavos:
 Añadiendo valor al parámetro server-id, distinto en cada uno y mayor
que 1 (maestro).
 Se podría optar por configurar los parámetros del maestro en el fichero
con: master-host, master-user, etc..
 7º.- Reiniciar los esclavos para que recojan los cambios en el
fichero my.ini.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 14


2. REPLICACIÓN

 Implementación, pasos (cont.):


 8º.- Conectar con el esclavo y configurar los parámetros del
maestro, sino lo hicimos en el fichero my.ini, con:
CHANGE MASTER TO
MASTER_HOST=‘master’,
MASTER_USER=‘usuario con privilegio REPLICATION SLAVE’,
MASTER_PASSWORD=‘password del usuario anterior’,
MASTER_LOG_FILE=‘fichero bin log en el maestro’,
MASTER_LOG_POS=posicion en el registro binario a partir de la cual
se van a tener cuenta las actualizaciones (no es necesario pero si hay
que poner un valor es necesario consultar con mysqlbinlog).

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 15


2. REPLICACIÓN

 Implementación, pasos (cont.):


 9º.- Arrancar el esclavo START SLAVE;
 Una vez que se arranca el esclavo, este conecta con el
maestro (Thread I/O) y atrapa cualquier actualizacion
que haya ocurrido desde que se obtuvieran los datos.
 En el esclavo en el directorio de datos habrá un fichero
llamado master.info y otro relay-log.info que el esclavo
usa para saber hasta que punto ha procesado el log-
binario del maestro.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 16


2. REPLICACIÓN

 Otras consideraciones
 Para parar el esclavo: STOP SLAVE;
 Para registrar solo los cambios en una determinada base de
datos usar la variable binlog-do-db en el maestro, tantas
veces como bases de datos a replicar.
 master-connect-retry .- Variable para definir en el esclavo el
número de segundos que esperará antes de reconectarse con
el maestro en caso de error en la conexión.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 17


2. REPLICACIÓN

 Monitorización:
 SHOW MASTER STATUS\G.- Muestra información del estado de
replicación en el maestro.
 SHOW MASTER LOGS\G.- Para conocer los registros binarios que
existen en el disco.
 SHOW SLAVE STATUS\G.- Resumen detallado del estado del esclavo.
 SHOW SLAVE HOSTS\G.- Hosts registrados con el maestro.
 SHOW BINLOG EVENTS.- Para mostrar el contenido del registro
binario, tambien con mysqlbinlog
 SHOW BINARY LOGS.- Muestra los archivos binarios existentes.
 PURGE BINARY LOGS BEFORE ‘Fecha’.- Elimina los logs desde una
determinada fecha.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 18


2. REPLICACIÓN

 Monitorización:
 RESET MASTER.- Borra todos los logs binarios.
 PURGE BINARY LOGS TO ‘ficherologbinario‘.- Elimina un fichero
binario concreto.
 STOP/START SLAVE SQL_THREAD.- Para/Arranca el hilo Sql en el
esclavo, que es el que se encarga de realizar las operaciones sql.
 STOP/START SLAVE IO_THREAD.- Para/Arranca el hilo de I/O con el
maestro. Este hilo se encarga de enviar y recibir datos del maestro.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 19


2. REPLICACIÓN
 Ejercicio 1.- Realiza un esquema de replicación usando tres equipos, un maestro y
dos esclavos, para replicar la base de datos nba.
 Ejercicio 2.- Para los esclavos y ejecuta actualizaciones, borrados, etc. sobre las tablas
de esta base de datos, comprueba como los datos en los esclavos no se actualizan hasta
que no se arrancan.
 Ejercicio 3.- Haz comprobaciones de los hilos I/O y SQL. Como actúan cada uno de
ellos.
 Ejercicio 4.- Explica lo que habrá que hacer para agregar un esclavo al sistema
anterior.
 Ejercicio 5.- Supón que cae un maestro, indica los pasos que consideras necesarios
para sustituirlo por un esclavo.
 Ejercicio 6.- Modifica el esquema anterior para organizar un esquema de dos niveles,
haciendo que uno de los esclavos a su vez sea maestro de otro esclavo.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 20


3. BALANCEO DE CARGA y
ALTA DISPONIBILIDAD
 Balanceo de Carga.- Técnica de los SGBD
para repartir la carga entra varios equipos o
servidores cuando hay un gran volumen de
accesos.
 Alta Disponibilidad.- Técnica de los SGBD por
la que los datos siempre están disponibles a los
usuarios y de una forma transparente.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 21


3. BALANCEO DE CARGA y
ALTA DISPONIBILIDAD
 MySQL Cluster es una versión de MySQL que ofrece estas dos técnicas en
un entorno distribuido.
 Usa el motor de almacenamiento NDB(Network Database) para permitir la
ejecución de varios servidores MySQL en un cluster.-
 Cluster.- Cjto. De ordenadores que ejecutan uno o más procesos llamados
nodos, que pueden ser:
 Servidores MySQL.- Acceden a los datos.
 Nodos de datos.- Son los que contienen los datos propiamente dichos.
 Servidores de coordinación.-
 Todos estos procesos, que no tienen porque ejecutarse en distintos equipos,
trabajan juntos y coordinados formando un cluster de base de datos.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 22


3. BALANCEO DE CARGA y
ALTA DISPONIBILIDAD

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 23


3. BALANCEO DE CARGA y
ALTA DISPONIBILIDAD
 NODOS DEL CLUSTER
 Nodo de Administración (Management Node o MGM node)
Nodo que gestiona al resto. Se lanza con el comando ndb_mgmd.
Contiene la configuración global del cluster y cualquier evento ocurrido en el
cluster se registra en él. El resto de nodos obtienen su configuración de éste.
 Nodo de Datos (Data node)

Se encarga de almacenar los datos. Su número es el producto del nº replicas por el


nº de fragmentos. Comando ndb
 Nodo SQL (SQL node)

Son los nodos que acceden a los datos (nodos de datos) del cluster. Normalmente
son servidores MySQL que usan el motor ndb. Comando mysqld --ndbcluster
En una configuración mínima habrá un nodo de cada.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 24


3. BALANCEO DE CARGA y
ALTA DISPONIBILIDAD

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 25


3. BALANCEO DE CARGA y
ALTA DISPONIBILIDAD
 Clientes del cluster
 Clientes estándar.- No difieren del resto de clientes que se
usan para acceder a un servidor MySQL estandar.
 Clientes de administración.- Estos clientes conectan al
servidor de administración y proporcionan comandos para
arrancar y parar nodos, arrancar y parar traceo de mensajes
(sólo en versiones de depuración), mostrar versiones y
estatus de nodos, arrancar y parar copias de seguridad, y así

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 26


3. BALANCEO DE CARGA y
ALTA DISPONIBILIDAD
 ORGANIZACIÓN
 Nodo de datos (Data node).- Es el proceso ndbd,
que almacena una replica, que es una copia de la
partición asignada al grupo de nodo del cual el nodo
es miembro.
Cada nodo debería estar en una máquina diferente.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 27


3. BALANCEO DE CARGA y
ALTA DISPONIBILIDAD
 ORGANIZACIÓN(cont.)
 Grupo de nodo (Node group).- Esta formado por uno o más
nodos. El nº de grupos no se configura directamente y
depende del número de replicas y el número de nodos, según
la siguiente formula:
Nºgrupos=Nºnodosdatos/Nºreplicas.
Todos los grupos deben tener el mismo numero de nodos. Se
pueden añadir dinámicamente.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 28


3. BALANCEO DE CARGA y
ALTA DISPONIBILIDAD
 ORGANIZACIÓN(cont.)
 Partición (Partition).- Es una porción de los datos en los que
se divide el cluster. Hay tantas particiones como nodos en el
cluster. Cada nodo es responsable de almacenar al menos una
copia de una partición asignada a él (una replica).
Una replica pertenece a un único nodo, mientras que un nodo
puede almacenar varias replicas.
MySQL Cluster particiona las tablas de forma automática,
aunque a partir de 5.1 es posible particionar de forma
manual.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 29


3. BALANCEO DE CARGA y
ALTA DISPONIBILIDAD
 ORGANIZACIÓN(cont.)
 Replica.- Es una copia de una partición. Su número es el nº
de nodos por grupo por el nº de grupos.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 30


3. BALANCEO DE CARGA y
ALTA DISPONIBILIDAD
 En la imagen podemos ver un ejemplo
de organización con 4 nodos de datos
organizados en dos grupos.
 Los datos se dividen en 4 particiones,
numeradas desde 0 a 3.
 Cada partición es almacenada en el
mismo grupo de nodo.
 Cada nodo almacena una copia
principal de una partición y una copia
de seguridad de otra partición.
 Con este esquema se consigue que
siempre que al menos un nodo de cada
grupo este disponible dispondremos de
una copia completa de todos los datos.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 31


4. INSTALACIÓN DEL
CLUSTER
 Los requerimientos hardware, software y de red
 Vamos a partir del siguiente ejemplo, con los
siguientes nodos:
 Nodo de administración, en el equipo 192.168.0.10
 Nodo sql, en el equipo 192.168.0.20
 Nodo de datos A 192.168.0.30
 Nodo de datos B 192.168.0.40

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 32


4. INSTALACIÓN DEL
CLUSTER
 Esquemáticamente el
modelo a
implementar será.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 33


4. IMPLEMENTACIÓN DEL
CLUSTER
 Lo primero será descargar el software,
 Guía de instalación rápida en windows
 En el nodo SQL será necesario tener instalado el servidor
MySQL estandar, en el resto de nodos no será necesario.
 En el nodo de administración será necesario el ndb_mgmd.exe.
También es necesario tener instalado el cliente de administración
en este nodo o equipo (ndb_mgm.exe)
 En los nodos de datos será necesario el nbdb.exe o ndbmtd.exe
(version multi-threaded)

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 34


4. IMPLEMENTACIÓN DEL
CLUSTER
 Salvo el nodo administrador, cada nodo
participante en un cluster tiene su propia
configuración más una sección correspondiente
en el fichero global de configuración
(config.ini) del nodo administrador.
 Igual que ocurre con el servidor mysql, se
disponen de variables de entorno que nos
permiten establecer el comportamiento del
servidor.
ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 35
4. IMPLEMENTACIÓN DEL
CLUSTER
 CONFIGURACIÓN NODO SQL
 Para arrancar el servidor Mysql con soporte Mysql Cluster
será necesario arrancarlo con la opción --ndbcluster y --ndb-
connectstring. Se pueden usar en línea de comandos o en el
fichero de opciones.
 ndb-connectstring hay que asignarle el equipo que tiene el
nodo de administración.
 Se pueden añadir más opciones, pero estas serán las mínimas
necesarias.
 El ejecutable mysqld será el que se obtiene de la versión
mysql-cluster.
ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 36
4. IMPLEMENTACIÓN DEL
CLUSTER
 CONFIGURACIÓN NODOS DE DATOS
 Solo necesitan el ejecutable ndbd.exe o ndbmtd.exe(multi-
thread), para ambos se pueden usar los mismos pasos.
 En estos equipos creamos los directorios c:\mysql,
c:\mysql\bin y c:\mysql\cluster-data.
 Copiamos el fichero ndbd.exe en c:\mysql\bin
 Será necesario indicar la dirección o el nombre del host del
nodo administrador mediante el parametro --ndb-
connectstring, que se puede configurar vía fichero de
opciones (my.ini) en la sección [mysql_cluster]

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 37


4. IMPLEMENTACIÓN DEL
CLUSTER
 CONFIGURACIÓN NODO DE ADMINISTRACIÓN
 Solo necesita el ejecutable ndb_mgmd.exe, aunque es aconsejable tener el
cliente de administración ndb_mgm.exe para poder administrar el nodo.
 Crear el directorio c:\mysql\bin y localizar los programas aquí.
 Será necesario crear dos ficheros de configuración:
 My.ini, donde en la sección [mysql_cluster] será necesario incluir donde se
localiza el otro fichero de configuración a traves del parametro config-file.
 Config.ini.- Fichero global de configuración donde se incluyen todas las
opciones para gestionar el cluster.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 38


4. IMPLEMENTACIÓN DEL
CLUSTER
 CONFIGURACIÓN NODO DE
ADMINISTRACIÓN(cont.)
 El fichero config.ini deberá contener como mínimo una
sección por cada nodo con la siguiente información:
 La ip o el nombre de host de cada nodo SQL en la sección [ndb
default]
 La localización del data memory (memoria requerida para el
almacenamiento de los datos) y el index memory (memoria requerida
para el almacenamiento de los índices) de cada nodo de datos
(DataMemory y IndexMemory parámetros). En la sección [ndb
default]

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 39


4. IMPLEMENTACIÓN DEL
CLUSTER
 CONFIGURACIÓN NODO DE
ADMINISTRACIÓN(cont.)
 El fichero config.ini deberá contener como mínimo una
sección por cada nodo con la siguiente información:
 El número de replicas NoOfReplicas en la sección [ndb default]
 El directorio donde cada nodo de datos almacena los datos (en [ndb
default]) y donde el nodo de administración (en sección [ndb_mgmd])
guarda los ficheros log. El parámetro en ambos casos es DataDir
 Además el parámetro Hostname por cada nodo de dato sección
[ndbd], para el nodo sql sección [mysqld] y para el nodo de
administración sección [ndb_mgmd]

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 40


4. IMPLEMENTACIÓN DEL
CLUSTER
 ARRANCAR EL CLUSTER.-
 El arranque del cluster se reduce a ejecutar todos los ejecutables
mencionados, en el orden siguiente:
 Primero el nodo de administración, ndb_mgmd, si se quiere indicar la
localización del fichero de configuración –config-file.
 Luego los nodos de datos con ndbd
 Por último el nodo SQL, que no se arrancará hasta que no hayan arrancado los
nodos de datos.
 Para comprobar el estado del nodo de administración nos podremos
conectar con el cliente de administración ndb_mgm: ALL STATUS o
SHOW.
 Para comprobar el estado del nodo SQL podemos conectarnos con un
cliente mysql al servidor SQL y ejecutar SHOW ENGINE NDB
STATUS.
ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 41
4. IMPLEMENTACIÓN DEL
CLUSTER
 GESTIÓN DEL CLUSTER MYSQL
 Para crear una tabla en el cluster usaremos el cliente mysql
con la sintaxis habitual pero incluyendo el motor de
almacenamiento ENGINE=NDBCLUSTER.
 Para parar el cluster será necesario:
 Parar el nodo administrador, usaremos ndb_mgm –e shutdown, con lo
que tambien parará los nodos de datos.
 Parar el nodo SQL, lo detendremos con mysqladmin shutdown.

ASGBD -2º A.S.I.R. I.E.S. JULIAN MARIAS 42

You might also like