Las copias de seguridad son imprescindibles en cualquier entorno, cuanto más si hablamos de Bases de Datos.
Las bases de datos son casi organismos vivos donde a diario se realizan cambios y registros nuevos siendo imprescindible mantener un buen sistema de Backups, es aquí donde con mysql entra mysqldump.
Mysqldump permite desde Terminal y con una simple instrucción realizar un backup o restaurar una base de datos.
Pongamos un ejemplo, para hacer un backup de la base de datos botbn ejecuto:
mysqldump -u botbn -h localhost 'botbn' > botbn-bck.sql -p
Si posteriormente necesito restaurar desde archivo:
mysqldump -u botbn -h localhost 'botbn' < botbn-bck.sql -p
Los parámetros son intuitivos:
Para el backup:
- -u <nombre de usuario>
- -h <nombre de host o IP>
- entre comillas indicamos el nombre de la BD, en el ejemplo ‘botbn‘
- > dirige la salida al archivo destino, por ejemplo «> botbn-bck.sql«
- -p para introducir contraseña de usuario mysql
- aquí tenemos dos opciones, dejar únicamente -p, en cuyo caso el sistema pedirá que introduzcamos la contraseña manualmente.
- O escribir la contraseña directamente tras -p sin espacios. Esta opción es menos segura al dejar la password visible en el histórico de instrucciones. *
Aviso de mysqldump por uso de contraseña en linea de comandos: «mysqldump: [Warning] Using a password on the command line interface can be insecure.«
En el caso del restore los mismos parámetros, cambiando el sentido, dirigiendo los datos del archivo a la bd:
- < dirige/restaura los datos de archivo a la bd, ejemplo «< botbn-bck.sql«
Para automatizarlo una opción muy cómoda es crear un script python o un cron y que el sistema se encargue de lanzarlo cada cierto tiempo.
Estos archivos al final son texto plano y siempre es buena idea comprimirlos, llegando a ratios de un 70% de compresión. Puedes comprimir con zip:
- zip <archivo.zip> <archivo.sql>
- zip botbn-bck.sql.zip botbn-bck.sql
Tienes más info de instalación y uso de zip aquí.
Ejemplo de script que exporta y comprime:
#!/bin/bash
mysqldump -u botbn -pmysqlpwdbotbn -h localhost 'botbn' > botbn-bck.sql
zip botbn-bck.sql.zip botbn-bck.sql
rm botbn-bck.sql
Guarda el script con el nombre que quieras .sh y da permisos de ejecución con chmod a+x archivo.sh
Cualquier duda en comentarios 😉 Saludos!