UNIVERSIDAD
DE EL SALVADOR
FACULTAD MULTIDISCIPLINARIA DE OCCIDENTE
DEPARTAMENTO DE INGENIERIA Y
ARQUITECTURA
Cátedra:
Bases de Datos
Catedrático:
Ing. Alexander Calderón Peraza
GUIA
MYSQL
REPLICACION
Catedrático:
Ing. Alexander Calderón Peraza
Integrantes:
|
Correo electrónico:
|
García, Rosa Margarita
|
rose07fas@yahoo.es
|
Valdivieso Rodríguez, Iris
Yamileth
|
irisvaldivieso1@gmail.com
|
Vásquez Ramírez, Ivonne
Sugeybi
|
Sugeybi88@gmail.com
|
Introducción
En la actualidad para toda empresa
sea esta grande, micro o pequeña empresa la información se ha vuelto uno de los
principales activos, hoy en día las empresas no pueden tener éxito sin
información de calidad acerca de sus operaciones internas y de su ambiente
externo, razón por la cual las organizaciones y sus administradores tienen que
practicar la administración de recursos de datos donde se aplica las
tecnologías de la información en donde se toma en cuenta lo que es la
administración de bases de datos ya que por medio de estas se conoce toda la
información que la organización posee de que manera esta almacenada,
estructurada, sus tablas, campos y el medio de replicación utilizado.
Para este caso se presenta una guia
con los pasos que se han tomado en cuenta para llevar a cabo para la
replicación de bases de datos en mysql. El proceso de replicación de bases de
datos consiste en replicar las consultas de actualización en una base de datos
maestra (máster) sobre una o mas bases de datos esclavas (Slave) de manera que
se tenga una copia de la misma durante un tiempo determinado.
Objetivos
Objetivo General:
Brindar
a los compañeros los pasos que sean necesarios para llevar a cabo la
replicación de bases de datos usando como gestor de bases de datos MySQL.
Objetivos Específicos:
Recopilar la información necesaria y
determinar los requerimientos para una replicación de bases de datos con MySQL.
Identificar cuáles son los pasos de la
configuración que se realizara en cada una de las diferentes maquinas que han
de ser ocupadas para dicha replicación de nuestra base de datos.
Realizar pruebas pertinentes para comprobar la funcionabilidad de la
replicación en ambos servidores uno maestro (máster) y el otro esclavo (slave)
para este caso.
MYSQL REPLICACIÓN
El proceso de replicación de una base
de datos consiste en replicar las consultas (tanto DML como DDL) en una bases
de datos maestra (máster) sobre una o varias bases de datos esclavas (Slave) de
manera que se pueda tener una copia de estas 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
levantados y en estado de replicación. Las modificaciones de datos siempre se
deben realizar en el maestro.
El servidor maestro escribe
actualizaciones en el log binario y mantiene un índice en de los ficheros para
rastrear la rotaciones de log. Estos log sirven como registros de
actualizaciones para enviar a los servidores esclavos. Cuando un esclavo se
conecta al maestro, informa al maestro de la posición hasta que el esclavo ha
leído los logs en la última actualización satisfactoria. El esclavo recibe
cualquier actualización que haya realizado, y se bloquea para que el máster le
envié nuevas actualizaciones.
En la presente guía se maneja en un
escenario en donde la replicación se realiza desde cero, en donde maestro y
esclavo no estaban configurados y no se tenía una base de datos para realizar
previamente la replicación.
Utilidad de la replicación de bases
de datos
Copia de
seguridad: En condiciones normales, una base de datos replicada es
válida como copia de seguridad. Además se puede realizar una copia de seguridad
usando un servidor esclavo para no interferir al servidor maestro.
Mejorar la escalabilidad: Se pueden configurar las
aplicaciones para balancear las consultas de lectura (SELECT) entre los
servidores replicados.
Alta disponibilidad: En
aplicaciones y en entornos en donde sólo se requieren lectura, podríamos
configurar nuestras aplicaciones para balancear las consultas
de lectura (SELECT) entre los
servidores replicados de manera si uno de cae se continúe prestando el
servicio.
Procedimiento para llevar a cabo la
replicación en MySQL
Suponiendo que los usuarios de esta
guía no han hecho uso de MySQL como gestor de bases de datos y que por lo tanto
no han creado una base de datos en este. Después de haber instalado la versión
de MySQL a utilizar en este caso MySQL 5.5, comenzaremos con la creación de
nuestra base de datos utilizando la consola del gestor y asi seguidamente de
los demás pasos hasta terminar con la comprobación de la replicación.
Pasos para la creación de la base de datos:
Ingresamos a la consola de MySql y escribimos el nombre de la base de datos:
mysql>
create database tarea2016;
Luego haremos uso de la base de la base de datos de la siguiente forma:
mysql>
use tarea2016;
Revisamos si hay tablas creadas:
mysql>
show tables;
Si no
hay tablas procedemos a la creación de tablas producto, detalleventa y venta
con sus respectivas llaves primarias:
mysql>
create table producto<
->codigoproducto
varchar(20),
->nombre
varchar (100),
->precio
double(8,2),
->primary
key (codigoproducto)
->);
mysql>
create table venta(
->Codigoventa
int,
->fecha
datetime,
->total
double(8,2),
->primary
key(codigoventa)
->
):
mysql>
create table detalleventa (
->codigoproducto
varchar(20),
->codigoventa
int,
->cantidad
int,
->primary
key(codigoproducto, codigoventa)
->
);
Para
revisar el contenido de cada tabla hacemos lo siguiente:
mysql>
describe detalleventa;
Par
insertar datos en cada una de las tablas producto y venta:
mysql>insert
into producto values(‘1’,’pcEscritorio’,’350’);
mysql>insert
into venta values(‘1000’,’15-01-20’,’1050’);
Relacionamos las tablas producto-detalleventa y
venta-detalleventa con las siguientes líneas de comandos:
mysql>alter
table detalleventa add foreign key (codigoproducto) references
->producto(codigoproducto);
mysql>alter
table detalleventa add foreign key (códigoventa) references
->venta(Codigoventa);
Pasamos
a la inserción de datos en las tablas detalleventa y luego consultamos de la
manera siguiente:
mysql>insert
into detalleventa values(‘1’,’1000’,’3’);
Luego
revisamos la relación entre la tabla producto-detalleventa de la siguiente
forma:
mysql>select
product.nombre, producto.precio, detalleventa.cantidad
->from
producto inner join detalleventa
->on
producto.codigoproducto=detalleventa.codigoproducto
->where
producto.codigoproducto=’1’;
Revisamos
la relación entre las tablas venta-detalleventa al igual al paso anterior:
mysql>select
venta.codigoventa, venta.fecha, venta.total, ->detalleventa.codigoproducto,
detalleventa.cantidad
->from
venta inner join detalleventa
->on
venta.codigoventa=detalleventa.codigoventa
->where
venta.codigoventa=’1000’;
REPLICACION
Configurando servidor maestro y servidor esclavo:
1-Desactivamos
firewall de Windows ambos
2-Ingresamos
al archivo my.ini dentro de la carpeta de nuestro mysql y nos aparecerá la
siguiente ventana en donddonde server-id debe de ser igual a 1 para el servidor
maestro (máster):
Y
guardamos los cambios sino nos permite guardar regresamos al archivo my.ini y
damos click derecho sobre este y nos ubicamos en propiedades, luego damos click
en seguridad y agregamos permisos al archivo.
Para
comenzar configuración del esclavo dentro del maestro haremos lo siguiente:
Abrimos la consola de
Windows para configurar la ip
C:\user\nombredemaquina>
ipconfig
Nos muestra la ip de nuestra maquina ahora probamos hacer
ping con la ip de la maquina que será esclavo
C:\user\nombredemaquina>
ping <escribimos dirección de red maquina esclavo>
Si
nuestra maquina se conecta en perfectas condiciones nos mostrara que ningún
archivo se ha perdido y que estamos recibiendo y enviando paquetes
Entramos
a configurar nuestra maquina maestra para el esclavo
C:\user\nombredemaquina>
cd..\..
C:\
Ingresamos a la ubicación de nuestro archivo mysql
C:\Program
Files\MySQL\MySQL Server 5.5\bin
C:\Program
Files\MySQL\MySQL Server 5.5\bin>mysql –u root -p
Ingresamos contraseña que colocamos en la instalación de
mysql
Enter
password: ****
mysql>:_
Derechos a nuestro esclavo
mysql>
grant replication slave on *.* to ‘nombre de esclavo’@’ip del esclavo’
identified by ‘contraseña’;
mysql>:
show databases;
mostrara
todas las bases de datos en nuestro caso la base de datos se llama tarea2016.
mysql>:
use tarea2016;
Bloqueamos
las tablas de esta base de datos
mysql>:
flush tables with read lock;
Reiniciamos servicios de mysql
1. Nos vamos a panel de control
2. Herramientas administrativas
3. Servicios
4. Y nos ubicamos en carpeta MySQL
5.
Damos click en reiniciar
Las líneas de comandos para ver el log binario y posición
del servidor maestro (master), las anotamos para poder ocuparlas en el servidor
esclavo (slave):
mysql>: show master
status;
mysql>:
exit
Bye
C:\Program
Files\MySQL\MySQL Server 5.5\bin> mysql –u root –p
Enter
password: ****
Reiniciamos servicios de mysql
6. Nos vamos a panel de control
7. Herramientas administrativas
8. Servicios
9. Y nos ubicamos en carpeta MySQL
10.
Damos click en reiniciar
Hacemos
un respaldo de la base de datos para luego llevarla al servidor esclavo.
C:\Program
Files\MySQL\MySQL Server 5.5\bin>mysqldump –u root –p tarea2016 >
respaldo.sql
Enter
password: ****
C:\Program
Files\MySQL\MySQL Server 5.5\bin>mysql –u root –p
Enter
password: ****
Desbloqueamos
Tablas:
mysql>:
unlock tables;
Nota: terminamos configuración del maestro y nos vamos a
configurar nuestro esclavo
CONFIGURACION DE ESCLAVO
1-Desactivamos
firewall de Windows ambos
2-Configuramos el
servidor esclavo (slave) en el archivo my.ini dentro de la carpeta de nuestro
mysql, en este caso server-id lo dejamos igual a 2 ya que estamos en servidor
esclavo:
n:none;text-autospace:none'>Las líneas de comandos para ver el log binario y posición
del servidor maestro (master), las anotamos para poder ocuparlas en el servidor
esclavo (slave):
mysql>: show master
status;
Reiniciamos servicios de mysql
1. Nos vamos a panel de control
2. Herramientas administrativas
3. Servicios
4. Y nos ubicamos en carpeta MySQL
5.
Damos click en reiniciar
Para
comenzar configuración del esclavo dentro del maestro haremos lo siguiente:
Abrimos la consola de
Windowspara configurar la ip
C:\user\nombredemaquina>
ipconfig
Nos
muestra la ip de nuestra maquina ahora probamos hacer ping con la ip de la
maquina que será maestro
C:\user\nombredemaquina>
ping <ip maestro>
Si
nuestra maquina se conecta en perfectas condiciones nos mostrara que ningún
archivo se ha perdido y que estamos recibiendo y enviando paquetes
Entramos
a configurar nuestro esclavo
C:\user\nombredemaquina>
cd ..\..
C:\
C:\Program
Files\MySQL\MySQL Server 5.5\bin
C:\Program
Files\MySQL\MySQL Server 5.5\bin>mysql –u root -p
Enter
password: ****
mysql>:_
creamos
la base de datos con el mismo nombre que está en maestro
mysql>
create database tarea2016;
mysql>
use tarea2016;
mysql>
exit
Bye
copiamos
el backup de la base de datos creada en el maestro en los archivos bin de mysql
y la pegamos en los archivos de la unidad C:\
Reemplazamos la base de datos (tarea2016) por el backup
que se copio del servidor maestro
C:\Program
Files\MySQL\MySQL Server 5.5\bin>mysql –u root –p tarea2016
<C:\respaldo.sql
Enter
password: ****
Reiniciamos servicios de mysql
1. Nos vamos a panel de control
2. Herramientas administrativas
3. Servicios
4. Y nos ubicamos en carpeta MySQL
5.
Damos click en reiniciar
C:\Program
Files\MySQL\MySQL Server 5.5\bin>mysql –u root -p
Enter
password: ****
Paramos
esclavo
mysql>
stop slave;
Asignando
IP del master, nombre del usuario, contraseña y posición que recibio el
servidor maestro:
mysql>
change master to master _host=’ip_master’;
Para siguiente línea
ubicarnos en donde le dimos privilegios a nuestro esclavo y colocar la
información respectiva ej.
mysql>
change master to master _user=’nombre esclavo’;
mysql>
change master to master _password=’contraseña’;
Para
siguiente línea ubicarnos en donde mostramos el estado de nuestro máster
colocar la información respectiva ej.
mysql>
change master to master _log_file=’log binario.00001’;
mysql>
change master to master _log_pos=posicion;
iniciamos
el esclavo
mysql>
start slave;
para
ver el estatus del estado
mysql> show slave status
Si
Seconds_Behind_Master es igual a un valor Null significa que nuestra
replicación no posee errores.
Hacemos pruebas y si ingresamos
datos en nuestra tabla maestro y verificamos si hace los cambios en nuestra
tabla esclavo si hay replicación.
Creación de Ec2 en Amazon
Creamos
cuenta Amazon
Ubicamos en
aws.amazon.com y damos crear cuenta como nuevo usuario
Ya ingresados en nuestra cuenta nos ubicamos en EC2
Damos click
Damos click en lauch instance
Creamos nuestra maquina virtual de preferencia las que tienen free tier eligible ya que están están de forma gratuita en Amazon.
Nuestra instancia ya lista para ser utilizada
Como crear una Imagen de una Instancia (AMI) en Amazon
https://youtu.be/quFm1SBp8tA
Como crear una Instancia en Amazon
https://youtu.be/i39p1QbpCQk
Como se crea un Snapshot en Amazon
https://youtu.be/ZyL9VNa7X4Y
No hay comentarios:
Publicar un comentario