Sauvegarder quotidiennement ses bases de données SQL sous Linux

Héberger son propre site a ses avantages et ses inconvénients. Le principal inconvénient étant de préserver l’intégrité et la sauvegarde de ses données. Facile lorsqu’il s’agit de fichiers qui ont une existence physique réelle, un simple copier/coller régulier pourrait suffire. Par contre lorsqu’il s’agit de « données virtuelles » stockées dans le système, comme les bases de données SQL, mieux vaut il s’assurer d’une sauvegarde quotidienne en cas de plantage, de mise à jour de l’OS ou de réinstallation complète. Des outils de « dump » automatique existent et plusieurs scripts proposent de le faire pour une seule base. Rarement le sujet des privilèges de l’utilisateur ont été abordés et peu d’entre eux permettent la sauvegarde de plusieurs bases à la fois.

Création d’un utilisateur et privilèges

La première chose à faire est de créer un utilisateur capable de copier toutes vos bases et leurs tables. Vous pourriez très bien utiliser le root de SQL sauf que, parano oblige, laisser le mot de passe de l’utilisateur principal en clair dans votre script de sauvegarde n’est pas très prudent. Sans entrer dans le détail de cette phase, il vous suffit simplement de créer sous phpMyadmin un utilsateur ( par ex dump). Attention cet utilisateur devra être capable de « Dumper » (sauvegarder) vos bases. Il serait inutile voir dangereux de lui octroyer tous les droits, seul « Select » et « Lock » devront donc être activés.

droitdeDump

Ecriture du script « dump.sh »

#!/bin/bash
#-----------------------------------------------------#
#------------SAUVEGARDE DES BASES SQL-----------------#
#-----------------------------------------------------#

#Déclaration des variables
VERSION=$(date +%y-%m-%d)
#=>Affichera la date de création de votre sauvegarde. ex: 2009-09-29 (année-mois-jour pour conserver l'ordre chronologique lors du tri alphabétique)
PATH_BACKUP=/mnt/stock/dump/
#=>Repertoire de destination de votre sauvegarde
BASES=( nomdebase1 nomdebase2 nomdebase3 ... )
#=>Liste des bases que vous souhaitez sauvegarder

################################################

#Creation du repertoire de sauvegarde des base SQL avec la date du jour
if [ ! -d ${PATH_BACKUP}"SQL"${VERSION}/ ] ; then
mkdir ${PATH_BACKUP}"SQL"${VERSION}/ && echo "ok" || echo "echec";
fi
#Execution du script de sauvegarde pour chacune des bases SQL
for base in ${BASES[@]}
do
echo "sauvegarde de la base SQL -" ${base}":"
/usr/bin/mysqldump -u dump -pmotdepassededump --databases $base>${PATH_BACKUP}"SQL"${VERSION}/${base}.sql && echo "ok" || echo "echec"
done

Attention :

  • Les utilisateurs de Windows devront bien suivre les prérogatives de l’article :  écrire en shell sous windows s’ils ne veulent pas voir la copie de ce script générer des erreurs à l’exécution.
  • Après la commande mysqldump, entre -u et le nom d’utilisateur, il y a un espace
  • En revanche entre -p et le mot de passe de votre  utilisateur, il n’y a pas d’espace

Tester votre script, s’il fonctionne laissez uniquement  les droits d’exécution au propriétaire du fichier. Dans une console linux tapez :


chmod 100 dump.sh

Les grands paranos auront choisi « root » comme proprio du fichier.

Exécution quotidienne de la tâche

Rien de bien compliquer pour cette étape. On va simplement éditer un p’tit cron pour lancer notre script tous les jours à 4h00 du matin. Normalement même les plus noctambule sdevraient être dans les bras de morphée à cette heure tardive. Attention toutefois l’édition d’une tâche Cron et l’exécution des fichiers qu’il requiert sont liés à l’utilisateur. Avant d’éditer votre cron, assurez vous bien d’être logguer avec un utilisateur « capable de lancer le script « dump.sh ». Dans une console linux tapez ensuite l’instruction :


crontab -e

Vous voici dans le monde merveilleux de l’édition d’une tâche cron. Appuyer ensuite sur la touche i de votre clavier pour passer en mode édition (comme dans vi oui oui !)

Enfin taper l’instruction suivante


0 4 * * * /CheminVersLeScript/dump.sh

Reste à vérifier de temps en temps que votre sauvegarde a bien fonctionné.

Pour aller plus loin

Vous pourriez aussi ajouter une fonction qui chaque jour vous envoie un mail de confirmation ou écrit plus simplement le résultat dans un fichiers de log.

Si ces options vous intéresse rapprochez vous de l’article Mettre à jour Kaspersky sous Kwartz

You can leave a response, or trackback from your own site.

Leave a Reply