Pasos para replicación de una base de datos MySQL

Pasos para replicación de una base de datos MySQL
en VirtualBox
MSC. Martín Contreras
PASOS NECESARIOS PARA LA CONEXIÓN ENTRE MASTER y ESCLAVO
1. Instalar la aplicación VirtualBox (https://www.virtualbox.org/wiki/Downloads)
2. Crear una máquina virtual con el sistema operativo Windows XP.
3. Desactivar firewall de Windows en la maquina LOCAL (en caso de tener antivirus es
necesaria la desactivarlo desde éste)
y en la VIRTUAL
4. En la máquina VIRTUAL ir a la configuración del menú Red y cambiar el adaptador a
“Adaptador solo-anfitrión” de nombre “VirtualBox Host-Only Network” (Si no te aparece el
nombre deberás instalar el driver de red en la máquina virtual)
5. Conectar la maquina LOCAL con la máquina VIRTUAL utilizando el adaptador "VirtualBox
Host-Only Network" que es creado automáticamente por VirtualBox.
a. En la máquina local (MASTER) verificar que la configuración IPv4 en "VirtualBox
Host-Only Network" sea:
IP
MASCARA DE RED
PUERTA ENLANCE
192.168.56.1
255.255.255.0
.
.
.
b. En la máquina virtual (ESCLAVO) verificar que la configuración IPv4 sea:
IP
MASCARA DE RED
PUERTA ENLANCE
192.168.56.101
255.255.255.0
192.168.56.1
c. Verificar la conexión entre computadoras mediante PING desde el símbolo del
sistema de LOCAL a VIRTUAL y viceversa.
6. Instalar la misma versión de MySQL en ambos sistemas operativos tanto LOCAL como
VIRTUAL (En nuestro caso utilizamos la compilación xampp 1.6.7 que contiene la versión
5.0.51b de MySQL, xampp dio soporte a Windows XP hasta la versión 1.8.1 según
comentan bloggers no hay un anuncio oficial). La instalación debe realizarse en la unidad
C:\ para efectos de este tutorial. El link de versione es:
http://code.stephenmorley.org/articles/xampp-version-history-apache-mysql-php/
CONFIGURACIÓN EN EL EQUIPO LOCAL (MASTER)
7. Abrir el archivo "my.cnf" de la instalación local de MySQL, localizando las líneas de código
"log-bin" y del "server-id", descomentarlas quedando de la siguiente manera:
log-bin= mysql-bin
server-id= 1
(Debe reiniciarse el MySQL al finalizar la modificación)
8. Crear un usuario para replicar a los esclavos mediante la sentencia:
GRANT {permisos} ON *.* TO '{usuario}'@'{ip_esclavo}'
IDENTIFIED BY '{contraseña}';
Donde reemplazando los valores {usuario} por replicador, {contraseña} por 1234 y
{permisos} por REPLICATION SLAVE la sentencia nos queda así:
GRANT REPLICATION SLAVE ON *.* TO 'replicador'@'%' IDENTIFIED
BY '1234';
9.
Crear la base de datos a replicar con el nombre “Replicacion” y con una sola tabla llamada
“Mascotas”
CREATE DATABASE Replicacion;
USE Replicacion;
CREATE TABLE Mascotas (
id INT NOT NULL AUTO_INCREMENT,
Nombre VARCHAR(80) NOT NULL,
Edad INT,
PRIMARY KEY (id)
);
INSERT INTO mascotas VALUES
(1,'Max',2),(2,'Firulais',2),(3,'Manchas',2),(4,'Perrochito',
2);
10. Crear el respaldo de la base de datos para copiarla al ESCLAVO (es necesario abrir en
modo Administrador el símbolo del sistema)
mysqldump -u root -p replicacion>c:\respaldo.sql
11. Obtener los datos del "master_log_file" y "master_log_pos" para permitir la sincronización
de los ESCLAVOS mediante el comando:
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File
| Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |
98 |
|
|
+------------------+----------+--------------+------------------+
Donde:
master_log_file = mysql-bin.000001
master_log_pos = 98
CONFIGURACIÓN EN EL EQUIPO VIRTUAL (ESCLAVO) con WINDOWS XP
12. Abrir el archivo "my.cnf" de la instalación local de MySQL para modificar la línea de código
"server-id" a 2 quedando de la siguiente manera:
server-id= 2
(Debe reiniciarse el MySQL al finalizar la modificación)
13. Copiar el respaldo de la base de datos creado en el paso 10 “C:\respaldo.sql" a la carpeta
“C:\” del equipo VIRTUAL.
14. Crear la base de datos llamada “replicacion”
CREATE DATABASE replicacion;
15. Recuperar el respaldo de la base de datos
mysql -u root -p replicacion<c:\respaldo.sql
16. Detener el servicio en el ESCLAVO
stop SLAVE;
17. Conectar el ESCLAVO al MASTER con los datos generados en pasos anteriores
Datos necesarios:
master_host = {dirección IP del master}  Ver en paso 5
master_user= {nombre de usuario que se conectará en el master}  Ven en paso 8
master_password={contraseña del usuario}  Ven en paso 8
master_log_file= {nombre del log binary}  Ven en paso 11
master_log_pos= {posición del log binary}  Ven en paso 11
Reemplazando en la sintaxis los valores:
CHANGE MASTER TO master_host="192.168.56.1",
master_user="replicador", master_password='1234',
master_log_file='mysql-bin.000001', master_log_pos=98;
18. Volver a levantar el servicio
start SLAVE;
PROBANDO LA REPLICACIÓN
19. Insertar desde la computadora LOCAL (MASTER) una nueva mascota en la base de datos
“Replicacion” e inmediatamente mostrar los registros existentes con el comando SELECT.
USE Replicacion;
INSERT INTO Mascotas (Nombre, Edad) VALUES (“Nueva
mascota”,10);
SELECT * FROM Mascotas;
20. Ir a la máquina VIRTUAL (ESCLAVO) y verificar si en verdad se ha replicado la última acción
sobre el MASTER mediante el comando SELECT
Bibliografía

http://manuales.guebs.com/mysql-5.0/replication.html

https://www.youtube.com/watch?v=VcqLsXKF2Ho