Hace tiempo quería publicar esto, pero por falta de tiempo no había podido. Bueno espero que les sirva cuando lo necesiten.
#!/bin/sh
# Ruta para el log de backup.
logfile="/root/scripts/logs/backup_db.log"
# Ruta para el log de backup.
logfile="/root/scripts/logs/backup_db.log"
# Ruta donde se guarda el backup
backup_dir="/opt/BACKUP_DB/"
# Datos de autenticacion en la bd
username="usuario"
password="contraseña"
bd="nombre_DB"
host="nombre_host_o_IP"
# Variable para el nombre del archivo de backup
timeslot=`date +%Y_%m_%d-%H%M`
# Nombre backup
backup_name="$backup-db-$timeslot.sql"
backup_dir="/opt/BACKUP_DB/"
# Datos de autenticacion en la bd
username="usuario"
password="contraseña"
bd="nombre_DB"
host="nombre_host_o_IP"
# Variable para el nombre del archivo de backup
timeslot=`date +%Y_%m_%d-%H%M`
# Nombre backup
backup_name="$backup-db-$timeslot.sql"
echo "######################################################" >> $logfile
date >> $logfile
echo "Iniciando el backup..." >> $logfile
# Se ingresa en el directorio donde se hara el backup
cd $backup_dir
if [ $? -eq 0 ]; then
echo "Se ha ingresado al directorio de backup." >> $logfile
else
echo "No se ha podido ingresar al directorio de backup, validar el volumen." >> $logfile
exit
fi
echo "Creando el mysqldump con nombre $backup_name..." >> $logfile
# Se corre mysqldump para sacar el backup en caliente y se comprime en la misma sentencia
mysqldump --user=$username --host=$host $bd --password=$password | gzip > $backup_dir$backup_name.gz
echo "Backup finalizado." >> $logfile
date >> $logfile
date >> $logfile
echo "Iniciando el backup..." >> $logfile
# Se ingresa en el directorio donde se hara el backup
cd $backup_dir
if [ $? -eq 0 ]; then
echo "Se ha ingresado al directorio de backup." >> $logfile
else
echo "No se ha podido ingresar al directorio de backup, validar el volumen." >> $logfile
exit
fi
echo "Creando el mysqldump con nombre $backup_name..." >> $logfile
# Se corre mysqldump para sacar el backup en caliente y se comprime en la misma sentencia
mysqldump --user=$username --host=$host $bd --password=$password | gzip > $backup_dir$backup_name.gz
echo "Backup finalizado." >> $logfile
date >> $logfile
Bueno creo que está claro al leerlo pero voy a explicarlo de todas maneras:
1. Iniciamos creando un archivo de log para que nos diga si el backup fue hecho bien o no (variable logfile)
2. Definimos la variable backup_dir que es donde está el directorio que contiene el backup.
3. Como este script se va a correr automático cada X tiempo (en el Cron), debemos definir variables que contengan el nombre de usuario, password, nombre de la base de datos y el host donde alojamos dicha DB.
4. Definimos una variable llamada timeslot que tendrá la fecha en que se hizo el backup con el formato Año/Mes/Dia y la hora y minutos en que se hizo.
5. Definimos una variable llamada backup_name y le asignamos el valor que contienen las variables backup-db-inmlcf y timeslot y le ponemos la extensión .sql
6. Ingresamos al directorio del backup y verificamos si se ha ingresado bien o no.
7. Por último hacemos un mysqldump y lo comprimimos en la misma sentencia, escribimos en el log y damos por finalizado el backup.
Guardamos el archivo como .sh y lo adicionamos en el cron para que se ejecute automático los días que queramos.
Saludos!!
6. Ingresamos al directorio del backup y verificamos si se ha ingresado bien o no.
7. Por último hacemos un mysqldump y lo comprimimos en la misma sentencia, escribimos en el log y damos por finalizado el backup.
Guardamos el archivo como .sh y lo adicionamos en el cron para que se ejecute automático los días que queramos.
Saludos!!
0 Comments: