Sei sulla pagina 1di 5

Como instalar la replica de la base de datos en MySql

Este tutorial en particular describe cmo instalar la rplica de la base de datos en MySQL. La rplica de MySQL permite tener una copia exacta de una base de datos de un servidor principal (maestro) en otro servidor (esclavo), y todas las actualizaciones a la base de datos en el servidor principal se repliegan inmediatamente a la base de datos en el servidor auxiliar de modo que ambas bases de datos estn sincronizadas. Esto no es una poltica de respaldo porque si se corre un comando de borrado de forma accidental tambin ser realizado en el esclavo; sin embargo las rplicas pueden ayudar a proteger contra faltas de hardware. En este tutorial en particular se mostrara como replegar la base de datos alumnos contenida en una PC con la direccin IP 192.168.0.16 a un esclavo. Ambos sistemas (maestro y esclavo) estn funcionando en Windows XP SP2. Ambos sistemas tienen MySQL 5.0 instalado, y la base de datos alumnos con las tablas y los datos ya existente en el maestro, pero no en el esclavo. Primero quisiera decir que sta no es la nica manera de de levantar la configuracin de tal sistema. Hay muchas maneras de alcanzar esta meta pero sta es la manera que utilizaremos.

Configurar el Maestro:
Primero tenemos que corregir C:\Archivos de programa\MySQL\MySQL Server 5.0\my.ini. Tenemos que permitir el establecimiento de una red para MySQL, y MySQL debe escuchar en todas las direcciones IP, por lo tanto comentamos estas lneas (si es que existen):
#skip-ne tworking #bind-address = 127.0.0.1

Adems tenemos que decirle a MySQL de qu base de datos debe escribir a los registros (estos registros son utilizados por el esclavo para ver qu ha cambiado en el mestro), que fichero de diario debe utilizar, y tenemos que especificar donde esta el servidor maestro de MySQL. Deseamos replegar la base de datos alumnos, as que ponemos las lneas siguientes en C:\Archivos de programa\MySQL\MySQL Server 5.0\my.ini: .
log-bin = C:\Archivos de programa\MySQL\MySQL Server 5.0\replic \mysql-bin.log binlog-do-db=alumnos server-id=1

Despus de haber echo esto, detenemos el servidor y posteriormente lo volvemos a cargar, para que este aplique los cambios recin establecidos.

Despus entramos en la base de datos de MySQL como root y creamos el usuario con privilegios de la rplica:
mysql -u root p Enter password:

Ahora estamos en el shell de MySQL.


GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY '<password>'; FLUSH PRIVILEGES; Reemplace <password> con el password real.

Despus haga esto (an en shell de MySQL):


USE alumnos; FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;

El comando pasado mostrar algo como esto:


+---------------+----------+--------------+------------------+ | File | Position | Binlog_do_db | Binlog_ignore_db | +---------------+----------+--------------+------------------+ | mysql-bin.006 | 183 | alumnos | | +---------------+----------+--------------+------------------+ 1 row in set (0.00 sec)

Anote esta informacin, la necesitaremos ms adelante en el esclavo! Salimos del shell de MySql:
quit;

Pasando la informacin existente en del maestro al esclavo.


Hay dos formas para pasar las tablas y los datos existentes de alumnos en el maestro al esclavo. El Primer debe hacer una descarga de la base de datos, El segundo debe utilizar el comando LOAD DATA FROM MASTER; en el esclavo. El ltimo tiene la desventaja de que la base de datos en el maestro ser bloqueada durante esta operacin, as que si se tiene una base de datos grande en un sistema de produccin de mucho trafico, esto no es lo que se desea, y en este caso recomiendo seguir el primer mtodo. Sin embargo, el ltimo mtodo es muy rpido, as que aqu describir ambos. Primer mtodo:
mysqldump -u root -p<password> --opt alumnos > alumnos.sql Reemplace <password> con el password real para el usuario root de MySql Importante: No hay espacio entre -p y <password>!

Esto crear una descarga del SQL del alumnos en el archivo alumnos.sql, para que Transfiera este archivo a su servidor esclavo!. Si desea usar esta manera LOAD DATA FROM MASTER; entonces por ahora no hay nada que se deba hacer. Finalmente tenemos que abrir las tablas en alumnos.
mysql -u root p Enter password: UNLOCK TABLES; quit;

Configurando el esclavo.
En el esclavo primero tenemos que crear la base de datos alumnos:
mysql -u root p Enter password: CREATE DATABASE alumnos; quit;

Si ha hecho una descarga del SQL de alumnos en el maestro para transferirla al esclavo, entonces es hora de importar la descarga del SQL en nuestra base de datos alumnos creada en el esclavo:
mysql -u root -p<password> alumnos < /path/alumnos.sql Reemplace <password> con el password real para el usuario root de MySql Importante: No hay espacio entre -p y <password>! Path se refiere a la direccin donde se encuentra el archivo con la descarga del SQL.

Ahora tenemos que decirle a MySQL en el esclavo que sea el esclavo, que el maestro es 192.168.0.16, y que la base de datos principal a mirar es alumnos. Por lo tanto agregamos las lneas siguientes a C:\Archivos de programa\MySQL\MySQL Server 5.0\my.ini:
server-id=2 master-host=192.168.0.100 master-user=slave_user master-password=secret master-connect-retry=60 replicate-do-db=alumnos

Reiniciamos MySql.

Si no ha importado alumnos de la base de datos maestro con la ayuda de una descarga del SQL, talvez desee usar esta manera LOAD DATA FROM MASTER; entonces es hora de conseguir los datos de la base de datos maestra, asi que entramos en el shell MySQL del esclavo:
mysql -u root p Enter password: LOAD DATA FROM MASTER; quit;

Si tiene phpMyAdmin instalado en el esclavo puede comprobar si todas las tablas de datos de la base de tatos alumnos del maestro estn tambin disponible en la base de datos alumnos del esclavo. Finalmente, debemos hacer esto:
mysql -u root p Enter password: SLAVE STOP;

En el comando siguiente (an en el shell de MySQL) tiene que sustituir los valores apropiadamente:
CHANGE MASTER TO MASTER_HOST='192.168.0.16', MASTER_USER='slave_user', MASTER_PASSWORD='<password>', MASTER_LOG_FILE='mysql-bin.006', MASTER_LOG_POS=183;

MASTER_HOST es la direccin IP o el nombre de la mquina del maestro (en este ejemplo es 192.168.0.16). MASTER_USER es el usuario al que le concedimos derechos de rplica en el maestro. MASTER_PASSWORD es la contrasea de MASTER_USER en el maestro. MASTER_LOG_FILE es el archivo MySQL que se devuelve al ejecutar SHOW MASTER STATUS; en el maestro. MASTER_LOG_POS es la posicin MySQL que se devuelve al ejecutar SHOW MASTER STATUS; en el maestro.

Ahora todo que se tiene que hacer es inicializar el esclavo. Todava en el shell de MySQL funcionando:
START SLAVE; quit;

Ahora siempre que la base de datos alumnos sea actualizada en el maestro, todos los cambios sern replegados a la base de datos alumnos en el esclavo.

Potrebbero piacerti anche