Cómo automatizar los Backup de MySQL con un script y Crontab
Hacer backup de las bases de datos es primordial en estos días donde hay tantas cosas dando vuelta y que afectan a nuestras bases. Me refiero a plugins, querys y demás yerbas que se programan para los diferentes sistemas tales como WordPress, Magento, Drupal, etc.
Particularmente me gusta automatizar este tipo de tareas con Crontab pero me faltaba el script para poder hacerlo bien completo. Navegando, encontré este post de Simon Davies donde escribió un script bastante completo para poder hacer los backups.
El script completo es el siguiente:
#!/bin/bash
# Database credentials
user=""
password=""
host=""
db_name=""
# Other options
backup_path="/path/to/your/home/_backup/mysql"
date=$(date +"%d-%b-%Y")
# Set default file permissions
umask 177
# Dump database into SQL file
mysqldump --user=$user --password=$password --host=$host $db_name > $backup_path/$db_name-$date.sql
# Delete files older than 30 days
find $backup_path/* -mtime +30 -exec rm {} \;
básicamente, lo que hacemos acá es, primero especificar algunas variables como el usuario, la contraseña, el host y cuál es la DB que queremos respaldar. También encontraremos, en donde dice Other Options, información sobre la ruta donde el backup se alojará + la opción de que le agregue la fecha en la que se hizo.
Le seteamos permisos y hacemos el dump de la base de datos, recorda cambiar los datos por los tuyos.
Por último, agrego un dato más que es que borre los archivos que tienen más de 30 días, de esa manera nos aseguramos de no acumular tantos respaldos.
Por último, lo que debemos hacer es guardar este script con el formato .sh y hacer el archivo ejecutable. Eso lo podemos hacer con el siguiente comando:
chmod +x mysqldump.sh
Por último, configuramos el cron para que corra todos los días a las 4.30 AM.
sudo crontab -e
y especificamos lo siguiente:
MAILTO=ignaciovd@xxx.com<br></br>
30 4 * * * sh /backups/mysqldump.sh
Como pueden apreciar, no es complicado y espero que te sirva para respaldar tus bases de datos MySQL.
Edit: 29/08/2019 - Este artículo fue actualizado el día indicado.