abril
2007
Replicar base de datos MySQL
El problema es que no puedo darme el lujo de perder ni un bit de información de la página del Siglo, por lo cual me dí a la tarea de replicar la base de datos.
El primer esquema que utilicé fue hacer backup 2 veces al día de toda la base de datos, un tar -jcvf file.tar.bz2 /var/lib/mysql@ y descargarlo con script en una pc local:
#!/bin/sh wget -q -c http://www.elsiglodetorreon.com.mx/dump/siglon -O /d2/BackupDB/Internet_db_`date +%Y%m%d_01`.tar.bz2
El segundo esquema fue precisamente utilizar las capacidades de replicación de el mismo manejador de base de datos: MySQL.
1. Hacemos un backup de la DB, copiando vilmente los archivos del servidor maestro que estén en /var/lib/mysql o donde tengan sus bases de datos (por lo general las distribuciones modernas de Linux las ponen allí) al servidor esclavo.
2. Añadimos el parámetro server-id=2,@ en el servidor esclavo, damos de baja el motor de base de datos, copiamos los archivos del maestro en /var/lib/mysql e iniciamos de nuevo MySQL.
3. En el servidor maestro, añadimos en la sección [mysqld]@
log-bin=mysql-bin server-id=1
4. En el servidor maestro damos permisos de replicación al esclavo
GRANT REPLICATION SLAVE ON *.* TO "slave"@"host" IDENTIFIED BY 'slaveabdul';
5. Reiniciamos el servidor maestro, aqui es importante que si estaba en producción lo dejemos offline un rato en lo que hacemos la sincronización.
6. En el servidor maestro visualizamos el estado del servidor:
mysql> SHOW MASTER STATUS\G File: mysql-bin.000001 Position: 4 Binlog_Do_DB: Binlog_Ignore_DB: 1 row in set (0.00 sec)
7. Apuntamos esos datos y en el esclavo ejecutamos lo siguiente (teniendo cuidado de poner el mismo usuario y password, además del log file y de la posición):
CHANGE MASTER TO MASTER_HOST='ip-maestro', MASTER_USER='slave', MASTER_PASSWORD='slaveabdul', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4;
8. En el esclavo ejecutamos:
START SLAVE
Y ya, ahora tenemos los mismos datos en uno como en otro host… por lo que llevo viendo mantiene sincronizado todo el tiempo, aunque se perdiera el enlace del esclavo con el maestro en cuanto tuvieran de nuevo comunicación se sincronizarían. Esta sincronización se hace a nivel de log binario, por lo cual es rápido y consistente, además de que en mi caso en lugar de respaldar 1.2 GB diarios de datos ahora recibo las actualizaciones de la base de dato de manera constante y no me acabo el ancho de banda local, además de que solo se transfieren los cambios y no toda(s) la(s) base(s) de datos.
MySQL rocks.
Ganamos:
- Menos uso de ancho de banda
- Sincronización de datos
- Backup en diferentes lugares (inclusive paises) sin mayor problema
Entradas relacionadas:
Han escrito 9 comentarios de «Replicar base de datos MySQL»
neo
Viernes 06 de abril, 2007 21:20.-
¿Y puedes creer que con todas esas ventajas no me dejaron implementar una base de datos con soporte de replicacion en una chamba anterior?
Preferian mantener copiando cientos de gigabytes diariamente en formato de tablas de dbase a comenzar a implementar un sgbd…
¡¡¡Y que conste que con MySQL no hay costo y además se puede instalar en Netware!!! que es el sistema de red que utilizan.
Simplemente no entiendo. Cosas que se encuentra uno :P

(anonimo)DANILO
Lunes 14 de mayo, 2007 17:28. [usuario no registrado en ymipollo.com]-
Buenas
Por favor quisiera qaue me ayuden con una duda
lo que sucede es que tengo un trabajo en el cual necesito replicar bases de datos tanto en sql, my sql a oracle y no se como realizarlopor favor agradeceria mucho su ayuda
favor enviarme cualquier informacion a daradex hotmail.com
muchas gracias su ayuda
(anonimo)devilsoulblack
Martes 29 de mayo, 2007 09:21. [usuario no registrado en ymipollo.com]-
tanto en el maestro como en el esclavo deben tener la misma version de mysql ?

ToRo
Martes 29 de mayo, 2007 09:22.-
No necesariamente devilsoulblack, pero se recomienda ampliamente. Además me parece que esto solo funciona desde las versiones 4 en adelante.

(anonimo)Cesar
Viernes 05 de diciembre, 2008 18:12. [usuario no registrado en ymipollo.com]-
hola tengo una duda , cuando se cipia la carpeta del servidor maestro al servidor esclavo, realmente que arvivos son los que se transfiereno copian

ToRo
Viernes 05 de diciembre, 2008 18:12.-
@(anonimo)Cesar se transfieren las transacciones (insert, delete, update, etc.) que se hacen en el maestro, de tal forma que se tiene una copia exacta en el esclavo.

(anonimo)BamBam
Martes 03 de marzo, 2009 17:50. [usuario no registrado en ymipollo.com]-
Saludos Toro.
Checando los pasos antes mensionados, realice el proceso y en el momento que ejecuto del lado del servidor el comando:
SHOW MASTER STATUSG
me muestra el estado pero al final me manda un mensaje de error,ERROR:
No query specifiedno se si tenga que ver el que no me sincroniza nada.
Continuo con el proceso y al ejecutar el comando “Start Slave” no me sincroniza nada, o no se si me haga falta algun paso.
Saludos y muchas gracias ToRo.
(anonimo)laflorcita
Jueves 12 de marzo, 2009 19:15. [usuario no registrado en ymipollo.com]-
Hola,tengo un problema en cuanto a la replicacion, tengo el server master y el esclavo y todo funciona bien durante un buen tiempo, pero de pronto el esclavo se cae, en el my.cnf he configurado para que salte algunos errores, el esclavo se cae con menos frecuencia a pertir de ello pero aun se sigue cayendo… alguien podria ayudarme por favor? no me gusta estar viniendo a las 4 am para restaurar la BD:’(

ToRo
Jueves 12 de marzo, 2009 19:16.-
laflorcita, activa el log para ver el motivo de por que se “cae” tu esclavo.


