En este artículo, demostraré cómo configurar la replicación de MySQL entre servidores de bases de datos Maestro y Esclavo. Esto utilizará dos servidores, uno de los cuales replicará los datos del otro (maestro a esclavo). Utilice esta configuración si desea mejorar la confiabilidad y el rendimiento de la configuración de sus sistemas.
Consulte uno de nuestros otros tutoriales si necesita ayuda para configurar un sistema basado en RHEL.
Para esta guía, usaremos esta configuración de laboratorio de replicación de MySQL.
MySQL Master - 192.168.56.1
MySQL Slave - 192.168.56.2
Paso 1:Instale MySQL en el servidor maestro y esclavo
Comience instalando la base de datos MySQL en los servidores maestro y esclavo.
$ sudo dnf install @mysql
or
$ sudo yum install mysql-server
Una vez completada la instalación, inicie el servicio de la base de datos.
$ sudo systemctl start mysqld
Luego habilítelo para que comience con systemctl. Habilitarlo le indicará al servicio que se inicie en la secuencia de inicio.
$ sudo systemctl enable mysqld
Luego confirme que el servidor de la base de datos MySQL se está ejecutando:
$ sudo systemctl status mysqld
Paso 2:Proteger MySQL en el servidor maestro y esclavo
Se recomienda asegurar su nuevo servidor de base de datos con el siguiente comando:
$ sudo mysql_secure_installation
Para comenzar, deberá configurar la contraseña de root de MySQL. Asegúrese de utilizar una contraseña raíz segura, preferiblemente una que contenga una combinación de caracteres en mayúsculas, minúsculas, especiales y numéricos y que tenga más de 8 caracteres.
Para las indicaciones restantes, escriba 'Y' para configurar el servidor de la base de datos con la configuración recomendada.
Una vez que haya terminado de instalar y fortalecer MySQL en el nodo maestro y esclavo, el siguiente paso es configurar el nodo maestro.
Paso 3:configurar el nodo maestro (servidor)
Ahora configuramos el nodo maestro y otorgamos acceso al nodo esclavo. Primero, necesitamos editar el archivo de configuración mysql-server.cnf.
$ sudo vim /etc/my.cnf.d/mysql-server.cnf
Agregue las siguientes líneas debajo de la sección [mysqld].
bind-address = 192.168.56.1
server-id = 1
log_bin = mysql-bin
Una vez hecho esto, guarde los cambios y salga. Luego reinicie el servidor MySQL.
$ sudo sysemctl restart mysqld
A continuación, inicie sesión en MySQL shell.
$ sudo mysql -u root -p
Ejecute los siguientes comandos para crear un usuario de base de datos que se usará para vincular el maestro y el esclavo para la replicación.
mysql> CREATE USER 'replica'@'192.168.56.2' IDENTIFIED BY 'Password';
mysql> GRANT REPLICATION SLAVE ON *.*TO 'replica'@'192.168.56.2';
Aplique los cambios y salga del servidor MySQL.
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
Verifique el estado del maestro.
mysql> SHOW MASTER STATUS\G
Tome nota del nombre de archivo y la posición. Lo necesitará más adelante cuando configure el esclavo para la replicación. En nuestro caso, tenemos el nombre de archivo como binlog.000001 y Posición 854.
Paso 4:configurar el nodo esclavo (servidor)
Ahora, regresa al nodo Esclavo. Una vez más, edite el archivo de configuración mysql-server.cnf.
$ sudo vim /etc/my.cnf.d/mysql-server.cnf
Como antes, pegue estas líneas debajo de la sección [mysqld]. Cambie la dirección IP para que corresponda con la IP del esclavo. Además, asigne una ID de servidor diferente. Aquí le hemos asignado el valor de 2.
bind-address = 192.168.56.2
server-id = 2
log_bin = mysql-bin
Guarde los cambios y salga del archivo. Luego reinicie el servidor de la base de datos.
$ sudo systemctl restart mysqld
Para configurar el nodo Esclavo para replicar desde el nodo Maestro, inicie sesión en el servidor MySQL del Esclavo.
$ sudo mysql -u root -p
Comience deteniendo los subprocesos de replicación:
mysql> STOP SLAVE;
Luego ejecute el siguiente comando para configurar el nodo esclavo para replicar bases de datos desde el maestro.
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.56.1' ,
MASTER_USER='replica' ,
MASTER_PASSWORD='Password' ,
MASTER_LOG_FILE='binlog.000001' ,
MASTER_LOG_POS=854;
Los indicadores MASTER LOG FILE y MASTER LOG POS coinciden con los valores de archivo y posición del nodo maestro al final del paso 1.
MASTER HOST, MASTER USER y MASTER PASSWORD son la dirección IP maestra, el usuario de replicación y la contraseña, respectivamente.
A continuación, se deben iniciar los subprocesos de replicación esclavos:
mysql> START SLAVE;
Paso 4:Probar la replicación maestro-esclavo de MySQL
Ahora, para probar si la replicación entre el nodo maestro y el esclavo está funcionando, inicie sesión en el servidor de base de datos MySQL en el nodo maestro:
$ sudo mysql -u root -p
Crear una base de datos de prueba. Aquí, nuestra base de datos de prueba se llama replication_db.
mysql> CREATE DATABASE replication_db;
Verificar la existencia de la base de datos.
mysql> SHOW DATABASES;
Ahora vaya al nodo esclavo, inicie sesión en el servidor MySQL y vuelva a verificar que exista la base de datos de replicación. Podemos ver que la base de datos está presente en la salida a continuación. Esto indica que se ha producido la replicación del nodo maestro al esclavo.
mysql> SHOW DATABASES;