1. ¡OFERTA! con cupón "DIRVPS": hosting por $0,01 y también VPS Linux y Windows por $0,01 el primer mes por Interserver ← publi
    Descartar aviso
Descartar aviso
Al usar este sitio web, aceptas que nosotros y nuestros socios podamos establecer cookies para fines tales como personalizar el contenido y la publicidad. Más información.

Problema con script para backup de bbdd

Tema en 'Programación y Diseño Web' iniciado por user99, 21 Mar 2013.

  1. user99

    user99 Usuario activo

    Hola a todos,

    He modificado un script para hacer un backup de la BBDD en lynux, sin éxito. El script original funcionaba en servidores que eran por defecto "localhost", pero al tener que dar nombre al servidor no funcionaba. Obviamente, las carpetas y archivos necesarios para su funcionamiento fueron creados.

    El script modificado es el siguiente:


    CODE, HTML o PHP Insertado:
    #!/bin/bash
    
    # Ruta y Archivo en la que se guarda el log de la operacion del backup.
    logfile="/html/daily_backup/logs/log.txt"
    
    # Ruta en la que guardar los backups
    backup_dir="/html/daily_backup/files"
    
    # Servidor de la Base de Datos de la que queremos guardar una copia diaria
    host="miServidor"
    
    # Usuario y Password de la Base de Datos de la que queremos guardar una copia diaria
    username="miUsuario"
    password="miPassword"
    
    # Nombre completo de la Base de Datos de la que queremos guardar una copia diaria
    bd="miBaseDeDatos"
    
    # Se montan los parámetros de conexión
    BBDD=”-h $host -u $usuario -p $password -D $bd -s -e”
    
    # NO ES NECESARIO MODIFICAR NADA A PARTIR DE AQUI
    
    # Mediante esta instruccion, generamos un nombre de fichero con el dia mes y ano del proceso de backup.
    timeslot=`date +%d%m%y`
    
    # Mediante esta instruccion, generamos una variable con la fecha y hora actual.
    thisday=`date +%d-%m-%Y--%H:%M`
    
    # Mediante esta variable definimos LA COPIA que fue creada 5 dias atras y que sera BORRADA.
    timeslotbefore=`date --date='5 days ago' +%d%m%y`
    
    # Creamos un nuevo log del proceso de backup
    # (Descomentar la siguiente linea si queremos que se borre el archivo de log en cada backup).
    # rm -f $logfile
    touch $logfile
    
    cd $backup_dir
    
    echo "--------------------------------------------------------------------------------------" >> $logfile
    echo "--------------------------------------------------------------------------------------" >> $logfile
    echo "$thisday : Comienza el proceso de copia de seguridad de la base de datos: $BBDD en el archivo: mysql-$BBDD-$timeslot.sql.gz" >> $logfile
    
    # Volcamos la base de datos en un fichero comprimido en formato sql.gz para ocupar lo minimo.
    # Se evita el problema con los caracteres raros tales como vocales acentuadas, letra egne, etc...
    # 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.
    mysqldump --user=$username --password=$password $BBDD --add-drop-table -Q | gzip > mysql-$BBDD-$timeslot.sql.gz
    
    echo "$thisday : Backup completo en la base de datos: $BBDD en el archivo: mysql-$BBDD-$timeslot.sql.gz" >> $logfile
    echo "$thisday : Se ha ELIMINADO por Obsoleto el archivo: mysql-$BBDD-$timeslotbefore.sql.gz" >> $logfile
    echo "--------------------------------------------------------------------------------------" >> $logfile
    echo "--------------------------------------------------------------------------------------" >> $logfile
    
    # Borramos LA COPIA que fue creada 5 dias atras.
    rm -f mysql-$BBDD-$timeslotbefore.sql.gz
    


    Abajo dejo el script original que como he indicado antes funciona cuando el servidor permite identificarse como "localhost"


    CODE, HTML o PHP Insertado:
    #!/bin/bash
    
    # Ruta y Archivo en la que se guarda el log de la operacion del backup.
    logfile="/html/daily_backup/logs/log.txt"
    
    # Ruta en la que guardar los backups
    backup_dir="/html/daily_backup/files"
    
    # Usuario y Password de la Base de Datos de la que queremos guardar una copia diaria
    username="miUsuario"
    password="miPassword"
    
    # Nombre completo de la Base de Datos de la que queremos guardar una copia diaria
    BBDD="miBaseDeDatos"
    
    # NO ES NECESARIO MODIFICAR NADA A PARTIR DE AQUI
    
    # Mediante esta instruccion, generamos un nombre de fichero con el dia mes y ano del proceso de backup.
    timeslot=`date +%d%m%y`
    
    # Mediante esta instruccion, generamos una variable con la fecha y hora actual.
    thisday=`date +%d-%m-%Y--%H:%M`
    
    # Mediante esta variable definimos LA COPIA que fue creada 5 dias atras y que sera BORRADA.
    timeslotbefore=`date --date='5 days ago' +%d%m%y`
    
    # Creamos un nuevo log del proceso de backup
    # (Descomentar la siguiente linea si queremos que se borre el archivo de log en cada backup).
    # rm -f $logfile
    touch $logfile
    
    cd $backup_dir
    
    echo "--------------------------------------------------------------------------------------" >> $logfile
    echo "--------------------------------------------------------------------------------------" >> $logfile
    echo "$thisday : Comienza el proceso de copia de seguridad de la base de datos: $BBDD en el archivo: mysql-$BBDD-$timeslot.sql.gz" >> $logfile
    
    # Volcamos la base de datos en un fichero comprimido en formato sql.gz para ocupar lo minimo.
    # Se evita el problema con los caracteres raros tales como vocales acentuadas, letra egne, etc...
    # 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.
    mysqldump --user=$username --password=$password $BBDD --add-drop-table -Q | gzip > mysql-$BBDD-$timeslot.sql.gz
    
    echo "$thisday : Backup completo en la base de datos: $BBDD en el archivo: mysql-$BBDD-$timeslot.sql.gz" >> $logfile
    echo "$thisday : Se ha ELIMINADO por Obsoleto el archivo: mysql-$BBDD-$timeslotbefore.sql.gz" >> $logfile
    echo "--------------------------------------------------------------------------------------" >> $logfile
    echo "--------------------------------------------------------------------------------------" >> $logfile
    
    # Borramos LA COPIA que fue creada 5 dias atras.
    rm -f mysql-$BBDD-$timeslotbefore.sql.gz
    

    Muchas gracias por su ayuda.

    Saludos.
     
  2.  
  3. Apolo

    Apolo Administrador Miembro del Staff Administrador CH

    Hola,

    Pero, el script modificado, ¿no lo estás ejecutando también en un servidor local? ¿O lo tienes corriendo en un servidor remoto? Porque a lo mejor el problema no es del script sino de la conexión remota a la BBDD.

    :arriba:
     
  4. user99

    user99 Usuario activo

    Está alojada en un servidor remoto que es compartido con otras webs.

    Ese es el motivo por el que tuve que modificar el script, porque para conectar a la BBDD tengo que identificar mi partición dentro del servidor.
     
  5. Apolo

    Apolo Administrador Miembro del Staff Administrador CH

    Hola,

    Si el script está funcionando en un servidor y la base de datos en otro servidor, a lo mejor lo primero que podrías verificar es que haya conexión entre ambos servidores, por los puertos correspondientes.
     
  6. kaladrian

    kaladrian Nuevo usuario

    más que nada porque el puerto 3306 probablemente este cerrado en el firewall y más siendo un hosting compartido.

    Un saludo,
     


Alojamiento web, Hosting Reseller, Servidores Dedicados - All in Hosting


    
    
    
    
Blog · Sitios amigos: GuiaHosting · Unidominios · Interalta ·