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:
log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
GRANT REPLICATION SLAVE ON *.* TO ‘user’@host’ IDENTIFIED BY ‘password’;
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;
Vía: Hackosis
Suscribete al feed aquí
7 Respuestas para "Configurar replicación en MySQL"
[...] Configurar replicacion en MySQL [...]
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
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.
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.
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.
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.
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.
Comentarios: