Вы находитесь на странице: 1из 8

REPLICACION EN TIEMPO REAL

DE BASE DE DATOS CON


MYSQL
BDD REPLICATION

Autor Salomon Aun


Fecha de Creacin 04/25/2013
Fecha Ultima 09/13/2013
modificacin
Versin 1
REPLICACION DE BASE DE DATOS CON MYSQL WORKBENCH Y
MYSQL SERVER MAESTRO-ESCLAVO

1. PROCESO DE INSTALACION

Instalar MySQL Workbench y MySQL server en la mquina que


funcionara como maestro y en la maquina esclavo.
* Se recomienda que la versin de los instaladores sea la misma en las dos mquinas.

** Se recomienda instalar los programas de forma independiente (no usar MySQL Installer)

*** Agregar una excepcin en el firewall con el puerto que se va a utilizar. Por defecto viene
el 3306.

**** Utilizar los comandos telnet y ping para verificar la conexin entre las dos mquinas.

2. CONFIGURAR EL MAESTRO

Ejecutamos mysqldump para realizar un volcado de la base de datos


en CMD y copiamos el archivo en la maquina maestro:

mysqldump u root p marce usuarios > dump_file.sql

Abrir MySQL Workbench y hacer Click en la esquina inferior derecha:


y seleccione la instancia del servidor que se va a usar como el
maestro, que es probablemente localhost, porque no se puede usar
MySQL Workbench para editar un archivo de configuracin en un
servidor remoto:

Haga clic en Options File en la seccin Configuration:

Server ID
Seleccione la pestaa General y en la seccin Informational activar
server-id. El ID es necesario para la instancia de servidor de
replicacin y debe ser un nmero mayor o igual a 1. En nuestra
configuracin se utiliz el nmero 1.
* Revisar el archivo My.ini que se encuentra en la carpeta de instalacin de MySQL y verificar
que nuestra configuracin del Server ID este correcta.

Binary Log
La nica forma en que un esclavo puede replicar lo que est
ocurriendo en el maestro, es leer el archivo de registro en el maestro.
Este archivo de registro es el registro binario.

Seleccione la pestaa Logging y activar Log-bin. Escriba el nombre


del archivo de registro. En nuestra configuracin se utilizo mysql-bin

Binary Log Expiration


Esta opcin hace que MySQL borre archivos acumulados bin-log en un
periodo de tiempo.
En la pestaa Logging activar Expire Log Days y ajustar un numero
que indicara nuestro periodo de expiracin. En nuestra configuracin
seleccionamos 7.

Concurrent Insert
La ltima opcin para el maestro es concurrent_insert. Selecciona
en la pestaa MyISAM y ajustar ALWAYS.

Aplicar todos los cambios y cerrar MySQL Workbench. Reiniciamos los


servicios de MySQL.

Replication User
El siguiente paso es la creacin de un usuario con permisos de
replicacin. No utilice una cuenta existente porque los datos de la
cuenta se almacenan en texto sin formato en el fichero master.info y
la cuenta se debe usar slo para los esclavos que se conectan a este
maestro.

Abrimos la consola de MySQL y ejecutamos los siguientes comandos.

Create User
Creamos el usuario con el privilegio Replication Slave, y la ip del
esclavo, asignndole un nombre y una contrasea:

GRANT REPLICATION SLAVE ON *.* TO 'rpldbm'@'xxx.xx.x.x'


IDENTIFIED BY 'password' ;

Ahora le asignamos privilegios y bloqueamos las con los siguientes


comandos:

FLUSH PRIVILEGES;
FLUSH TABLES;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

mysql > SHOW MASTER STATUS;


+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | | |
+---------------+----------+--------------+------------------+

Guarde el nombre exacto del archive ubicado en FILE y la posicin.

Desbloqueamos las tablas y arrancamos el maestro:

UNLOCK TABLES;

El archivo generado .sql se guarda en la carpeta MySQL/bin que


vamos a copiar y pegar en el esclavo.

3. CONFIGURAR EL ESCLAVO
Cargamos el archivo generado con mysqldump y copiado de la
siguiente manera en CMD:

mysql u root -p < dump_file.sql

Configure MySQL
Abrir MySQL Workbench y hacer Click en la esquina inferior
derecha:

y seleccione la instancia del servidor que se va a usar como esclavo,


que es probablemente localhost:

Haga clic en Options File en la seccin Configuration:

Logging
Seleccione la pestaa Logging y activar Log-bin. Escriba el nombre
del archivo de registro. En nuestra configuracin se utiliz slave-bin.

Binary Log Expiration


En la pestaa Logging activar Expire Log Days y ajustar un nmero
que indicara nuestro periodo de expiracin. En nuestra configuracin
seleccionamos 7.

Replication settings
Seleccionar la pestaa Replication y en la seccin Relay Log
activar relay_log_purge.
En la seccin Slave activar slave_transaction_retries y ajustar el
valor 10.
En la seccin General activar replicate-do-db y colocar todas las
base de datos que se quieran replicar (separadas por ; ). Por ejemplo:
customers;orders;orderlines
En la seccin General activar report-host y report-port. Colocar la
direccin ip del esclavo y el puerto que por defecto se ajust 3306.

Server ID
Seleccione la pestaa General y en la seccion Informational elegir
server-id

* Revisar el archivo My.ini que se encuentra en la carpeta de


instalacin de MySQL y verificar que nuestra configuracin del Server
ID este correcta.

Guardar la configuracin, salir de MySQL Workbench, reiniciar los


servicios de MySQL y abrir la terminal de MySQL.

Primero detenemos el esclavo:


STOP SLAVE;
Ejecutamos el siguiente comando para establecer comunicacin con
el maestro:

change master to

master_host='xxx.xx.xx.x', IP del maestro

master_user='rpldbm', Usuario de replicacion


creado con grant

master_password='cajamag', Contrasea de
replicacion creada con grant

master_port=3306, Puerto de comuncacion

master_log_file='developer-bin.000004', Archivo
obtenido por show master status

master_log_pos=107; Posicion de log obtenido


por show master status

change master to

master_host='xxx.xx.xx.x',

master_user='rpldbm',

master_password='cajamag',

master_port=3306,

master_log_file='developer-bin.000004',

master_log_pos=107;

y por ultimo arrancamos el esclavo con el comando:

START SLAVE;

Si todo salio bien deberamos ver Waiting for master to send event,
Slave_IO_Running: YES, Slave_SQL_Running: YES

Вам также может понравиться