12 Ene

Bash para backup o respaldo del servidor MySQL o Maria DB

Según yo estoy organizando mis servidores y para hacerme la tarea más fácil hice un pequeño script bash con el objetivo de automatizar esta bronca.

#!/bin/sh

#Environment
HOSTNAME='localhost'
DATE=`date +%Y-%m-%d`

#Server Mysql
MYSQLUSER='root'
MYSQLPASS=''

#Path to backup directory
cd /home/root/backup
mkdir backup_$DATE
cd backup_$DATE

#Dumping every database
for DB in $(mysql -h $HOSTNAME -u $MYSQLUSER --password=${MYSQLPASS} --batch --skip-column-names --execute="show databases");
do
	
	#Ignoring MySQL && Maria DB databases
	if [ "$DB" = "information_schema" ] || [ "$DB" = "performance_schema" ] || [ "$DB" = "sys" ] || [ "$DB" = "mysql" ]; then
        echo "Ignorando information_schema, performance_schema, sys, mysql";
    else
    	echo Backup $DB
        FILENAME=${HOSTNAME}_${DATE}_DB_${DB}.sql
		mysqldump $DB -h $HOSTNAME -u $MYSQLUSER --password=${MYSQLPASS} --triggers --routines > $FILENAME
    fi
done

#Exit of directory
cd ..

#Package the backup in tar.gz
tar -zcf backup_${DATE}.tar.gz backup_$DATE

#Remove the database directory
rm -rf backup_$DATE

El script esta bastante sencillo, como buen cristiano lo encontre en el stackoverflow y lo modifique. Se me ocurrió la idea de prenderlo en el crontab de cada servidor pero antes de meter la pata, quiero saber si esto representa un riesgo y si hay una forma más eficiente y segura de completar estas tareas de respaldo y migraciones, porque luego resultan tediosas hacerlas a manopla.

El segundo paso que se me ocurre es subir cada respaldo a un S3 de Amazon y la cereza del pastel sería comprobarlo con un hash en sha1 o algo así…

GitHub por si hay paro 😛

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Eres un robot? * Time limit exceeded. Please complete the captcha once again.