Cómo crear copias de seguridad para bases de datos MySQL en Linux
Es muy útil tener copias de seguridad automatizadas para nuestras bases de datos MySQL, así evitaremos perder cualquier tipo de dato de nuestros proyectos. Con un simple comando en nuestro crontab, podremos hacerlo de una forma realmente sencilla.
Primero, nos conectamos a nuestro servidor
ssh root@server_ip_or_hostname
Vamos a usar el comando ‘myslqdump‘, que se utiliza para realizar copias de seguridad de bases de datos MySQL.
mysqldump -u database_username -pdatabase_password database_name | gzip > /var/www/db_backups/mysite.com/$(date +%d-%m-%Y).gz
Debemos sustituir las siguientes variables:
– database_username: username to login to database
– database_password: password to login to database
– database_name: name of the database to connect
Cuando introduces tu contraseña, el caracter ‘p’ debe ir junto con la cadena de texto de la contraseña.
Por ejemplo, estas son mis credenciales:
– Usuario bbdd: root
– Contraseña bbdd: 1234
– Nombre de la base de datos: my_project_db
Nuestro comando quedará así:
mysqldump -u root -p1234 my_project_db | gzip > /var/www/db_backups/mysite.com/$(date +%d-%m-%Y).gz
El parámetro gzip indica que nuestro archivo será comprimido en formato gzip. La última parte del comando, indica el directorio donde se creará nuestra copia de seguridad, con el siguiente formato como nombre del archivo: DIA-MES-AÑO.gz
Con el comando que has generado con tus credenciales de conexión, vamos a crear un cron job en el crontab de Linux para que cree una copia de seguridad de nuestro proyecto una vez al día.
Primero, abrimos el crontab:
crontab -e
Nota: A la hora de introducir el comando en el crontab, debemos escapar los carácteres ‘%’ con ‘/’. De la siguiente forma:
$(date +\%d-\%m-\%Y).gz
Ejemplo con el comando entero escapado:
mysqldump -u database_username -pdatabase_password database_name | gzip > /var/www/db_backups/mysite.com/$(date +\%d-\%m-\%Y).gz
Creamos el cron tab:
30 4 * * * HERE_YOUR_MYSQLDUMP_COMMAND
Por ejemplo:
30 4 * * * mysqldump -u database_username -pdatabase_password database_name | gzip > /var/www/db_backups/mysite.com/$(date +\%d-\%m-\%Y).gz
Este cron job se ejecutará todos los días a las 4:30 de la mañana.
Guarda tu crontab y disfruta de tus copias de seguridad de MySQL diarias.
Fuente: http://blog.albertolabs.com/2015/11/24/how-to-auto-backups-mysql-databases-with-linux-crontab/