Script backup mysql : Différence entre versions

De DiouxX's Wiki
Aller à : navigation, rechercher
(Page créée avec « {{ Introduction | Ce script permet de réaliser un backup d'une base de donnée MySQL et de l'envoyer en scp vers un serveur distant }} <syntaxhighlight lang=bash> #! /bin... »)
 
Ligne 150 : Ligne 150 :
 
fi
 
fi
 
</syntaxhighlight>
 
</syntaxhighlight>
[[Catégorie:Scripts]]
+
[[Catégorie:Scripts Database]]

Version du 25 juin 2013 à 07:57

Ce script permet de réaliser un backup d'une base de donnée MySQL et de l'envoyer en scp vers un serveur distant
#! /bin/bash
#Script générique pour réaliser un backup d'une base de donnee MySQL
#Susceptible d'etre ajouter dans une tache cron

# Auteur : Devleeschauwer Denis
#Date : mars 2013

#Historique modification
#TODO : Ajout d'une option log (optionel)

#Couleur affichage
VERT="\\033[1;32m" 
NORMAL="\\033[0;39m" 
ROUGE="\\033[1;31m" 
ROSE="\\033[1;35m" 
BLEU="\\033[1;34m" 
BLANC="\\033[0;02m" 
BLANCLAIR="\\033[1;08m" 
JAUNE="\\033[1;33m" 
CYAN="\\033[1;36m"

#Variables globales
USER=""
PWD=""
HOST=""
PORT=0000
DATABASE=""
DESTINATION=""
VERBOSE=0
LOG=0

function usage(){
  echo -e "Utilisation du script :"
  echo -e "\tAfficher l'aide"
  echo -e "-u\tNom de l'utilisateur de la database"
  echo -e "-m\tMot de passe de l'utilisateur de la database"
  echo -e "-h\tHote contenant la database a backuper"
  echo -e "-p\tPort d'ecoute de la database (default: 3306)"
  echo -e "-d\tNom de la database"
  echo -e "-t\tChemin de sauvegarde de l hote distant"
  echo -e "-v\tMode verbeux"
  echo -e "-l\tActiver log"
  echo -e "\nExemple uitlisation"
  echo -e "script_backup_mysql -lvu glpi_user -m glpi -h 192.168.1.185 -d glpinew -t root@192.168.1.7:/mnt/backup_server/backup_mysql/glpinew/"
  echo -e "\nIMPORTANT\nPensez à copier la clef public sur le serveur que vous desirer envoyer le backup ( Pour automatiser la tache de backup)"
  echo -e "[user@ordi ~]$ ssh-copy-id -i ~/.ssh/id_dsa.pub root@serveur-distant"
  exit 0
  
}

function verbose(){
	if [ $VERBOSE -eq 1 ]
	then
        	#Affichage de debug
        	echo -e "$1"
	fi
}

if [ $# -eq 0 ]
then
  usage
fi


while getopts u:m:lvp:h:d:t: option
do
 case $option in
  u)
    USER=$OPTARG
   ;;
  m)
   PWD=$OPTARG
   ;;
  h)
   HOST=$OPTARG
   ;;
  p)
   PORT=$OPTARG
   ;;
  d)
   DATABASE=$OPTARG
   ;;
  t)
   DESTINATION=$OPTARG
   ;;
  v)
   VERBOSE=1
    ;;
  l)
   LOG=1
   ;;
  *)
    usage
    ;;
 esac
done

#Changement du numero de port
#Si pas precise alors port = 3306
if [ $PORT -eq 0000 ]
   then
      PORT=3306
   fi

#Assignation du fichier de backup et generation de la date
DATE=`date +"%Y"-"%m"-"%d"`
NAME_FILE=${DATABASE}-${DATE}.bck

verbose "\nListing des parametres :\n\tUser : $USER\n\tMot de passe : $PWD\n\tHote : $HOST\n\tPort : $PORT\n\tDatabase : $DATABASE\n\tDestination : $DESTINATION"

verbose "\nRequete SQL : mysqldump -h $HOST -P $PORT -u $USER -p$PWD $DATABASE > /tmp/$NAME_FILE"

#Dump de la database
mysqldump -h $HOST -P $PORT -u $USER -p$PWD $DATABASE > /tmp/$NAME_FILE

if [ $? != 0 ]
then
	verbose "Dump Database \t\t\t$ROUGE[KO]$NORMAL"
else
	verbose "Dump Database \t\t\t$VERT[OK]$NORMAL"
fi

#Copie du  dump vers le serveur renseigne en parametre
verbose "\nCommande Transfert : scp /tmp/$NAME_FILE $DESTINATION"

if [ $VERBOSE -eq 1 ]
then
	scp /tmp/$NAME_FILE $DESTINATION
else
	scp /tmp/$NAME_FILE $DESTINATION > /dev/null 2>&1
fi

if [ $? != 0 ]
then
        verbose "Transfert Dump \t\t\t$ROUGE[KO]$NORMAL"
else
        verbose "Transfert Dump \t\t\t$VERT[OK]$NORMAL"
fi

#Suppresion du dump local
rm -f /tmp/$NAME_FILE

if [ $? != 0 ]
then
        verbose "Suppression Dump local \t\t$ROUGE[KO]$NORMAL"
else
        verbose "Suppression Dump local \t\t$VERT[OK]$NORMAL"
fi