logo-mysqlNous allons utiliser mysqldump pour scripter les sauvegardes de notre base.

Le script va chercher les information de connexion dans le fichier de configuration mysqldump.conf:

/etc/mysqldump.conf:

[client]  
 user=<utilisateur; exemple: root>  
 password=<mot de passe sur mysql de l’utilisateur>

Un exemple de script bash:

#!/bin/bash
## script de sauvegarde de base MYSQL
## Argument = -p path -b base
## Par défaut le répertoire utilisé est /tmp/
## Log dans /var/log/mysql/
## Message d'utilisation du script function
usage {  
   echo "Ce script sauvegarde les bases MySQL du serveur.";
   echo "OPTIONS:";
   echo "  -h      Montre ce message";
   echo "  -p      Le répertoire de sauvegarde de la base";
   echo "  -b      La base à sauvegarder (en l'absence toutes les bases le sont)";
 }
 ## Initialisation des variables
 ladate=`date '+%Y-%m-%d-%H%M%S'`;
 errorlogfile=/tmp/toto.log
 ##/var/log/mysql/backupsql-error.log;
 PATH=/tmp DATABASE="all-databases";
 NOMFIC=sqldump-$DATABASE-$ladate.sql;
 ## Récupération des paramètres
 while getopts “ht:b:p:” OPTION do
      case $OPTION in
          h)
              usage
              exit -1
              ;;
          p)
              PATH=$OPTARG
              ;;
          b)
              DATABASE="databases $OPTARG"
              NOMFIC=sqldump-$OPTARG-$ladate.sql;
              ;;
          ?)
              usage
              exit -1
              ;;
      esac done
 echo "Le répertoire de sauvegarde est $PATH"
 echo "La base de donnée à sauvegarder: $DATABASE"
 echo "Le fichier de Log d'erreur est $errorlogfile";
 echo "Le fichier de Sauvegarde est $NOMFIC";
 echo ".. début de la sauvegarde ..";
 ## Sauvegarde de la base avec mysqldump
 /usr/bin/mysqldump --defaults-file=/etc/mysqldump.conf --$DATABASE 2> $errorlogfile > "$PATH/$NOMFIC"
 ## Test de retour d'execution
 status=${PIPESTATUS[0]}
 if [ "$status" != "0" ] then
   echo "Erreur sur le backup de la base. Voir le fichier " $errorlogfile 
   exit 2;
 fi
 ## Compression du fichier de sauvegarde
 /bin/gzip "$PATH/$NOMFIC"
 echo sauvegarde terminee: fichier "$PATH/$NOMFIC".gz
 exit 0;