Date de publication: le mercredi 8 août 2007 à 21h00
DerniĂšre modification: par Pascal BOYER le mercredi 6 mai 2009 Ă 19h35
« Article précédent: eZ Publish : login et mot de passe perdus
» Article suivant: rewriting - virtualhost
MySQL : script de sauvegarde de la base de données de eZ Publish
Le petit script interactif ci-dessous permet de faire une sauvegarde de la base de données MySQL utilisée par votre site eZ publish :
#!/bin/bash
echo "";
echo "";
echo "";
echo "";
echo "";
echo " ################################################################################";
echo " # La sauvegarde de la base de donnĂ©es du site luxpopuli.fr va ĂȘtre effectuĂ©e #";
echo " ################################################################################";
echo "";
echo "";
echo "";
# L'option -n supprime le retour chariot
echo -n " > 1°/ Veuillez entrez le nom de la Base de données à sauvegarder: ";
# et maintenant on affecte ce qui est répondu par l'utilisateur à la
# variable dbase (pas de $ devant la variable car elle est en train d'ĂȘtre créée)
read dbase;
echo "";
echo -n " > 2°/ Veuillez entrez le nom de l'administrateur de cette base de données: ";
read admin;
echo "";
echo -n " > 3°/ Veuillez entrez le mot de passe de l'administrateur de cette base de données: ";
# L'option -s permet de ne pas afficher les caractĂšres du mot de passe lorsqu'on le tape.
read -s adminpswd;
# L'option -s supprime l'écho, donc le mot de passe ne s'affiche pas à l'écran.
echo "";
# Maintenant on définit le nom du fichier de sauvegarde:
jour=`date +%A`;
#mois=`date +%B`;
mois=`date +%m`;
date=`date +%d`;
heure=`date +%X`;
annee=`date +%Y`;
# Il est IMPĂRATIF de coller la variable au signe = !!!
#file=$dbase\_dumpfile_$jour-$date-$mois-$annee-a-$heure.sql;
file=$annee-$mois-$date-a-$heure--$dbase\_dumpfile.sql;
echo "";
echo " Le nom du fichier de sauvegarde sera: $file";
echo -n " Il sera placé dans /usr/local/Backup/ezpdbase/";
sleep 5;
echo "";
echo "";
echo -n " > Veuillez patienter pendant que le systÚme crée la sauvegarde de votre base de données...";
`mysqldump -u $admin -p"$adminpswd" -h localhost --opt $dbase > /usr/local/Backup/ezpdbase/$file`
# On compresse le fichier:
echo "";
echo " > Le fichier de sauvegarde a bien été créé.";
echo -n " > Veuillez patienter pendant que le systĂšme compresse le fichier de sauvegarde...";
`bzip2 -9 /usr/local/Backup/ezpdbase/$file`;
# On récupÚre la taille du fichier compressé:
taille=`ls -la /usr/local/Backup/ezpdbase/$file.bz2 |awk '{print $5}'`;
echo "";
echo " > L'opération s'est correctement déroulée.";
echo " Le nom final du fichier est: $file.bz2";
echo " Sa taille est de $taille octets";
echo "";
echo "";
exit 0 AprÚs avoir placé ces lignes dans un fichier ( mysqldump_luxpopuli par exemple), rendez-le exécutable:
chmod +x mysqldump_luxpopuli
...puis restreignez ainsi les droits:
chmod 700 mysqldump_luxpopuli
Placez ensuite , par exemple, le script dans le répertoire /usr/local/sbin/ .
Ensuite, il suffit de créer le répertoire /usr/local/ Backup/ et son sous-répertoire /usr/local/Backup/ ezp / dans lequel seront placés les fichiers de sauvegarde.
Lorsque l'on exécute ce script, voici l'ensemble des sorties qu'il produit:
./mysqldump_luxpopuli
.
################################################################################
# La sauvegarde de la base de donnĂ©es du site luxpopuli.fr va ĂȘtre effectuĂ©e #
################################################################################
> 1°/ Veuillez entrez le nom de la Base de données à sauvegarder: madbase
> 2°/ Veuillez entrez le nom de l'administrateur de cette base de données: monidentifiant
> 3°/ Veuillez entrez le mot de passe de l'administrateur de cette base de données:
Le nom du fichier de sauvegarde sera: 2007-08-08-a-19:15:43--madbase_dumpfile.sql
Il sera placé dans /usr/local/Backup/ezpdbase/
> Veuillez patienter pendant que le systÚme crée la sauvegarde de votre base de données...
> Le fichier de sauvegarde a bien été créé.
> Veuillez patienter pendant que le systĂšme compresse le fichier de sauvegarde...
> L'opération s'est correctement déroulée.
Le nom final du fichier est: 2007-08-08-a-19:15:43--madbase_dumpfile.sql.bz2
Sa taille est de 7146167 octets
. MySQL : automatiser les sauvegardes de la base de données
Si vous souhaitez automatiser la procédure de sauvegarde de votre base de données MySQL, il suffit d'utiliser crontab (ou l'interface graphique kcron).
Par contre, il ne sera plus possible d'utiliser un script interactif et les noms de la base de donnĂ©es, de l'administrateur et son mot de passe devront donc ĂȘtre inscrits en dur dans le script qui devient alors:
#!/bin/bash
# Lorsqu'on définit une variable il est IMPERATIF de coller la variable au signe égal ("=")
# On définit le nom de la base de données
dbase=madbase;
# On définit le nom de l'administrateur de la base de données
admin=monidentifiant;
# On définit le mot de passe de l'administrateur
adminpswd=monmotdepasse;
# On définit le jour en cours
##jour=`date | awk '{print $1}'`;
jour=`date +%A`;
# On définit le mois en cours
##mois=`date | awk '{print $3}'`;
mois=`date +%m`;
# On définit le jour en cours
##date=`date | awk '{print $2}'`;
date=`date +%d`;
# On définit l'heure courante
##heure=`date | awk '{print $5}'`;
heure=`date +%X`;
# On définit l'année en cours
##annee=`date | awk '{print $4}'`;
annee=`date +%Y`;
# On définit le nom que portera le fichier de sauvegarde
#file=`touch $dbase_dumpfile_$jour-$date-$mois-$annee-a-$heure.sql`;
file=$annee-$mois-$date-a-$heure--$dbase\_dumpfile.sql;
# On effectue le dump de la base de donnée
`mysqldump -u $admin -p"$adminpswd" -h localhost --opt $dbase > /usr/local/Backup/ezp/$file`;
# On compresse le fichier:
`bzip2 -9 /usr/local/Backup/ezp/$file`;
# On supprime le fichier non compressé
# C'EST INUTILE CAR bzip2 SUPPRIME LE FICHIER ORIGINAL
#`rm /usr/local/Backup/eZP/$file`;
exit 0 Cron : configuration d'une sauvegarde automatique
Voici à présent un exemple de table cron qui fait une sauvegarde toutes les 6 heures de la base de données de eZ publish :
crontab -u root -e
# Sauvegarde de la base de données de eZ publish 0 0,6,12,18 * * * /usr/local/sbin/mysqldump_luxpopuli
MySQL : restauration du dump de la base
mysql -u login -p password -h nom_serveur -D nom_base < nom_du_fichier_de_sauvegarde.sql
oĂč:
- login doit ĂȘtre remplacĂ© par le nom de l'administrateur de la base de donnĂ©es,
- password doit ĂȘtre remplacĂ© par le mot de passe de l'administrateur de la base de donnĂ©es,
- nom_serveur doit ĂȘtre remplacĂ© par le nom (ou l'adresse IP) du serveur MySQL (ou par localhost si la commande est lancĂ©e directement Ă partir de la machine qui abrite le serveur MySQL),
- nom_base doit ĂȘtre remplacĂ© par le nom de la base de donnĂ©es que l'on souhaite restaurer.
Personnellement, avant de restaurer l'intégralité des tables de ma base de données utilisée par eZ Publish , je prends toujours la peine de vider complÚtement cette derniÚre. Mais pour cela j'utilise phpMyAdmin car la liste des tables est bien trop longue pour envisager la ligne de commande.
Commentaires













