Cómo automatizar backups MySQL con un cron

GuíasBases de datosBash scriptingLinuxMySQLProgramacionSistemas

Vamos a ver cómo puedes crear copias de seguridad o backups automáticamente con cron jobs, que te permitirá configurarlas según los intervalos que indiques.

Cómo crear un cron

Para crear un cron job, tenemos que acceder al crontab con el siguiente comando:

crontab -e

Se abrirá el crontab de tu usuario. Un cron job constan de una serie de números iniciales que indican: minuto, hora, día, mes y día de la semana. Seguidamente va el comando que se ejecutará en el intervalo indicado en dichos números. Por ejemplo, el siguiente cron ejecutará el script tarea todos los viernes a las 4:00

0 4 * * 5 sh /home/usuario/semanal/tarea.sh

Para agregar una nueva tarea, basta con editar este archivo, agregar un nueva línea con dicho formato y guardar el archivo.

Cómo automatizar backups MySQL

Existe dos métodos que nos permitirán ejecutar cron jobs que hagan copias de seguridad de la base de datos. Puedes incluir la información de autenticación de MySQL en el mismo comando del cron o puedes incluir estos datos en un archivos.

Método 1: Datos de acceso de MySQL en el comando del cron

Si incluimos los datos de acceso en el comando, éste será el siguiente:

/usr/bin/mysqldump -u usuario -p 'contraseña' base_de_datos > /home/backup.sql

El comando guardará la copia de seguridad en el archivo /home/backup.sql. Obviamente debes reemplazar por un nombre de usuario con los permisos de acceso adecuados a la base de datos, contraseña por su password y base_de_datos por el nombre de la base de datos.

Ejecuta crontab -e para agregar el cron job. Si queremos que el comando se ejecute todos los lunes a las 2, la línea del crontab será la siguiente:

0 2 * * 1 /usr/bin/mysqldump -u usuario -p 'contraseña' base_de_datos > /home/backup.sql

Método 2: Datos de acceso de MySQL en un archivo externo

Si no quieres incluir la información de acceso  MySQL en el comando del cron, puedes crear un archivo llamado .my.cnf en el directorio /home/usuario, reemplazando usuario por tu nombre de usuario en el sistema. No te olvides del punto (.) inicial. Con el editor nano puedes hacerlo del siguiente modo:

nano .my.cnf

En el archivo debes incluir las siguientes instrucciones:

[client]
user = usuario
password = "contraseña"
host = localhost

Al igual que antes, reemplaza usuario por el nombre de un usuario conacceso a la based de datos de la que quieras hacer una copia de seguridad y pass por su contraseña. Guarda el archivo pulsando CTRL + X y seleccionando Y para confirmar el guardado.

Ahora, ejecuta crontab -e para agregar el cron job, reemplazando base_de_datos por el nombre de la base de datos de la que quieres crear un backup.

0 2 * * 1 /usr/bin/mysqldump base_de_datos > /home/backup.sql

Y esto esto ha sido todo.