post icon

Tutorial de Replicacion Circular en MySQL

Hace 8 meses atrás aproximadamente escribí sobre como crear una replicación de tipo Maestro/Esclavo con MySQL en la cual prometía continuar la guía escribiendo como hacer lo mismo pero de modo circular, es decir, una replicación 2-way.

Para llevar a cabo este tutorial, deberán configurar sus bases de datos como lo decía la primer parte. La misma pueden leerla aquí: Replicacion MySQL.

Una vez todo lo anterior este OK, detendremos el motor para trabajar (tanto el esclavo como el maestro), desde la consola

1
/etc/init.d/mysql stop

Vamos a editar el fichero de configuracion del MySQL con cualquier editor

1
vim /etc/my.cnf

Agregamos la siguiente clausula debajo de la sección de configuración del esclavo, esto hará que el esclavo también genere su propio log binario.

1
2
3
4
5
6
7
8
replicate-do-db=cism
log-bin=mysql-bin.log
innodb_flush_log_at_trx_commit=1
sync_binlog=1
binlog-do-db=cism
expire_logs_days        = 0	
 
log-slave-updates # esta es linea que debemos agregar

Volvemos a iniciar el lado esclavo

1
/etc/init.d/mysql start

Nos conectamos a la misma, debemos especificar con que BD queremos trabajar obligatoriamente para los siguientes pasos

1
mysql -h 19x.xxx.xxx.x01 -u root -p****** devtroce

Vamos a bloquear la escritura en la BD, y verificaremos en que posición está el LOG Binario.

1
2
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

Nos aparecerá algo parecido a lo que vemos abajo, debemos anotar en algún lado los valores de la columna File y Position

1
2
3
4
5
+----------------------------+----------+--------------+-------------------------+
| File                       | Position | Binlog_Do_DB | Binlog_Ignore_DB        |
+----------------------------+----------+--------------+-------------------------+
|mysql-bin.000001            |     98   | devtroce     |                         |
+----------------------------+----------+--------------+-------------------------+

Ahora podemos desbloquear las tablas pero asegurarnos que nadie se conectará a producir cambios, si lo desean pueden hacerlo más adelante si dudan de este paso:

1
2
UNLOCK TABLES;
QUIT;

Ahora tenemos que convertir al master, en esclavo a la vez, para ello reconfiguraremos su archivo archivo:

1
vim /etc/mysql/my.cnf

Repetimos el proceso anterior, agregando la clausula log-slave-updates
Iniciamos nuevamente el proceso de MySQL

1
/etc/init.d/mysql start

Finalmente seteamos quien es su maestro, y en que posición quedó su log que son los valores que anotamos en el paso anterior.

1
2
3
4
5
6
7
8
9
10
STOP SLAVE;
CHANGE MASTER TO
	MASTER_HOST='IP-del-master-server',
	MASTER_PORT = puerto-del-master-server,
	MASTER_USER='usuario_esclavo',
	MASTER_PASSWORD='password_esclavo',
	MASTER_LOG_FILE='file_log_determinado????',
	MASTER_LOG_POS=recorded_log_position????,
	MASTER_CONNECT_RETRY=60 ;
START SLAVE;

Vale conocer algunas features que no podemos o no conviene hacer si elegimos este tipo de replicacion, la pueden ver en el sitio oficial:
http://dev.mysql.com/doc/refman/5.0/es/replication-features.html

Comentarios desde Facebook:

Trackbacks/Pingbacks

  1. Tutorial de Replicacion Circular en MySQL « DbRunas – Noticias y Recursos sobre Bases de Datos UNITED STATES WordPress - 15 Agosto 2010

    […] http://www.devtroce.com/2010/08/15/tutorial-de-replicacion-circular-en-mysql/ August 15, 2010   //   MySQL   //   No Comments   //   […]

Responder