La replicación es una buena alternativa para tener disponibilidad de información cuando un servidor se cae. La replicación no suplanta los backups, sino, simplemente garantiza la operatividad.
MySQL soporta un esquema de replicación asincrónica de un servidor maestro a uno o varios servidores esclavos. El “master” escribe las transacciones en un log binario, que sirve como registro de actualizaciones para enviar a los servidores esclavos.
En esta oportunidad solo veremos una configuración Master-Slave, es decir, todas las actualizaciones sobre el servidor maestro son replicadas en el esclavo. Si se realizan actualizaciones sobre el esclavo, estas no se hacen efectivas en el maestro. Para crear un esquema de replicación maestro-maestro es necesario crear un esquema circular, donde cada servidor es maestro y esclavo, a la vez, del otro.
Los pasos para configurar la replicación Maestro-Esclavo son:
- En el servidor maestro, agregar/modificar, la sección [mysqld] del archivo de configuración my.cnf o my.ini (dependiendo del sistema operativo):
log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
- En el servidor maestro, reiniciar el demonio (o servicio) mysqld
- En el servidor maestro, crear un usuario con el privilegio “REPLICATION SLAVE”. El usuario no necesita otro privilegio.
GRANT REPLICATION SLAVE ON *.* TO ‘user’@host’ IDENTIFIED BY ‘password’;
- En el servidor maestro, ejecutar ‘FLUSH TABLES WITH READ LOCK;’, para prevenir la escritura a base de datos en el maestro.
- En el servidor maestro, ejecutar ‘SHOW MASTER STATUS;’ en el maestro y recordar los valores para más adelante
- En el servidor maestro, ejecutar ‘UNLOCK TABLES;’
- En el servidor esclavo, modificar el archivo my.cnf o my.ini y reiniciar el daemon:
server-id=2
En el servidor esclavo, ejecutar las siguientes instrucciones (ajustar los valores de acuerdo al usuario creado y los valores obtenidos al realizar el ‘SHOW MASTER STATUS’ anterior.
MASTER_HOST=’host’,
MASTER_USER=’user’,
MASTER_PASSWORD=’password’,
MASTER_PORT=3306,
MASTER_LOG_FILE=’mysql-BIN.000001′,
MASTER_LOG_POS=98,
MASTER_CONNECT_RETRY=10;
- En el servido esclavo, ejecutar:
- En el servidor esclavo, para asegurarnos que la replicación se inició satisfactoriamente, en el log de mysql deberíamos ver algo así:
Vía: Hackosis



jose
agosto 20, 2008
tengo entendido que para poder sincronizar necesito tener la misma estructura en ambas bases de datos, osea las mismas tablas con los mismos campos en cada una. si esto es cierto, como hago para poder sincronizar solo una o unas pocas tablas de la base de datos del maestro al esclavo, sin tener que mantener en ambos la totalidad de las tablas?. Ayuda por favor
Luciano
agosto 20, 2008
Si, puedes replicar solo algunas tablas.
Fíjate este my.cnf, de un servidor Master, de ejemplo:
replicate-do-db = db_a_replicar
replicate-ignore-table = db_a_replicar.tabla1_ignorada
replicate-ignore-table = db_a_replicar.tabla2_ignorada
Creo que este sencillo ejemplo es suficiente ¿no?
Saludos.
jose
agosto 20, 2008
ok, es claro, pero tengo una ultima inquietud. no es necesario entonces en el esclavo tener todas las tablas del maestro, sino solo aquellas que se van a sincronizar?. muchisimas gracias por su colaboracion.
Luciano
agosto 20, 2008
Efectivamente, en el esclavo puedes tener solo las tablas que quieras. Es decir, en tu Slave podrás tener solo algunas tablas del Master, así como también podrás tener tus propias tablas (que no necesariamente estarán en el Master)
Saludos.
jose
agosto 20, 2008
muchisimas gracias, por la calidad de la respuesta y la oportunidad de la misma. colaboraciones como esta es la que enriquece nuestra labor. Felicitaciones y muchas gracias.
JaimeP
octubre 7, 2008
Y que con en engine de las tablas de las bases de datos.? vos pusiste “innodb_flush_log_at_trx_commit=1″ y que con MyISAM? Tocaría cambiarle?
Y que pasa si en la BD tengo tablas con diferente engine?
Y de paso muchas gracias por la guia que pusiste.
cesar
febrero 14, 2009
como puedo modificar my ini
Netsky
noviembre 30, 2009
es posible replicar solo algunos datos de una tabla, por ejemplo solo los registros de una determinada ciudad
Vero
enero 29, 2010
Hola.. mi pregunta es la siguiente.. luego de q se ha configurado todo para la replicacion de datos… cuando se realizan nuevas actualizaciones en el maestro estas deberian actualizarce en el esclavo de forma automatica??
Gracias