Backups MySQL con mysqldump sin contraseña

Los CMS basados en PHP (WordPress, Drupal, Joomla, Magento, Prestashop) ofrecen la opción de realizar copias de seguridad de la base de datos por medio de varios mecanismos, por ejemplo, plugins de backup. En el caso de WordPress, estas copias de seguridad suelen grabarse en la carpeta wp-content.

El post de hoy explica cómo hacer copias de seguridad sin ningún plugin CMS, sino a mano, por así decir, con un shell script. Esta explicación supone que tienes acceso SSH root a la máquina donde se aloja tu CMS.

Backup

Backup de la base de datos

La utilidad mysqldump de MySQL permite hacer copias de seguridad de bases de datos. Es sencillo volcar bases de datos en la línea de comandos con esta herramienta, típicamente se hace así:

Sin embargo el comando anterior pide la contraseña de root:

Lo que imposibilita que podamos automatizar el backup.

Pero no te preocupes, vamos a hacer un pequeño trick. Vamos a crear un shell script automático que además hará el backup en la carpeta que tú prefieras.

Vamos a organizarnos un poco

Ok, antes de explicarte cómo hacer el backup con mysqldump sin contraseña primero voy a mostrarte un ejemplo de estructura de directorios necesaria para llevar a cabo esta tarea.

Esto es solo un ejemplo, una idea. /root/admins es para almacenar los shell scripts de administración de tus proyectos web, y /root/backups es donde guardas las copias de seguridad de tus proyectos.

Archivo .my.cnf con las credenciales de acceso

Una vez definida la estructura de directorios sobre la que va a correr nuestro shell script bbdd.sh, vamos a crear el archivo /root/.my.cnf.

Aquí ponemos las credenciales del usuario que hace la copia de seguridad de la base de datos. Finalmente asignamos permisos 700 a .my.cnf.

Shell script que hace el mysqldump sin password

Con lo anterior ya podemos crear el script /root/admins/miproyecto.com/backups/bbdd.sh.

Haciendo el backup automático sin contraseña

Para ejecutar el script:

Esto creará en /root/backups/miproyecto.com/bbdd un archivo con un nombre parecido a 08-29-2014-1409306693.tgz, con ese formato.

Por un lado, programamos nuestro script de modo que el nombre del archivo backup contenga la fecha cuando se hizo el bakcup, pero también incluimos un timestamp para evitar que se produzcan colisiones en los nombres, por si necesitas hacer varios backups el mismo día.

En esta entrada hemos explicado cómo hacer el backup a mano, pero también puedes utilizar la utilidad cron para automatizar la ejecución del script.

0 comentarios

¿Me dejas un comentario? ¡Gracias!

Deja un comentario

Los campos obligatorios están marcados con *