lunes, 9 de julio de 2012

Copias de seguridad MySQL automáticas con BASH y CRON


Hoy vamos a ver cómo programar la automatización de la copia de seguridad de una base de datos MySQL usando bash y cron.
Empezamos por crear un sencillo script que guarda la copia de seguridad de la base de datos comprimida en formato bz2:
#!/bin/bash
fecha=$(date +%Y%m%d)
mysqldump -uusuario -pclave base_datos > fichero_destino_$fecha.sql
bzip2 fichero_detino_$fecha.sql
Guardamos el scrip en un fichero llamado, por ejemplo ‘backup’ en la carpeta (por poner un ejemplo): /home/users/usuario/mysql_backups/. Debemos darle permisos de ejecución haciendo:
chmod +x backup
(o los permisos que creamos más convenientes en cada caso).
El fichero de destino tendrá un nombre con el siguiente formato:
fichero_detino_20070430.bz2
(Año/mes/día).
El siguiente paso es automatizar la tarea modificando el crontab. Para modificar el crontab basta con hacer:
crontab -e
0 0 * * 7 /home/users/usuario/mysql_backups/backup
Esto hace que todos los domingos a las 00:00 (hora del servidor) se haga automáticamente una copia de la base de datos. Recordemos que el formato del crontab es:
[minutos] [hora] [día] [mes] [dia_de_semana] [comando]
Notas:
  • El servidor debe tener instalado y funcionando el cron.
  • Ejecuta el script ‘backup’ a mano una vez para comprobar que genera bien la copia de seguridad.
  • Conviene comprobar, al menos una vez, que el script hace realmente las copias de seguridad con el crontab.



    Fuente:
  • http://nideaderedes.urlansoft.com/2007/04/25/copias-de-seguridad-mysql-automaticas-con-bash-y-cron/




  • He añadido una línea para la limpieza de la carpeta de backups, elimina los archivos con mas de 30 días.:
    #!/bin/bash
    fecha=$(date +%Y%m%d)
    mysqldump -u root -pMYSQLPASS --all-databases > /home/backups/mySqlBackup_$fecha.sql
    bzip2 /home/backups/mySqlBackup_$fecha.sql
    /usr/bin/find /home/backups/*.bz2 -maxdepth 2 -mtime +30 -delete

    Y hago mis copias de seguridad todos los días a las 6 de la mañana.:
    0 6 * * * /home/backups/autoBackup

No hay comentarios:

Publicar un comentario