Se requiere replicar una base de datos desde un servidor origen a un servidor destino de forma periódica. Las condiciones iniciales son las siguientes:
- Srevidor A (origen): IP 192.168.5.193, base de datos
TestDB - Servidor B (destino): IP 192.168.5.194
La solución se basa en mysqldump para exportar los datos y cron para programar la tarea.
1. Conifgurar acceso remoto en el servidor origen
Editar el archivo de configuración de MySQL (por ejemplo /etc/mysql/my.cnf) y modificar la directiva bind-address. Para permitir conexiones desde cualquier host se puede comentar la línea o agregar la IP del servidor destino.
2. Crear usuario con privilegios para el servidor destino
En el servidor A ejecutar las siguientes sentencias SQL:
CREATE USER 'backup_user'@'192.168.5.194' IDENTIFIED BY 'clave_segura';
GRANT ALL PRIVILEGES ON *.* TO 'backup_user'@'192.168.5.194';
FLUSH PRIVILEGES;
Para verificar la creación del usuario se puede consultar la tabla mysql.user:
SELECT user, host FROM mysql.user;
3. Script de respaldo en el servidor destino
Crear un archivo, por ejemplo /home/user/backup_mysql.sh, con el siguiente contenido:
#!/bin/bash
# Credenciales del servidor remoto
REMOTE_USER="backup_user"
REMOTE_PASS="clave_segura"
REMOTE_HOST="192.168.5.193"
DATABASE="TestDB"
# Rutas de herramientas
MYSQLDUMP="/usr/bin/mysqldump"
MYSQL="/usr/bin/mysql"
# Destino local del archivo dump
DUMP_FILE="/home/user/respaldos/testdb_$(date +%Y%m%d_%H%M%S).sql"
# Credenciales locales (para importar)
LOCAL_USER="root"
LOCAL_PASS="clave_local"
# Exportar datos del servidor remoto
$MYSQLDUMP -h $REMOTE_HOST -u $REMOTE_USER -p$REMOTE_PASS $DATABASE > $DUMP_FILE
# Importar los datos en la base de datos local (debe existir la base TestDB)
$MYSQL -u $LOCAL_USER -p$LOCAL_PASS $DATABASE < $DUMP_FILE
# Opcional: eliminar el archivo dump si no se desea conservar
# rm -f $DUMP_FILE
Es importante que la base de datos TestDB exista previamente en el servidor destino. Dar permisos de ejecución al script:
chmod +x /home/user/backup_mysql.sh
Realizar una prueba manual ejecutando el script y verificando que los datos se copiaron correctamente.
4. Programar la tarea con cron
Editar la tabla de cron con crontab -e y agregar una línea. Por ejemplo, para ejecutar el script cada hora en el minuto 1:
1 * * * * /home/user/backup_mysql.sh
La sintaxis sigue el formato estándar: minuto, hora, día del mes, mes, día de la semana y comando.