MySQL – copia de seguridad

Vamos a ver como hacer un sencillo script para hacer copia de seguridad de nuestras bases de datos de MySQL. Este script primero nos hará una exportación de la base de datos al directorio que hemos marcado, y luego nos lo comprimirá.

# vim nombrebbdd.sh

#!/bin/bash
fecha=$(date +%Y%m%d)
mysqldump -u usuario_bbdd -ppass_bbdd nombrebbdd > /directorio_copia/nombrebbdd_$fecha.sql
bzip2 /directorio_copia/nombrebbdd_$fecha.sql

Damos permisos de ejecución sobre el fichero.

# chmod +x nombrebbdd.sh

Ahora lo probamos.

# ./nombrebbdd.sh
# ls
nombrebbdd_20121127.sql.bz

Ya solo nos queda añadirlo al /etc/crontab para que lo ejecute cuando queramos.

# vim /etc/crontab

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don’t have to run the `crontab’
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts –report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.monthly )
#
00 22   * * 1-7         root    /ubicacion_del_archivo/nombrebbdd.sh

Ya tenemos una copia de seguridad de nuestra base de datos, todos los días de la semana a las 22:00.