You are on page 1of 3

REPLICAR BASES DE DATOS MYSQL EN SERVIDORES LOCALES O REMOTOS

Mysql permite replicar bases de datos, dentro de un mismo servidor mysql (en la misma mquina), o
entre B.D. localizadas en diferentes servidores en red local o remota. Para poder conseguir replicar uno
de los servidores (Servidor M) tiene que ser el maestro y el otro servidor el esclavo (Servidor E).
Cuando indiquemos se indique Mysql> es porque tenemos que introducir los comandos dentro de la
consola de Mysql (Query browser).
La replicacin de Base de Datos en mysql tiene varias caractersticas a considerar y son:
Podemos replicar Bases de Datos en el mismo servidor (Diferentes servicios MySql), en Servidores
diferentes en LAN (Red Local) o WAN (Servidores Remotos).
Se puede configurar (etc/my.cnf), la replicacin parcial o total de las tablas de la Base de Datos a
replicar del Servidor Maestro al Servidor Esclavo/s.
La replicacin es UNIDIRECCIONAL, los datos se copian de una base de datos a otra en un solo
sentido, eso quiere decir que solo en una base de datos se deben actualizar los datos (sentencias
INSERT, UPDATE, DELETE), que es la base de datos maestra, y la base de datos esclava nunca debe
recibir sentencias de actualizacin de las tablas que se replican, solo consultas (SELECT).
De las tablas de la Base de Datos que no se replican, entre el Servidor Maestro y el Esclavo, se pueden
realizar las sentencias (INSERT, UPDATE y DELETE), en la base de datos del Servidor Esclavo.
Podemos tener sendos servidores esclavos para cada maestro, pero no varios maestros para un esclavo.
La replicacin copia exactamente todos los cambios que se van haciendo desde que se activa el
sistema de replicacin, es decir, antes de replicar hay que hacer un backup definitivo de la base de datos
principal a la esclava, para que las 2 bases de datos tengan exactamente la misma informacin.
Cada servidor esclavo debe tener permiso para conectar con el maestro y solicitar las actualizaciones.
1 configurar una red inalambrica
probar con comando ping comunucacin en ambos sentidos
Servidor Maestro
Servidor Esclavo
Crear una cuenta de usuario a travs de la cual
los Servidores Esclavos se comunicaran con el
Servidor Maestro
-CREATE USER 'replicar'@'%' IDENTIFIED
BY 'AbD361';
Asignar el privilegios de replica a la cuenta
-GRANT REPLICATION SLAVE on *.* TO
'replicar'@'%' IDENTIFIED BY 'AbD361';
Asignar el privilegios de SELECT a la cuenta,
para las tablas
-GRANT SELECT on base.* TO 'replicar'@'%'
IDENTIFIED BY 'AbD361';

Servidor Maestro
Asignar el privilegios SUPER y RELOAD a la
cuenta
-GRANT SUPER,RELOAD on *.* TO
'replicar'@'%' IDENTIFIED BY 'AbD361';

Servidor Esclavo

Verificar acceso al servidor a travs de la cuenta


creada
-en la lnea de comandos
--mysql -u replicar -p -h ip_servidor
-CREAR UN BAKUP DE LA BASE DE DATOS
A REPLICAR
Las bases de datos a replicar deben ser identicas
en el maestro y esclavo previo al inicio de la
misma
Editar my.conf
- detener servicio
buscar etiqueta
[mysqld]
agregar enseguida de la etiqueta
server-id=1
log-bin=mysql-bin
replicate-do-db = nombrebasededatos
bin-log-do-db=nombrebasededatos
iniciar el servicio mysql
Instalar el bakup de la base de datos
Editar my.conf
- detener servicio
buscar etiqueta
[mysqld]
agregar enseguida de la etiqueta
server-id=2#3 o 4 o 5 un numero para cada
esclavo sin repetrir
replicate-do-db = nombrebasededatos
bin-log-do-db=nombrebasededatos
iniciar el servicio mysql
Ver estado del servidor maestro
-SHOW MASTER STATUS (anotar datos)
Ejecutar la instruccin
-CHANGE MASTER TO
MASTER_HOST=' ip_maestro',
MASTER_USER='usuario',
MASTER_PASSWORD='contraseausuario',
MASTER_LOG_FILE = obtenido en SHOW
MASTER STATUS del master,
MASTER_LOG_POS = obtenido en SHOW
MASTER STATUS del master;
reiniciar servicio

Servidor Maestro

Servidor Esclavo
Iniciar replicacin
-START SLAVE
Verificar estado replicacin
-SHOW SLAVE STATUS
Debe mostrar 'waiting master send event'