Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

linux automatizar backups

Estas en el tema de linux automatizar backups en el foro de Mysql en Foros del Web. Buenas Cual es la mejor forma de hacer backups de las bases de datos mysql¿? Gracias!...
  #1 (permalink)  
Antiguo 15/01/2015, 09:56
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
linux automatizar backups

Buenas

Cual es la mejor forma de hacer backups de las bases de datos mysql¿?

Gracias!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #2 (permalink)  
Antiguo 15/01/2015, 13:00
Avatar de lauser
Moderator Unix/Linux
 
Fecha de Ingreso: julio-2013
Ubicación: Odessa (Ukrania)
Mensajes: 3.278
Antigüedad: 11 años, 4 meses
Puntos: 401
Respuesta: linux automatizar backups

Lo que puedes hacer con este script:
Crea una carpeta donde se guardará todo, y esta carpeta es la que luego se comprimirá.
Esta carpeta tendrá de nombre el año, mes y día presente, por ejemplo hoy esa carpeta se llamaría: 2014-10-28
Copia /etc/ (y todo su contenido) a esa carpeta.
Copia logs (/var/log/) hacia esa carpeta antes mencionada.
Exporta las bases de datos de MySQL que tengamos.
Comprime con un password (PASSWORD) esa carpeta, la comprime en .RAR.
Genera un archivo (data.info) con todo el log de lo antes hecho (log de copia de archvios y compresión a .rar), además de poner en este archivo el tamaño (en MBs) del archivo .RAR.
Borra la carpeta en la que pusimos los archivos y que luego comprimimos.
Envía emails a los administradores o personas relacionadas con el servidor, informando que el backup se hizo de forma correcta, y se les enviará adjunto en ese email el archivo con el log de todo (data.info.rar)

Código :
Ver original
  1. #!/bin/sh
  2. #
  3. # -*- ENCODING: UTF-8 -*-
  4. #
  5.  
  6. NAME="VPS_Backup-Script"                # Nombre script.
  7. #Descripción:            Script de backup de files y DBs del VPS
  8. : ${VERSION:=0.1}                     # Versión script.
  9. : ${DATE:=$(date +'%Y-%m-%d')}    # Variable para Fecha.
  10. : ${TIME:=$(date +'%R')}                # Variable para Hora.
  11. : ${WORK_DIR:=/home/backups/$DATE}            # Directorio de trabajo actual.
  12. : ${LOG_FILE:=/home/backups/$DATE/record.log}   # Archivo de log.
  13. : ${ADMIN1a:[email protected]}              # Email de Administrador No.1
  14. : ${ADMIN1b:[email protected]}              # Email de Administrador No.1
  15. : ${ADMIN2a:[email protected]}      # Email de Administrador No.2
  16. : ${ADMIN2b:[email protected]}        # Email de Administrador No.2
  17. : ${LINE:="-"}
  18. : ${DB_PASS:=dbpasswordyeah}        # Password de MySQL.
  19.  
  20. # Creando directorio donde se trabajará, si es que no existe.
  21. if ! -d "`dirname $LOG_FILE`" ; then mkdir -p "`dirname $LOG_FILE`"; fi
  22.  
  23. # Cambiando a directorio donde trabajaremos.
  24. cd $WORK_DIR
  25.  
  26. # Copiando /ETC/ hacia directorio de trabajo actual.
  27. cp -Rv /etc/ $WORK_DIR > $LOG_FILE
  28. echo $LINE >> $LOG_FILE
  29.  
  30. # Creando carpeta para logs.
  31. mkdir $WORK_DIR/logs
  32.  
  33. # Copiando LOGs.
  34. cp /var/log/apache2/ $WORK_DIR/logs/ -Rv >> $LOG_FILE && echo $LINE >> $LOG_FILE
  35. cp /var/log/aptitud* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  36. cp /var/log/auth* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  37. cp /var/log/daemon* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  38. cp /var/log/dmes* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  39. cp /var/log/kern* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  40. cp /var/log/mail* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  41. cp /var/log/message* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  42. cp /var/log/mysql/ $WORK_DIR/logs/ -Rv >> $LOG_FILE && echo $LINE >> $LOG_FILE
  43. cp /var/log/mysql.* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  44. cp /var/log/sys* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
  45.  
  46. # Creando carpeta para DBs.
  47. mkdir $WORK_DIR/dbs
  48.  
  49. # Exportando DBs.
  50. mysqldump --opt -hlocalhost -uroot -p"$DB_PASS" misitio > "$WORK_DIR/dbs/misitio.sql"
  51. mysqldump --opt -hlocalhost -uroot -p"$DB_PASS" mysql > "$WORK_DIR/dbs/mysql.sql"
  52. mysqldump --opt -hlocalhost -uroot -p"$DB_PASS" blogdb > "$WORK_DIR/dbs/blogdb.sql"
  53. mysqldump --opt -hlocalhost -uroot -p"$DB_PASS" pastebin > "$WORK_DIR/dbs/pastebin.sql"
  54.  
  55. # Saliendo un nivel más arriba (/home/backups/).
  56. cd ..
  57.  
  58. # Comprimiendo directorio de trabajo actual.
  59. #tar czvf "$DATE.tar.gz" "$DATE"
  60. rar a $DATE.rar -hpPASSWORD $WORK_DIR >> $LOG_FILE && echo $LINE >> $LOG_FILE
  61.  
  62. # Preparando información para enviar por email.
  63. touch data.info
  64. echo "El archivo $DATE.rar tiene un tamaño de:" > data.info
  65. du -bsh $DATE.rar >> data.info
  66. echo $LINE >> data.info
  67. cat $LOG_FILE >> data.info
  68. tar czvf data.info.tar.gz data.info
  69.  
  70. # Eliminando directorio una vez comprimido.
  71. rm -R "$WORK_DIR"
  72.  
  73. # Enviando emails a administradores.
  74. mail -s "VPS | Status de Backup." $ADMIN1a < data.info.tar.gz
  75. mail -s "VPS | Status de Backup." $ADMIN1b < data.info.tar.gz
  76. mail -s "VPS | Status de Backup." $ADMIN2a < data.info.tar.gz
  77. mail -s "VPS | Status de Backup." $ADMIN2b < data.info.tar.gz
  78.  
  79. # Haciendo copia por SSH hacia cuenta en otro servidor o hosting.
  80. #scp -P 922 "/home/backups/$DATE.rar" [email protected]:/home/backups/
  81.  
  82. echo "                  #######################"
  83. echo "                  ## BACKUP REALIZADO! ##"
  84. echo "                  #######################"
  85.  
  86. # Fin del script.
  87. exit 0

dale permisos
Código :
Ver original
  1. chmod +x vps_backup-script.sh

lo guardas (ejemplo): como: /root/vps_backup-script.sh

automatizar ejecución todos los dias a las 12am
Código :
Ver original
  1. echo "* 12    * * *   root    cd /root && ./vps_backup-script.sh" >> /etc/crontab && /etc/init.d/cron restart

Supongo que te servirá,,, es mas completo que lo que necesitabas asi que lo que no uses lo comentas y a funcionar.
__________________
Los usuarios que te responden, lo hacen altruistamente y sin ánimo de lucro con el único fin de ayudarte. Se paciente y agradecido.
-SOLOLINUX-
  #3 (permalink)  
Antiguo 16/01/2015, 07:48
Avatar de David_Carrera_G  
Fecha de Ingreso: noviembre-2014
Ubicación: Santiago
Mensajes: 37
Antigüedad: 10 años
Puntos: 1
Respuesta: linux automatizar backups

Estimado, yo en windows utilizo el siguiente proceso BATCH para realizar los backups. Saludos :D

C:/xampp/mysql/bin/mysqldump.exe -h localhost -u root "Nombre de tu base"-r "Ruta de destino"/"nombreBackUp".sql
__________________
David Carrera González
Santiago de Chile
Analista de base de datos

Etiquetas: automatizar, linux, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:35.