Script para backup sencillo de motor de base de datos MySQL.
Utilizalo bajo tu propio riesgo.
#!/bin/bash
# Ruta en la que se guarda el log de la operacion de backup.
logfile="/var/log/mysql.log"
# Ruta en la que guardar los backups
backup_dir="/root/backup/mysql"
# Usuario
username=""
password=""
# Creamos un nuevo log del proceso de backup
rm -rf $logfile
touch $logfile
# Mediante esta instruccion, generamos un nombre de fichero con el dia y la hor
timeslot=`date +%Y%m%d_%H%M`
timeslot2=`date +%d-%m-%y`
cd $backup_dir
mkdir $backup_dir/$timeslot2
cd $timeslot2
# Iteramos a traves de la lista de bases de datos a la que el usuario tiene acceso.
for BBDD in $( mysql -u $username --password=$password -h
localhost -Bse 'show databases' ); do
echo "Creando copia de seguridad de $BBDD"
# Volcamos la base de datos en un fichero temporal
mysqldump --user=$username --password=$password $BBDD > datos.sql
# Y lo comprimimos en un tar.bz2 para ocupar lo mmnimo.
#Util en bases de datos grandes.
tar cvjf mysql-$BBDD-$timeslot.tar.bz2 *.sql
# El nombre del fichero resultante contiene el nombre de
la base de datos y la fecha de la copia.
# De esta manera, cuando sea necesaria su restauracion
sera mas sencillo de localizar.
echo "Backup completo en la base de datos: $BBDD (mysql-$BBDD-$timeslot.tar.bz2)"
>> $logfile
# Borramos el fichero temporal
rm datos.sql
done
Buenas!
Un parell d’apunts:
1) Dump i compresió en 1 pas (perquè el tar està de més si nomès tenim 1 arxiu):
mysqldump -u usuari -ppassword nom_de_bd | bzip2 > arxiu.sql.bz2
2) Si volguèssis fer log a syslog, tens la comanda logger, que és més pro xD
Grade A stuff. I’m uquensitonably in your debt.