====== MySQL: configurando replicación master-master ======
//Por el equipo de [[fmsi>|FMSI Sistemas de Informática]]// **:::** //Fecha creación: **20130530**//
===== Escenario =====
master1 vlsrv05 192.168.19.14
master2 vlsrv06 192.168.19.15
===== Configuración =====
Configuramos MySQL con el archivo /etc/mysql/my.cnf en ambos servidores:
==== Master 1 ====
log-bin = /var/log/mysql/mysql-bin
server-id = 1
auto_increment_increment= 2
auto_increment_offset = 1
==== Master 2 ====
log-bin = /var/log/mysql/mysql-bin
server-id = 2
auto_increment_increment= 2
auto_increment_offset = 2
Luego se debe reiniciar el servicio mysql en **ambos servidores**:
service mysql restart
===== Creación de un usuario para replicar =====
Generamos el usuario "replicacion" para acceso desde cualquier host o 2 usuarios, uno para
acceso desde cada servidor.
mysql-master> GRANT REPLICATION SLAVE ON *.* TO 'replicacion'@'%' IDENTIFIED BY '';
mysql-master> FLUSH PRIVILEGES;
Esto se debería hacer en los 2 servidores, pero no hace falta en este caso
porque luego se copiarán **todas** las bases de datos al otro servidor (inclusive 'mysql').
===== Igualar las bases de datos =====
- Detenemos los servicios de MySQL en ambos servidores.
- Copiamos y enviamos la base de datos MySQL al otro servidor:
mysql-master# cd /var/lib && tar czvf /tmp/data-mysql.tar.gz mysql
mysql-master# scp /tmp/data-mysql.tar.gz root@vlsrv06:/tmp
- En el otro servidor la descomprimimos y copiamos en /var/lib/mysql/
===== Activar replicación =====
Debemos ejecutar el siguiente comando en ambos servidores y anotar los datos:
mysql-master1> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 | 336 | | |
+------------------+----------+--------------+------------------+
mysql-master2> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 106 | | |
+------------------+----------+--------------+------------------+
Activamos la replicacion en ambos servidores utilizando los datos del paso anterior:
mysql-master1> CHANGE MASTER TO MASTER_HOST='192.168.19.15', MASTER_USER = 'replicacion', MASTER_PASSWORD = '', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 106;
mysql-master2> CHANGE MASTER TO MASTER_HOST='192.168.19.14', MASTER_USER = 'replicacion', MASTER_PASSWORD = '', MASTER_LOG_FILE = 'mysql-bin.000006 ', MASTER_LOG_POS = 336;
===== Iniciar los procesos slave en ambos nodos =====
mysql@M1> START SLAVE;
mysql@M2> START SLAVE;
===== Verificar que todo funcione =====
En cada uno de los servidores, el siguiente comando mostrará el servidor que está actuando como master, y la información de replicación:
show slave status\G;
===== Bibliografía =====
* http://www.howtoforge.com/mysql_master_master_replication
* http://brendanschwartz.com/post/12702901390/mysql-master-master-replication