Respaldo remoto de bases de datos MySQL mediante mysqldump y cron

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.

Etiquetas: mysqldump crontab MySQL respaldo remoto backup

Publicado el 8-18 08:56