GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo configurar la replicación maestro-esclavo de MySQL (MariaDB) en Debian 10

La replicación de MySQL es un proceso de copia de datos de un servidor de base de datos (maestro) a uno o más servidores (esclavos).

MySQL admite varias 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 esta guía, le mostraremos cómo configurar la replicación maestro/esclavo de MariaDB con un servidor maestro y uno esclavo en Debian 10. MariaDB es la implementación predeterminada de MySQL en Debian. Se aplican los mismos pasos para Oracle MySQL.

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

Requisitos previos #

Suponemos que tiene dos servidores que ejecutan Debian 10 y se comunican entre sí a través de una red privada. Si su proveedor de alojamiento no admite 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 utilizados en este ejemplo tienen las siguientes direcciones IP:

Master IP: 10.10.8.12
Slave IP:  10.10.8.164

Instalando MariaDB #

Los repositorios predeterminados de Debian 10 incluyen MariaDB versión 10.3. Es mejor instalar la misma versión de MariaDB en ambos servidores para evitar posibles problemas.

Instale MariaDB tanto en el maestro como en el esclavo emitiendo los siguientes comandos:

sudo apt-get updatesudo apt-get install mariadb-server

Configurando el Servidor Maestro #

El primer paso es configurar el servidor maestro. Haremos los siguientes cambios:

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

Abra el archivo de configuración de MariaDB y descomente o configure las siguientes líneas:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
master:/etc/mysql/mariadb.conf.d/50-server.cnf
bind-address           = 10.10.8.12
server-id              = 1
log_bin                = /var/log/mysql/mysql-bin.log

Una vez hecho esto, guarde el archivo y reinicie el servicio MySQL para que los cambios surtan efecto:

sudo systemctl restart mariadb

El siguiente paso es crear un nuevo usuario de replicación. Inicie sesión en el servidor MariaDB como usuario raíz:

sudo mysql

Ejecute las siguientes consultas SQL para crear un usuario llamado replica y otorgar el REPLICATION SLAVE privilegio para el usuario:

CREATE USER 'replica'@'10.10.8.164' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'10.10.8.164';
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: 328
    Binlog_Do_DB: 
Binlog_Ignore_DB: 
1 row in set (0.001 sec)

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

Configurando el Servidor Esclavo #

Haremos los mismos cambios en el servidor esclavo que en el maestro:

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

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

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
esclavo:/etc/mysql/mariadb.conf.d/50-server.cnf
bind-address           = 10.10.8.164
server-id              = 2
log_bin                = /var/log/mysql/mysql-bin.log

Reinicie el servicio MariaDB:

sudo systemctl restart mariadb

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 MariaDB:

sudo mysql

Comience deteniendo los subprocesos esclavos:

STOP SLAVE;

Ejecute la siguiente consulta para configurar la replicación Maestro/Esclavo:

CHANGE MASTER TOMASTER_HOST='10.10.8.12',MASTER_USER='replica',MASTER_PASSWORD='replica_password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=328;

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 esté configurado correctamente, cree una nueva base de datos en el servidor maestro:

sudo mysql
CREATE DATABASE replicatest;

Inicie sesión en el shell esclavo de MySQL:

sudo mysql

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)

Debian
  1. Cómo instalar MySQL 8.0/5.7 en Debian 11/Debian 10

  2. Cómo instalar y configurar Mariadb 10 en Debian 11

  3. Cómo instalar el servidor MySQL en Debian 10 Buster

  4. Cómo instalar Zabbix en Debian 9

  5. Cómo configurar un cortafuegos con CSF en Debian 9

Cómo configurar el servidor y el cliente NTP en Debian 10

Cómo configurar LAMP con Debian 11

Cómo configurar el servidor Samba con Debian 11

Cómo instalar el servidor MySQL 8.0 en Debian 11 Bullseye

Cómo instalar MySQL/MariaDB en Debian 11

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