Como instalar la replica de la base de datos en MySql
Este tutorial en particular describe cómo instalar la réplica de la base de datos en MySQL. La réplica 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 estén sincronizadas. Esto no es una política de respaldo porque si se corre un comando de borrado de forma accidental también será realizado en el esclavo; sin embargo las réplicas 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 dirección IP 192.168.0.16 a un esclavo. Ambos sistemas (maestro y esclavo) están 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 configuración 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 programaMySQLMySQL Server 5.0my.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 líneas (si es que existen):
#skip-ne tworking #bind-address = 127.0.0.1 |
Además 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 líneas siguientes en
“C:Archivos de programaMySQLMySQL Server 5.0my.ini”:
log-bin = C:Archivos de programaMySQLMySQL Server 5.0mysql-bin.log binlog-do-db=alumnos server-id=1 |
Después de haber echo esto, detenemos el servidor y posteriormente lo volvemos a cargar, para que este aplique los cambios recién establecidos.
:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
Después entramos en la base de datos de MySQL como root y creamos el usuario con privilegios de la réplica:
mysql -u root –p Enter password: |
Ahora estamos en el shell de MySQL.
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY '';
FLUSH PRIVILEGES;
Reemplace con el password real. |
Después haga esto (aún 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 información, la necesitaremos más adelante en el esclavo!
Salimos del shell de MySql:
Pasando la información 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 operación, así que si se tiene una base de datos grande en un sistema de producción de mucho trafico, esto no es lo que se desea, y en este caso recomiendo seguir el primer método. Sin embargo, el último método es muy rápido, así que aquí describiré ambos.
Primer método:
mysqldump -u root -p --opt alumnos > alumnos.sql
Reemplace con el password real para el usuario root de MySql
Importante: No hay espacio entre -p y ! |
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.
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 alumnos < /path/alumnos.sql
Reemplace con el password real para el usuario root de MySql
Importante: No hay espacio entre -p y !
Path se refiere a la dirección 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 líneas siguientes a
“C:Archivos de programaMySQLMySQL Server 5.0my.ini”:
server-id=2 master-host=192.168.0.16 master-user= master-password= master-connect-retry=183 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 están también 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 (aún 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='', MASTER_LOG_FILE='mysql-bin.006', MASTER_LOG_POS=183;
- MASTER_HOST es la dirección IP o el nombre de la máquina del maestro (en este ejemplo es 192.168.0.16).
- MASTER_USER es el usuario al que le concedimos derechos de réplica en el maestro.
- MASTER_PASSWORD es la contraseña 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 posición MySQL que se devuelve al ejecutar SHOW MASTER STATUS; en el maestro.
|
Ahora todo que se tiene que hacer es inicializar el esclavo. Todavía en el shell de MySQL funcionando:
Ahora siempre que la base de datos alumnos sea actualizada en el maestro, todos los cambios serán replegados a la base de datos alumnos en el esclavo.
------------------------------------------------------------------------------------------------------
Por ahora esto es todo, espero que les sirva.
Saludos...