Replicación Maestro – Esclavo MySQL Server
Existen diversos esquemas de replicación de bases de datos en MySQL, su utilización es diversa pero se podría decir que lo más común es que se la utilice para garantizar la disponibilidad de la base de datos ante grandes volúmenes de carga. En esta oportunidad analizaremos el esquema de replicación Maestro – Esclavo.
La replicación Maestro – Esclavo es útil cuando nosotros necesitamos realizar operaciones de selección, inserción, actualización y eliminado en el Master, mientras que el servidor Esclavo esta destinado principalmente a realizar operaciones de selección. Si realizamos cualquier otra operación estas no serán replicadas en el Maestro, cosa que si ocurre a la inversa.
Para el siguiente ejemplo utilizaremos unicamente un servidor Maestro y otro Esclavo, pero fácilmente se podría tener n Esclavos.
Servidor Maestro
Editar el archivo de configuración /etc/my.cnf de tal forma que sea similar a lo siguiente:
vim /etc/my.cnf
log-bin=mysql-bin server-id=1 replicate-do-db=NOMBRE_BDD binlog-do-db=NOMBRE_BDD
Reiniciar el servicio
service mysqld restart
Mediante un cliente mysql, puede ser desde el cliente consola o phpmyadmin creamos un usuario con privilegios de replicación de la siguiente manera:
CREATE USER 'usuario'@'host' IDENTIFIED BY 'clave'; GRANT REPLICATION SLAVE ON nombre_bdd.* TO 'usuario'@host' IDENTIFIED BY 'clave';
Obviamente debemos reemplazar por los valores adecuados, el nombre de usuario, clave, host, base de datos. Ejecutamos desde la misma consola:
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
Veremos una tabla similar a la siguiente:
+
------------------+----------+---------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+
------------------+----------+---------------+------------------+
| mysql-bin.000001 | 98 | dbmydnsconfig | |
+
------------------+----------+---------------+------------------+
Debemos recordar los valores, para utilizarlos posteriormente. Finalmente ejecutamos:
UNLOCK TABLES;
En el Servidor Esclavo.
Editamos el archivo de configuración:
vim /etc/my.cnf
Agregamos lo siguiente con el fin de tener algo similar a:
server-id=2 replicate-do-db=NOMBRE_BDD binlog-do-db=NOMBRE_BDD replicate-ignore-db = mysql replicate-wild-do-table=NOMBRE_BDD.%
En este caso note que he especificado que no se replique la base de datos mysql. Ejecutamos desde el cliente de MySQL:
CHANGE MASTER TO MASTER_HOST='host', MASTER_USER='usuario', MASTER_PASSWORD='clave', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-BIN.000001', MASTER_LOG_POS=98;
Recuerden cambiar los valores por el correspondiente indicado al ejecutar en el Maestro SHOW MASTER STATUS. Finalmente ejecutamos
START SLAVE;
Y deberíamos tener funcionando el esquema de replicación Maestro – Esclavo.