$maestro = 192.168.0.2 $esclavo = 192.168.0.1
1. Cambiar la configuración del servidor MySQL maestro, añadiendo las siguientes líneas a /etc/mysql/my.cf
:
# server-id: 10 + último octeto de la IP server-id=12 log-bin=mysql-bin
2. Cambiar la configuración del servidor MySQL esclavo (/etc/mysql/my.cf
):
# server-id: 10 + último octeto de la IP server-id=11
3. Creamos un usuario para replicación en el nodo maestro:
mysql> CREATE USER 'replicator'@'192.168.0.1' IDENTIFIED BY 'secret'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'192.168.0.1' IDENTIFIED BY 'secret'; mysql> flush privileges;
4. Bloqueamos las tablas del maestro y hacemos un dump:
mysql> FLUSH TABLES WITH READ LOCK; maestro# mysqldump bbdd > bbdd_dump_20120823.sql
Una vez terminado el proceso, tenemos que recordar la situación del log binario en el master:
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 1102248 | | | +------------------+----------+--------------+------------------+
Con esto ya podemos desbloquear las tablas en el maestro:
mysql> UNLOCK TABLES;
5. Instalar la base de datos en el esclavo:
esclavo# mysql bbdd < bbdd_dump_20120823.sql
mysql> CHANGE MASTER TO MASTER_HOST = '192.168.0.2'; mysql> CHANGE MASTER TO MASTER_USER = 'replicator'; mysql> CHANGE MASTER TO MASTER_PASSWORD = 'secret'; mysql> CHANGE MASTER TO MASTER_LOG_FILE = 'mysql-bin.000001'; mysql> CHANGE MASTER TO MASTER_LOG_POS = 1102248; mysql> start slave;
Ahora el esclavo comenzará la replicación con el maestro. Quedándose a 0 segundos de él una vez copiado todo el log binario que le resta de lo sucedido hasta la fecha. Para comprobar que realmente está replicando, tendremos que ejecutar:
mysql> show slave status \G
Lo importante es lo que sigue al valor Seconds_Behind_Master
: porque es el valor que indica el retraso de este esclavo con respecto al maestro. Y también hay que comprobar:
Slave_SQL_Running: Yes Slave_IO_Running: Yes