ACTIVIDAD #25


Realizar ejercicio de activación de espejeo de datos en un SGBD.
Actividad #25
• Realizar un espejeo en un SGBD.

Base de Datos Espejo (DatabaseMirroring) es una configuración donde dos o tres servidores de dase de datos, ejecutándose en equipos independientes, cooperan para mantener copias de la base de datos y archivo de registro de transacciones (log).
Tanto el servidor primario como el servidor espejo mantienen una copia de la base de datos y el registro de transacciones, mientras que el tercer servidor, llamado el servidor árbitro, es usado cuando es necesario determinar cuál de los los otros dos servidores puede tomar la propiedad de la base de datos. El árbitro no mantiene una copia de la base de datos.

El proceso de replicación de una base de datos consiste en replicar las consultas de actualización (tanto DML como DDL) en una base de datos maestra (master) sobre una o varias bases de datos esclavas (slave), de manera que tengamos una copia de las mismas a lo largo del tiempo.
MySQL soporta replicación unidireccional asíncrona, es decir, las consultas de actualización ejecutadas en el maestro son replicadas en los servidores esclavos. Esta replicación se realiza de forma transparente. Además es instantánea si los servidores esclavos están levantandos y en estado de replicación.
La replicación es útil para:
·         Copia de seguridad:
 En condiciones normales, una base de datos replicada de forma correcta es válida como copia de seguridad.
Además se puede realizar copias de seguridad usando un servidor esclavo para así no interferir al servidor maestro.
·         Mejorar la escalabilidad:
Podríamos configurar nuestras aplicaciones para balancear las consultas de lectura (SELECT) entre los servidores replicados.
 Podríamos usar herramientas como MySQL Proxy para balancear las consultas de lectura entre los servidores replicados y enviar las consultas de actualización de datos al maestro.
·         Alta disponibilidad:
En aplicaciones y entornos en donde sólo se requieren lecturas, podríamos configurar nuestras aplicaciones para balancear las consultas de lectura (SELECT) entre los servidores replicados de manera que si uno se cae se continue prestando servicio.

Aspectos importantes que debemos conocer:
El log binario es un archivo binario gestionado por el servidor de base de datos en el que se registran todas las sentencias SQL de modificación de datos o estructura.
En el caso de la replicación es importante saber que cada servidor esclavo se conecta al servidor maestro y le solicita que le envié las sentencias registradas en los logs binarios a partir de una posición, para ello, cada esclavo mantiene un archivo a modo de índice en donde registra la posición actual de la replicación.
Gracias a esto, podemos detener el esclavo (STOP SLAVE), que haya un corte de red, etc..
De manera que cuando se vuelva a iniciar la replicación (START SLAVE) o se restablezca la comunicación... Pase el tiempo que pase el esclavo solicitará al maestro todas las sentencias a ejecutar desde su estado actual y las irá ejecutando secuencialmente de manera que en cuestión de segundos ambos servidores tendrán las bases de datos con el mismo contenido y estructura.


El log binario por defecto está ubicado en la carpeta <MYSQL_HOME>/data y se llama igual que la máquina con el sufijo -bin y un número como extensión.
Ejemplos: pccarlos-bin.00001, pccarlos-bin.00002, pccarlos-bin.00003

La replicación:
Se trata de una de las base de datos (master) hacer que genere un log y otra (slave) lo lea.
Lo primero es añadir las siguientes líneas al fichero my.conf:(depende de que usemos si es Mysql Server, o por medio del Xammp, etc.)
log-bin=<nombre-fichero-log>
binlog-do-db=<nombre-base-datos>
server-id=<numero-servidor>

El nombre de la base de datos sí que debe ser el mismo en ambos servidores, los otros dos pueden ser cualesquiera, aunque el nombre del log suele ser el de host seguido de “-bin” y el id del servidor suele ser “1″ para el maestro y “2″ para el esclavo.

Después debes crear un usuario el cual se usará para replicarse con el esclavo:
GRANT REPLICATION SLAVE ON *.* TO '<usuario>'@'%' IDENTIFIED BY '<contraseña>';


También se puede usar el nombre del servidor esclavo en vez de %. Una vez creado el usuario, actualizamos los datos mediante FLUSH PRIVILEGES y FLUSH TABLES.

Si ejecutamos SHOW MASTER STATUS nos devuelve unos datos que son importantes para la replicación, sobre todo la columna File y la columna Position.

Una vez que el maestro ya está configurado, podemos empezar con la configuración del esclavo, eso sí, antes del inicio de la replicación ambas bases de datos deben tener la misma información. Para configurar el esclavo deberemos modificar su my.conf de la siguiente forma:

server-id=<numero-servidor>

Siendo el número distinto al que usamos en el maestro, en nuestro ejemplo el maestro era “1″ y el esclavo “2″. Después deberemos ejecutar la siguiente sentencia:

CHANGE MASTER TO MASTER_HOST='<servidor-maestro>', MASTER_USER='<usuario-replicacion>', MASTER_PASSWORD='<contraseña-replicacion>', MASTER_LOG_FILE='<fichero-log>', MASTER_LOG_POS=<posición-log>;

Y ya por último reiniciamos MySQl, paramos el esclavo(STOP SLAVE), cargamos los datos del maestro (LOAD DATA FROM MASTER) y arrancamos el esclavo (START SLAVE).

Pasos:
Antes que nada debemos tener instalado el mysql en las dos máquinas.
Tenerlas en red para esto daremos direcciones IP a cada una de ellas.
Podemos hacerlo de la siguiente manera:          
Pulsamos botón Inicio
>Panel Control
>Centro de redes y recursos compartidos
>Administrar redes
>Estando en las conexiones de red
>Pulsamos clic derecho y en Propiedades
Nos mostrara la siguiente ventana:.



Pulsamos en propiedades y asignaremos la IP


Asignaremos la dirección IP 192.168.1.1 y en la otra máquina 192.168.1.2
CONFIGURANDO MASTER.
Antes de iniciar la replicación haremos un ping para verificar que hay conexión en las dos máquinas.
Entramos a la consola (cmd) .
Ejemplo: ping 192.168.1.2





·         Podemos apreciar que hay conexión.
Vamos a buscar el archivo my.ini (esto depende de que estemos utilizando por ejemplo si es mysql server  C:Archivos de programaMySQLMySQL Server 5.0my.ini,  si usamos el xampp puede estar dentro de la carpeta en xammp>mysql>my-huge.
En este caso C:APPSER/MYSQL/my.ini

·         Entramos y abrimos el archivo my

·         Nos aparece el archivo:

·         Agregaremos las líneas e indicaremos

·         Se indica cual va ser el maestro y la base de datos a replicar.

·         Guardamos el archivo.

Después de esto iremos a Panel de control> Herramientas administrativas> Servicios

Y Reiniciamos Mysql.

Entramos a mysql desde consola
Mysql-u root –p


Hacemos la replicación usando el siguiente comando:
GRANT REPLICATION SLAVE ON *.* TO ‘<nombre del esclavo>’@’<direccion de la maquina esclavo>’ identifiedby ‘<contraseña del esclavo>’;

Recargamos los privilegios:

Mostramos las bases de datos:
Show databases;

Nuestra base de datos es Agenda.
Mostrar las tablas:
SHOW TABLES;

Tenemos la tabla registro;
·         Mostramos los datos en esa tabla:
SELECT * FROM registro;

·         Ejecutamos la siguiente instrucción:

El cual cierra todas las tablas abiertas y bloquea todas las tablas para todas las bases de datos con un bloqueo de lectura hasta que se ejecute. Esto proporciona una forma muy conveniente para hacer copias de seguridad.
·         Después mostraremos el estado del Master:

Este comando proporciona información de estado en los ficheros del log binario del maestro de replicación.
Esa información se guarda. Puedes almacenarla, anotarla pero debes tenerla segura.
·         Crearemos la copia de la base de datos

Después de hacerla entramos a mysql para desbloquear las tablas:

Con el comando UNLOCK TABLES;
Libera cualquier bloqueo para el hilo actual. Todas las tablas bloqueadas por el hilo actual serán implícitamente desbloqueadas cuando el hilo realice otro LOCK TABLES, o cuando la conexión con el servidor se cierre.

CONFIGURANDO EL ESCLAVO.
·         Hacemos ping para verificar la conexión nuevamente. (Este paso ya es en la otra máquina).


>Podemos observar que si hay conexión.
·         Accedemos a mysql

Creamos la base de datos a replicar (en este caso agenda)
CREATE DATABASE agenda;
Solo se creara la base de datos sin tablas.
Importante: Hay que copiar el respaldo del master a la unidad C:

Para generar la copia del respaldo:
<c:respaldo1.sql
·         Y una vez mas reiniciamos el servicio Mysql.
Buscamos el archivo My.ini   (Ya lo habiamos utilizado para la configuracion del master)
Debemos tener estas lineas e indicar lo siguiente:

·         Guardamos los cambios.
·         Y reiniciamos MYSQL una vez mas (Recuerda que se encuentra en panel de control>herramientas administrativas> servicios)
·         Accedemos a Mysql
Mysql –u root –p
Password:<la contraseña que tenemos>
·         Una vez dentro ejecutaremos el siguiente comando:

Acerca de este comando:
Para el flujo esclavo. STOP SLAVE necesita el permiso SUPER .
Como START SLAVE, este comando puede usarse con las opciones IO_THREAD y SQL_THREAD para nombrar el flujo o flujos a parar.
En versiones previas de MySQL, este comando se llamó SLAVE STOP. Su uso se acepta en MySQL 5.0 por compatibilidad con versiones anteriores, pero ahora está obsoleto.
·         Actualizaremos la BD del esclavo:
CHANGE MASTER TO MASTER_HOST=’<IP del master’>,MASTER USER=’<nombre del master>,MASTER_PASSWORD=’<password asignado por el master’>, MASTER_LOG_FILE=’<datos que se mostró en el master>,MASTER_LOG_POS=<la posición que se mostró en el master>;


·         Ejecutaremos la instrucción START SLAVE;
Acerca de esta instrucccion:
Start Slave sin opciones arranca los flujos esclavos. El flujo de entrada/salida lee consultas del servidor maestro y las almacena en el log retardado. El flujo SQL lee el log retardado y ejecuta las consultas. START SLAVE require el permiso SUPER.
Si START SLAVE tiene éxito al arrancar los flujos esclavos, retorna sin ningún error.

Hasta aquí hemos terminado de configurar el master y esclavo.
·         Vamos a ingresar al master para ingresar registros.
Estando como Master:
Entramos y seleccionamos la base de datos agenda

Insertamos datos en la tabla REGISTRO.
·         Mostramos los datos de la tabla.

Podemos apreciar que se agregó el nombre Juan.
·         AHORA nos regresamos a ingresar como esclavo para VERIFICAR si se ingresó el registro en la tabla.

·         Al igual seleccionamos la base de datos Agenda.

·         Mostramos los datos de la tabla registro.

Dato ingresado por el MASTER (indicado por la flecha)
Y así hemos comprobado que se realiza la replicación.


Alumno: Carlos Adán Hernández González
Trabajo individual.

No hay comentarios:

Publicar un comentario