Nous 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;