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
- Dos servidores Debian 12: uno será el maestro y el otro el esclavo.
- MySQL 8 instalado en ambos servidores.
- Usuario con privilegios de root en ambos servidores.
- 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
- 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. - Reiniciar MySQL para aplicar los cambios:
sudo systemctl restart mysql
- 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;
- Bloquear las tablas para obtener una instantánea de la base de datos:
FLUSH TABLES WITH READ LOCK;
- 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 deFile
yPosition
):SHOW MASTER STATUS;
Mantén esta sesión abierta para que el bloqueo de tablas siga activo hasta completar la copia de seguridad. - 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
- Desbloquear las tablas en la primera sesión de MySQL:
UNLOCK TABLES;
Paso 3: Configurar el servidor esclavo
- Transferir el archivo de copia de seguridad desde el servidor maestro al servidor esclavo:
scp usuario@maestro:/home/usuario/backup_maestro.sql /home/usuario/
- Restaurar la copia de seguridad en el servidor esclavo:
mysql -u root -p < /home/usuario/backup_maestro.sql
- 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. - Reiniciar MySQL en el servidor esclavo:
sudo systemctl restart mysql
- 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
- Iniciar la replicación en el servidor esclavo:
START SLAVE;
- 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 valoresSlave_IO_State
ySlave_SQL_Running
estén enYes
. Esto indica que el esclavo está conectado y replicando correctamente.
Paso 4: Probar la replicación
- En el servidor maestro, crea una base de datos o tabla de prueba:
CREATE DATABASE prueba_replicacion;
- En el servidor esclavo, verifica que la nueva base de datos o tabla esté replicada automáticamente.
SHOW DATABASES;
La base de datosprueba_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
ophpMyAdmin
, 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.