quarta-feira, 29 de dezembro de 2010

Shell Script de backup para Mysql

Esse script pode ser usado p/ fazer backups diários de todas as bases mysql
exemplo no crontab diariamente as 23:50
50 23 * * * /scripts/backup_mysql.sh
como root no mysql de permissao de leitura p/ o usuario backup_operator
GRANT ALL ON *.* TO 'backup_operator'@'localhost'

#!/bin/sh
# Script to backup mysql databases
# Create a complete bkp with all databses and a separated for each one
# Author: Mario Cezzare mcezzare@gmail.com 
# last update on Wed Dec 29 16:24:11 on ttys005

x=`date '+BACKUP-%d.%m.%y'`
now=`date '+%d.%m.%y %H:%M:%S'`
separator="-----------------------------------"
path_backup=/backup/mysql/
notify="sysadmin@email.com.br"
cd $path_backup
mkdir $x
path_backup="$path_backup/$x"
echo $x
##################################################################################
# PART 1 - LOGS
##################################################################################

echo " starting at $x $now"  >> $path_backup/mysql_databases-$x.log
echo $separator

MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
MYSQLUSER="backup_operator"
MYSQLPASSWD="senha_do_backup_operator"
MYSQLHOST="localhost"
GZIP="$(which gzip)"
##################################################################################
# PART 2 - ALL DATA
##################################################################################

echo "backup of mysql  databases "
mysqldump --all-databases -h $MYSQLHOST -u $MYSQLUSER -p$MYSQLPASSWD | gzip -c > $path_backup/backup-all-mysql-$x.mysql.gz

##################################################################################
# PART 3 - EACH ONE
##################################################################################

DBS="$($MYSQL -u $MYSQLUSER -h $MYSQLHOST -p$MYSQLPASSWD -Bse 'show databases')"
for db in $DBS ; do
 echo "backing up $db"
 FILE="mysql_$db-$x.mysql.gz"
 $MYSQLDUMP -u $MYSQLUSER -h $MYSQLHOST -p$MYSQLPASSWD $db | $GZIP -c  > $path_backup/$FILE
 now=`date '+%d.%m.%y %H:%M:%S'`
 echo " $db at $x $now"  >> $path_backup/mysql_databases-$x.log
done

##################################################################################
# PART 3 - EACH ONE
##################################################################################

now=`date '+%d.%m.%y %H:%M:%S'` 
echo " ending at $x $now"  >> $path_backup/mysql_databases-$x.log

##################################################################################
# PART 4 - NOTIFICATIONS
##################################################################################

ls -aloh $path_backup | mail -s BACKUP_MYSQL_DATABASES $notify

Nenhum comentário: