Está en la página 1de 6

Replicacin en MySQL

Tenemos siguinte topologia de la red:

master 192.168.2.10/24

slave(replica) 192.168.2.20/24

Switch de la red 192.168.2.0/24

Queremos tener en el servidor slave una replica de la base de datos asir Base de datos asir tiene dos tablas: alumnos y asignaturas. Estructura da las tablas:

Configuracin en Master
Asignamos IP al servidor, 192.168.2.10/24 Instalamos servidor MySQL apt-get install mysql-server Creamos la base de datos asir y las tablas mysql -u root -p *clave root* create database asir; use asir; create table alumnos ( id_alumno int primary key auto_increment, nombre_alumno varchar(80) not null ); create table asignaturas ( id_asignatura int primary key auto_increment, nombre_asignatura varchar(80) not null ); Agregamos contenido a las tablas: alumnos insert into alumnos(nombre_alumno) insert into alumnos(nombre_alumno) insert into alumnos(nombre_alumno) insert into alumnos(nombre_alumno) insert into alumnos(nombre_alumno) insert into alumnos(nombre_alumno) insert into alumnos(nombre_alumno) insert into alumnos(nombre_alumno) insert into alumnos(nombre_alumno)

values values values values values values values values values

('Sergio'); ('Kike'); ('Pedro'); ('Fran Garcia'); ('Mara'); ('Andres'); ('Fran Truke'); ('Fran Cano'); ('Jose Juan'); ('Gestion de SGBD'); ('Sistemas'); ('Redes'); ('Empresa'); ('Aplicaciones'); ('Seguridad');

asignaturas insert into asignaturas(nombre_asignatura) insert into asignaturas(nombre_asignatura) insert into asignaturas(nombre_asignatura) insert into asignaturas(nombre_asignatura) insert into asignaturas(nombre_asignatura) insert into asignaturas(nombre_asignatura)

values values values values values values

Cerramos la consola de MySQL, entramos en terminal con cuenta de superusuario y editamos el archivo /etc/mysql/my.cnf

Para que el servidor master acepta conexiones desde exterior, debemos quitar o comentar esta linea en el archivo /etc/mysql/my.cnf

Reiniciamos el servicio mysql:


sudo service mysql restart

Desde la consola MySQL, creamos usuario replicador_asir con permiso de replicacion:


GRANT REPLICATION SLAVE ON *.* TO 'replicador_asir'@'%' IDENTIFIED BY 'Curso2011'; flush privileges;

Salimos de la consola MySQL, reiniciamos el servidor MySQL:


sudo service mysql restart

Volvemos a la consola MySQL, bloqueamos la escritura de los datos en las tablas para crear una replicacin correcta: mysql> flush tables with read lock; mysql> set global read_only=on;

Hacemos una prueba de master-status

Bien, los logs de cambios de la base de datos asir estan creandose correctamente. Recordamos los valores de ultimo archivo (en este caso mysql-master-asir.000002) y la posicion (en este caso 106). Creamos una copia de seguridad de esta base de datos para restaurarla en el servidor slave: mysqldump -h localhost -u root -p asir > /backup.sql

Configuracin en Slave
Asignamos IP al servidor, 192.168.2.20/24 Instalamos servidor MySQL apt-get install mysql-server Creamos la base de datos asir: mysql -u root -p *clave root* create database asir;

Salimos de la consola MySQL, restauramos copia de seguridad de la base de datos asir del servidor master mysql -h localhost -u root -p asir < /backup.sql Configuramos el slave para que recibe las instrucciones de actualizar sus tabals desde el servidor master, editamos el archivo /etc/mysql/my.cnf

Reiniciamos el servidor MySQL:


sudo service mysql restart

Comprobamos nueva configuracion a travez de comando show slave status\G

Los datos importantes estan marcados en rojo, son: Slave_IO_State: Waiting for master to send event es decir, el ervidor slave esta esperando que el servidor maestro envia los datos de replicacion: Slave_IO_Running: Yes nos dice que el servidor slave esta en modo de replica; Slave_SQL_Running: Yes nos dice que el servidor-replica esta ejecutado; Seconds_Behind_Master: 0 segundos de margen entre cambio de datos en el servidor maestro y esclavo (en nuestro caso es 0) Volvemos al servidor master, desbloqueamos las tablas: mysql> unlock tables; mysql> set global read_only= off; Para asegurarnos que todas las preferencias de los servidores estan correctamente aplicadas, reiniciamos ambos usando el comando: sudo reboot Cuando se inician, insertamos algun dato en la base de datos asir (tabla alumnos por ejemplo) en el servidor master:

Y hacemos un select en el servidor-replica:

Como vemos, la replicacion funcciona correctamente. Lo mismo pasara al hacer cualquier modificacion de la base de datos asir en el servidor master.