Hoy en la mañana estaba leyendo este artículo llamado Script para backups automáticos de tu servidor lo vi y me pareció una buena idea hacer uno propio para respaldar todas las bases de datos que tengo en mi servidor MySQL.
Tomé prestadas algunas ideas del script que muestran en DesdeLinux.net y otras del sitio Tail -f Backup de todas las bases de datos MySQL en archivos separados.
El script de DesdeLinux es muy completo, hacen un respaldo de varios archivos, un vaciado de las bases de datos que consideran importantes y hasta envía un correo electrónico a los administradores con el resultado del respaldo. En lo personal a mi me gusta copiar archivos utilizando el comando rsync, pero esa es otra historia.
Al principio intenté hacer un mysqldump de todas las bases de datos en un solo archivo, pero el resultado fue un mega archivo de 27 MB que era muy difícil de abrir para gedit (o cualquier otro editor de texto). Si solo necesito restaurar una base de datos en lugar de todas la tarea se puede complicar un poco.
Por eso que decidí generar un solo archivo para cada base de datos del servidor MySQL. Ahí es donde entra en acción el script de Tail que explica muy bien como generar un archivo independiente por cada base de datos.
El resultado es un archivo por cada base de datos que incluye en el nombre del archivo la fecha en la que fue realizado el respaldo.
El script esta diseñado para ejecutarse en un equipo diferente al que ejecuta el servidor de base de datos, aunque supongo que si le ponen localhost en la variable IP_SERVIDOR_MYSQL también puede funcionar.
Como un plus, el script realiza una optimización y reparación de todas las bases de datos del servidor antes de hacer el vaciado de las bases de datos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #!/bin/sh # # Este programa es software libre. Puede redistribuirlo y/o # modificarlo bajo los términos de la Licencia Pública General # de GNU según es publicada por la Free Software Foundation, # bien de la versión 2 de dicha Licencia o bien (según su # elección) de cualquier versión posterior. # # Este programa se distribuye con la esperanza de que sea # útil, pero SIN NINGUNA GARANTÍA, incluso sin la garantía # MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN # PROPÓSITO PARTICULAR. Para más detalles, véase la Licencia # Pública General de GNU. # # Copyleft 2012 # Author: Linuxman <inguanzo@gmail.com> <http://linuxmanr4.com> # NAME="Respaldo MySQL" # Nombre script. #Descripción: Script para hacer un respaldo de todas las bases de datos de un servidor : ${DATE:=$(date +'%Y-%m-%d')} # Variable para Fecha. : ${TIME:=$(date +'%R')} # Variable para Hora. : ${WORK_DIR:=/ruta/donde/quieres/que/se/guarden/los/archivos} # Directorio de trabajo. : ${IP_SERVIDOR_MYSQL:=xxx.xxx.xxx.xxx} # Dirección del servidor MySQL, si el servidor es local entonces localhost puede funcionar : ${USUARIO:=usuario} # Usuario con privilegios a la base de datos. (root puede funcionar) : ${DB_PASS:=contraseña} # La contraseña de root de nuestro servidor MySQL. #Antes de respaldar optimizamos y reparamos las bases de datos. clear echo "Iniciando optimización de las bases de datos." echo "=============================================" mysqlcheck -c -A --auto-repair -o -h $IP_SERVIDOR_MYSQL -u root -p"$DB_PASS" # Cambiamos a nuestro directorio de trabajo cd $WORK_DIR echo "Iniciando vaciado de todas las bases de datos." echo "===============================================" # Iniciamos un vaciado de todas las bases de datos del servidor. TABLES=`mysql -h $IP_SERVIDOR_MYSQL -u$USUARIO --password=$DB_PASS --execute="SHOW DATABASES;" |awk '{print($1)}' |grep -v "Database" |grep -v "information_schema"` for table in $TABLES; do echo "Respaldando la tabla $table..." file=$table.respaldo_`date +%Y%m%d`.sql mysqldump -h $IP_SERVIDOR_MYSQL -u"$USUARIO" -p"$DB_PASS" $table > $file echo "Comprimiendo $file ..." gzip $file done echo "" echo "RESPALDO TERMINADO!!!" |
Para utilizarlo es necesario descargar el archivo, abrirlo y modificar los parámetros
- WORK_DIR Es la ruta donde quieres que se guarden los archivos.
- IP_SERVIDOR_MYSQL Es la dirección ip del servidor, también podría funcionar un nombre de dominio o si el servidor es la misma maquina en la que se ejecuta el script localhost sería lo correcto.
- USUARIO Un usuario con los permisos de acceso necesarios, root funciona la mayoría de las veces.
- DB_PASS La contraseña del usuario
Para ejecutar el script es necesario darle permisos de ejecución con:
chmod +x respaldo_mysql.sh
Y suerte !!!
El script funciona muy bien en mi equipo y espero que en el de ustedes también. Si tienen alguna duda favor de poner un comentario.
Has llegado aquí buscando:
- script para respaldar base de datos mysql
- herramientas para respaldar bases de datos
- script para hora base de datos
- script para respaldar base de datos
- script para respaldar base de datos mysql de un servidor





Inicio
One comment
Pingback: MySQL Backup Script versión 2.0 - LinuxmanR4