Base de conocimiento

Creado por eth0
2011-04-25
21:47:00

Categorías
Etiquetas

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:

mysql> GRANT REPLICATION SLAVE ON *.* TO 'usuario'@'host' IDENTIFIED BY 'password';

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:

mysql> START SLAVE;

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:

mysql> SHOW SLAVE STATUS;