====== 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