Replicación maestro-esclavo en MySQL
Configurar el maestro
Lo primero que debemos hacer es configurar el servidor maestro para que los esclavos se puedan conectar a él. Para ello debemos editar el fichero my.cnf y asegurarnos de lo siguiente:
# La opción skip-networking, si se encuentra en el fichero, debe estar comentada o debe borrarse.
#skip-networking
# La opción bind-address debe establecerse a una IP accesible o a 0.0.0.0
bind-address = 0.0.0.0
# Se debe establecer un server-id único para la red en la que se encuentre el servidor.
server-id = 1
# Los registros de transacciones deben estar activados.
log_bin = /var/log/mysql/mysql-bin.log
Para aplicar los cambios será necesario reiniciar el servidor MySQL.
A continuación, creamos un usuario para la replicación:
Configurar el esclavo
En el esclavo editamos el fichero my.cnf y le asignamos un server-id
único:
# El server-id debe ser único en la red.
server-id = 2
Para aplicar los cambios habrá que reiniciar el servidor MySQL.
Obtener los datos necesarios del maestro
Ahora necesitamos obtener los datos necesarios para poner el esclavo en funcionamiento. Concretamente lo que vamos a obtener aquí son dos cosas: un volcado de todos los datos del maestro y el punto exacto del registro de transacciones en el que el esclavo debe comenzar a procesar. Para ello hay que ejecutar el siguiente comando:
$ mysqldump -A -e --master-data=1 --add-drop-database \
> --create-options -u usuario -p > fichero.sql
Ese comando se encargará en una sentada de realizar el bloqueo de todas las tablas, hacer el volcado de todos los datos del maestro, añadir al volcado la instrucción necesaria para configurar los datos del maestro en el esclavo y levantar el bloqueo.
Si se está configurando la replicación entre dos servidores a través de
Internet, es más que probable que haya que editar el volcado SQL resultante
y cambiar la dirección del servidor maestro en la sentencia CHANGE MASTER TO
.
Cargar los datos en el esclavo
Ahora es necesario introducir el volcado en el esclavo. Para ello ejecutamos la siguiente orden en el terminal:
$ mysql -u usuario -p < fichero.sql
Para asegurarnos de que todo está correcto, reiniciamos el servidor MySQL. Hay
que tener en cuenta que esto también reemplazará los usuarios que estuvieran
configurados por defecto en el servidor esclavo. Además, gracias a la opción
--master-data
de mysqldump, los datos del maestro ya se habrán configurado.
Iniciar la replicación en el esclavo
Por último, iniciamos el proceso de replicación en el esclavo con la siguiente sentencia:
Tras esto, sólo será necesario asegurarse de que si se hace algún cambio en el maestro éste se vé reflejado en el esclavo, y comprobar que todo va bien mirando el resultado de la siguiente sentencia: