miércoles, 22 de junio de 2016

REPLICACION CON MYSQL

 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 Ip Estatica en Amazon
https://youtu.be/kJptJLNTDHQ

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: