Cómo programar backups diarias de MySQL o MariaDb via cron

mariadb-logo

¿Cómo programar copias de seguridad diarias de MySQL? ¿y backups quincenales de MariaDb? ¿y a través del cron? Tanto si usas MySQL como MariaDb, lo que sigue te servirá para programar backups.

También puedes ejecutar los comandos en consola para realizarlas en caliente, pero ten cuidado que el volumen de la base de datos** puede bloquear el resto de transacciones**, por ejemplo tu aplicación web.

Edita el fichero /etc/crontab y añade una línea del estilo:

Backups diarias a las 3:29 am

29 3 * * * root mysqldump -u USUARIO -pCLAVE --all-databases | gzip > /backups/$(date +%Y/%m/%d).sql.gz

Backups quincelanes

Por ejemplo, el dia 15 de cada mes a la misma hora:

29 3 15 * * root mysqldump -u USUARIO -pCLAVE --all-databases | gzip > /backups/$(date +%Y/%m/%d).sql.gz

NOTA: La contraseña va sin espacios con el parámetro** -p**. No es un error tipográfico.

Para ambos comandos, se vuelcan todas las bases de datos con el usuario y contraseña establecidos en formato GZIP en la carpeta backups/año/mes y el nombre del fichero dia.sql.gz. Personaliza tu comando en función de tus necesidades y después reinicia el cron.

Reiniciar el cron

Cualquier comando de los 3 siguientes:

/etc/init.d/cron restart 
service cron restart 
service crontab restart

Posibles errores

  • Error de sintaxis. Pueden ser variados, recuerda que algunos carácteres como los comodines % que deben ir escapados con barra invertida (ver script para formato de fecha)
  • Error de escritura. Si la carpeta donde pretendes volcar los backups no permite escribir, ejecuta: chmod 777 /backups

(o la carpeta que hayas designado) y listo. También puedes crearte las carpetas de los meses.

David Burgos

Read more posts by this author.