GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo configurar la replicación maestro-esclavo de MySQL en CentOS 7

La replicación de MySQL es un proceso que le permite copiar automáticamente datos de un servidor de base de datos a uno o más servidores.

MySQL admite una serie de topologías de replicación, siendo la topología Maestro/Esclavo una de las topologías más conocidas en las que un servidor de base de datos actúa como maestro, mientras que uno o más servidores actúan como esclavos. De forma predeterminada, la replicación es asíncrona, donde el maestro envía eventos que describen las modificaciones de la base de datos a su registro binario y los esclavos solicitan los eventos cuando están listos.

En este tutorial, explicaremos cómo configurar una replicación maestro/esclavo de MySQL con un servidor maestro y uno esclavo en CentOS 7. Se aplican los mismos pasos para MariaDB.

Este tipo de topología de replicación es más adecuado para la implementación de réplicas de lectura para el escalado de lectura, copias de seguridad de bases de datos en vivo para recuperación ante desastres y trabajos de análisis.

Requisitos previos #

En este ejemplo, asumimos que tiene dos servidores que ejecutan CentOS 7, que pueden comunicarse entre sí a través de una red privada. Si su proveedor de alojamiento no proporciona direcciones IP privadas, puede usar las direcciones IP públicas y configurar su firewall para permitir el tráfico en el puerto 3306 solo desde fuentes confiables.

Los servidores de este ejemplo tienen las siguientes direcciones IP:

Master IP: 192.168.121.59
Slave IP:  192.168.121.14

Instalar MySQL #

Los repositorios predeterminados de CentOS 7 no incluyen paquetes de MySQL, por lo que instalaremos MySQL desde su repositorio Yum oficial. Para evitar problemas, instalaremos la misma versión 5.7 de MySQL en ambos servidores.

Instale MySQL en los servidores Maestro y Esclavo:

sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmsudo yum install mysql-community-server

Una vez completada la instalación, inicie el servicio MySQL y habilítelo para que se inicie automáticamente al arrancar con:

sudo systemctl enable mysqldsudo systemctl start mysqld

Cuando el servidor MySQL se inicia por primera vez, se genera una contraseña temporal para el usuario root de MySQL. Para encontrar la contraseña, use el siguiente comando grep:

sudo grep 'temporary password' /var/log/mysqld.log

Ejecute mysql_secure_installation comando para establecer su nueva contraseña de root y mejorar la seguridad de la instancia de MySQL:

mysql_secure_installation

Ingrese la contraseña raíz temporal y responda Y (sí) a todas las preguntas.

La nueva contraseña debe tener al menos 8 caracteres y contener al menos una letra mayúscula, una letra minúscula, un número y un carácter especial.

Configure el Servidor Maestro #

Primero, configuraremos el servidor MySQL maestro y haremos los siguientes cambios:

  • Configure el servidor MySQL para escuchar en la IP privada.
  • Establezca una ID de servidor única.
  • Habilite el registro binario.

Para hacerlo, abra el archivo de configuración de MySQL y agregue las siguientes líneas en el [mysqld] sección:

sudo nano /etc/my.cnf
master:/etc/my.cnf
bind-address           = 192.168.121.59
server-id              = 1
log_bin                = mysql-bin

Una vez hecho esto, reinicie el servicio MySQL para que los cambios surtan efecto

sudo systemctl restart mysqld

El siguiente paso es crear un nuevo usuario de replicación. Inicie sesión en el servidor MySQL como usuario root:

mysql -uroot -p

Desde el indicador de MySQL, ejecute las siguientes consultas SQL que crearán la replica usuario y otorgue el REPLICATION SLAVE privilegio para el usuario:

CREATE USER 'replica'@'192.168.121.14' IDENTIFIED BY 'strong_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14';
Asegúrese de cambiar la IP con su dirección IP esclava. Puede nombrar al usuario como desee.

Mientras aún está dentro del indicador de MySQL, ejecute el siguiente comando que imprimirá el nombre del archivo binario y la posición.

SHOW MASTER STATUS\G
*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 1427
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

Tome nota del nombre del archivo, ‘mysql-bin.000001’ y Posición '1427' . Necesitará estos valores al configurar el servidor esclavo. Estos valores probablemente serán diferentes en su servidor.

Configure el Servidor Esclavo #

Al igual que para el servidor maestro anterior, haremos los siguientes cambios en el servidor esclavo:

  • Configure el servidor MySQL para escuchar en la IP privada
  • Establecer una ID de servidor única
  • Habilitar el registro binario

Abra el archivo de configuración de MySQL y edite las siguientes líneas:

sudo nano /etc/my.cnf
esclavo:/etc/my.cnf
bind-address           = 192.168.121.14
server-id              = 2
log_bin                = mysql-bin

Reinicie el servicio MySQL:

sudo systemctl restart mysqld

El siguiente paso es configurar los parámetros que utilizará el servidor esclavo para conectarse al servidor maestro. Inicie sesión en el shell de MySQL:

mysql -uroot -p

Primero, detenga los subprocesos esclavos:

STOP SLAVE;

Ejecute la siguiente consulta que configurará el esclavo para replicar el maestro:

CHANGE MASTER TOMASTER_HOST='192.168.121.59',MASTER_USER='replica',MASTER_PASSWORD='strong_password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1427;

Asegúrese de estar utilizando la dirección IP, el nombre de usuario y la contraseña correctos. El nombre y la posición del archivo de registro deben ser los mismos que los valores que obtuvo del servidor maestro.

Una vez hecho esto, inicie los subprocesos esclavos.

START SLAVE;

Probar la configuración #

En este punto, debería tener una configuración de replicación Maestro/Esclavo en funcionamiento.

Para verificar que todo funciona como se esperaba, crearemos una nueva base de datos en el servidor maestro:

mysql -uroot -p
CREATE DATABASE replicatest;

Inicie sesión en el shell esclavo de MySQL:

mysql -uroot -p

Ejecute el siguiente comando para listar todas las bases de datos:

SHOW DATABASES;

Notará que la base de datos que creó en el servidor maestro se replica en el esclavo:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| replicatest        |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

Cent OS
  1. Cómo instalar MySQL en CentOS 7

  2. ¿Cómo configurar MySQL Master-Slave usando nodos CentOS 7?

  3. Cómo configurar OpenSSH en CentOS 7

  4. Cómo configurar la replicación de MySQL en CentOS

  5. Cómo instalar MySQL 5.6 en CentOS 6.x

Cómo configurar la replicación de MariaDB en CentOS Linux

Cómo configurar OpenNMS en CentOS 7

Cómo configurar la replicación de MySQL en RHEL/Centos

Cómo configurar la replicación de transmisión de PostgreSQL 12 en CentOS 8

Cómo configurar la replicación maestro-esclavo de MariaDB en CentOS 7

¿Cómo configurar la replicación maestro-esclavo de MySQL en RHEL 7?