Respaldar bases de datos MySQL automaticamente con Cron

Respaldar bases de datos MySQL automaticamente con Cron

Muchas veces es necesario generar respaldos de bases de datos MySQL sobre todo para evitar posibles contigencias. Ya mostramos anteriormente como se puede hacer esto por consola con MySQLDump y ahora mostraremos como automatizar esta tarea en un servidor mediante cron.

Para esto en el blog de UnadeCodigo nos presentan un script bash que realiza la tarea de respaldar todas las bases de datos que existen en el servidor.

El código es el siguiente:

#!/bin/bash

# Ruta en la que se guarda el log de la operacion de backup.
logfile=”/path/to/mysql.log”

# Ruta en la que guardar los backups
backup_dir=”/path/to/saved/mysql”

# Usuario
username=”<nombre_usuario>”
password=”<password_de_acceso>”

# Creamos un nuevo log del proceso de backup
rm -rf $logfile
touch $logfile

# Mediante esta instruccion, generamos un nombre de fichero con el dia y la hora del proceso de backup.
timeslot=’date +%Y%m%d_%H%M’

cd $backup_dir

# Iteramos a traves de la lista de bases de datos a la que el usuario tiene acceso.
for BBDD in $( mysql -u $username –password=$password -h localhost -Bse ‘show databases’ ); do
echo “Creando copia de seguridad de $BBDD”

# Volcamos la base de datos en un fichero temporal
mysqldump –user=$username –password=$password $BBDD > datos.sql

# Y lo comprimimos en un tar.bz2 para ocupar lo mínimo. Util en bases de datos grandes.
tar cvjf mysql-$BBDD-$timeslot.tar.bz2 *.sql

# El nombre del fichero resultante contiene el nombre de la base de datos y la fecha de la copia.
# De esta manera, cuando sea necesaria su restauracion sera mas sencillo de localizar.

echo “Backup completo en la base de datos: $BBDD (mysql-$BBDD-$timeslot.tar.bz2)” >> $logfile

# Borramos el fichero temporal
rm datos.sql
done

#————————————————-
# Finalmente podemos enviar un email con el log de acciones para tener controlado el proceso de copia
#
cat $logfile|mail -s “Proceso Backup $HOSTNAME = MySQL” <direccion_email_de_control>

Configurando el script anterior y adaptandolo a nuestras necesidades ahora solo quedaria crear la tarea en el cron por ejemplo si desean hacer el respaldo diariamente a las 12 de la noche quedaría de la siguiente forma:

presionamos crontab -e y agregamos la siguiente linea

0 0 * * * /home/path/backups/backupalldatabases.sh

No se olviden que el script tiene que tener permisos de ejecución para esto escriban lo siguiente:

chmod +x backupalldatabases.sh

Pueden ver mas información y descargar el script siguiendo el siguiente enlace:
Automatización de copias de seguridad de bases de datos MySQL con mysqldump