Guía Completa para Configurar un Servidor MySQL Maestro-Esclavo en Debian 12

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Configurar un sistema de replicación maestro-esclavo en MySQL 8 en Debian 12 es un proceso útil para asegurar la redundancia y distribución de datos. Este tipo de configuración replica datos de un servidor maestro a uno o más servidores esclavos. Aquí tienes una guía completa sobre cómo llevar a cabo este proceso.

Requisitos previos

  1. Dos servidores Debian 12: uno será el maestro y el otro el esclavo.
  2. MySQL 8 instalado en ambos servidores.
  3. Usuario con privilegios de root en ambos servidores.
  4. Redes y Firewalls configurados para permitir el tráfico entre los dos servidores en el puerto MySQL (por defecto, 3306).

Paso 1: Instalar MySQL 8 en ambos servidores

Si MySQL 8 no está instalado, sigue estos pasos para instalarlo en ambos servidores:

sudo apt update
sudo apt install mysql-server

Después de la instalación, verifica la versión para confirmar:

mysql --version

Paso 2: Configurar el servidor maestro

  1. Editar la configuración de MySQL en el servidor maestro:

    Abre el archivo de configuración de MySQL:

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

    Agrega o modifica los siguientes parámetros bajo la sección [mysqld]:

    server-id = 1 # Identificador único del servidor maestro
    log_bin = /var/log/mysql/mysql-bin.log # Habilita el log binario para la replicación

    Guarda y cierra el archivo.
  2. Reiniciar MySQL para aplicar los cambios:

    sudo systemctl restart mysql
  3. Crear un usuario de replicación:

    En el servidor maestro, abre el cliente de MySQL:

    sudo mysql -u root -p

    Ejecuta el siguiente comando para crear un usuario de replicación y concederle permisos:

    CREATE USER 'replicator'@'%' IDENTIFIED BY 'password_replicacion';
    GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
    FLUSH PRIVILEGES;
  4. Bloquear las tablas para obtener una instantánea de la base de datos:

    FLUSH TABLES WITH READ LOCK;
  5. Obtener el estado de replicación del maestro:

    Ejecuta el siguiente comando para obtener la información necesaria para configurar el servidor esclavo (toma nota de File y Position):

    SHOW MASTER STATUS;

    Mantén esta sesión abierta para que el bloqueo de tablas siga activo hasta completar la copia de seguridad.
  6. Hacer una copia de seguridad de la base de datos:

    En otra terminal, exporta las bases de datos que deseas replicar:

    mysqldump -u root -p --all-databases --master-data > /home/usuario/backup_maestro.sql
  7. Desbloquear las tablas en la primera sesión de MySQL:

    UNLOCK TABLES;

Paso 3: Configurar el servidor esclavo

  1. Transferir el archivo de copia de seguridad desde el servidor maestro al servidor esclavo:

    scp usuario@maestro:/home/usuario/backup_maestro.sql /home/usuario/
  2. Restaurar la copia de seguridad en el servidor esclavo:

    mysql -u root -p < /home/usuario/backup_maestro.sql
  3. Editar la configuración de MySQL en el servidor esclavo:

    Abre el archivo de configuración de MySQL en el esclavo:

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

    Modifica o agrega los siguientes parámetros:

    server-id = 2 # Identificador único del servidor esclavo
    relay_log = /var/log/mysql/mysql-relay-bin.log # Habilita el log de relé para la replicación

    Guarda y cierra el archivo.
  4. Reiniciar MySQL en el servidor esclavo:

    sudo systemctl restart mysql
  5. Configurar la conexión de replicación en el esclavo:

    En el servidor esclavo, abre el cliente de MySQL:

    sudo mysql -u root -p

    Ejecuta el siguiente comando, reemplazando los valores con los detalles obtenidos del servidor maestro:

    CHANGE MASTER TO
    MASTER_HOST='IP_DEL_MAESTRO', MASTER_USER='replicator', MASTER_PASSWORD='password_replicacion', MASTER_LOG_FILE='nombre_del_log_binario', # Obtenido de SHOW MASTER STATUS en el maestro MASTER_LOG_POS=posición; # Obtenido de SHOW MASTER STATUS en el maestro
  6. Iniciar la replicación en el servidor esclavo:

    START SLAVE;
  7. Verificar el estado de la replicación:
    Ejecuta el siguiente comando para verificar que la replicación esté funcionando correctamente:

    SHOW SLAVE STATUS\G

    Asegúrate de que los valores Slave_IO_State y Slave_SQL_Running estén en Yes. Esto indica que el esclavo está conectado y replicando correctamente.

Paso 4: Probar la replicación

  1. En el servidor maestro, crea una base de datos o tabla de prueba:

    CREATE DATABASE prueba_replicacion;
  2. En el servidor esclavo, verifica que la nueva base de datos o tabla esté replicada automáticamente.

    SHOW DATABASES;

    La base de datos prueba_replicacion debería aparecer.

Paso 5: Configuraciones adicionales y optimización (Opcional)

  • Monitoreo: Implementa monitoreo para recibir alertas en caso de fallos de replicación.
  • Automatización: Usa herramientas de administración de MySQL, como MySQL Workbench o phpMyAdmin, para gestionar la replicación.
  • Seguridad: Configura un firewall para restringir el acceso al puerto 3306 desde servidores no autorizados.

Con estos pasos, habrás configurado exitosamente un sistema de replicación maestro-esclavo en MySQL 8 en Debian 12.