Sauvegarder et restaurer la BDD de MediaWiki

De La Mouche VII
Révision datée du 4 juillet 2006 à 16:05 par Xiloynaha (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

Cet article est une ébauche, qui sera complétée plus tard.


Cet article contient du code non testé : prenez garde à la fermeture automatique des portes, la direction décline toute responsabilité !


Comment sauvegarder et restaurer la base de données de son wiki favori ? Grave question en vérité... Le problème de cette manipulation se pose avec les accents dans les titres des pages, qui s'affichent mal avec les options par défaut. Il faut utiliser l'encodage latin1 (ISO-8859-1).




Sauvegarde

Pour sauvegarder la base de données, utilisez la commande suivante (où BaseDeDonnées est la base de données de MediaWiki et Utilisateur l'utilisateur qui accède à la base) :

$ mysqldump -u Utilisateur -p --default-character-set=latin1 -B BaseDeDonnées > FichierSauvegarde.dump

Puis compressez à l'aide de bzip2 (qui semble meilleur que gzip sur ce type de fichiers) :

$ bzip2 -9 FichierSauvegarde.dump


Pour tout faire en une seule commande :

$ mysqldump -u Utilisateur -p --default-character-set=latin1 -B BaseDeDonnées | bzip2 -9 > FichierSauvegarde.dump.bz2




Restauration

Avant de restaurer notre base de données, il faut recréer une base vide, comme fait lors de l'installation de MediaWiki :

$ mysql -u root -p
mysql> create database BaseDeDonnées ;
mysql> grant all on BaseDeDonnées.* to 'Utilisateur'@'localhost' identified by 'MotDePasseEnClair' ;
mysql> exit


Puis la restauration à proprement parler. Décompression du fichier de sauvegarde...

$ bunzip2 FichierSauvegarde.dump.bz2

... et injection dans la base vide :

$ mysql --default-character-set=latin1 -h localhost -D BaseDeDonnées -u Utilisateur -p < FichierSauvegarde.dump

Ce qui donne, en une seule commande :

$ bunzip2 -c FichierSauvegarde.dump.bz2 | mysql --default-character-set=latin1 -h localhost -D BaseDeDonnées -u Utilisateur -p




Script de sauvegarde automatique

La sauvegarde de la base de données est une chose, mais il faut également sauvegarder les fichiers du wiki. Le plus simple est de sauvegarder tout le répertoire de MediaWiki. Et si on peut automatiser tout ça, c'est mieux. Mettez-donc ce qui suit dans un fichier appelé par exemple sauvegarde_mediawiki.sh (je manque d'inspiration) :

#!/bin/sh
#
# Déclarations des variables
DATE=`date +'%Y-%m-%d'` # date au format année-mois-jour
REP_SAUV="/chemin/vers/le/répertoire/de/sauvegarde"
REP_MW="/chemin/vers/le/répertoire/de/MediaWiki"
#
# Préparatifs
if [! -d "$REP_MW" ] ; then
    echo "Erreur : le répertoire à sauvegarder ($REP_MW) n'existe pas !"
    exit 1
fi
if [ ! -d "$REP_SAUV" ] ; then
    mkdir -p "$REP_SAUV" || exit 2
fi
#
# Sauvegarde des fichiers
tar cf - "$REP_MW" | bzip2 -9 > "${REP_SAUV}/mediawiki_${DATE}.tar.bz2
#
# Sauvegarde de la base de données
mysqldump -u Utilisateur -p MotDePasseEnClair --default-character-set=latin1 -B BaseDeDonnées | bzip2 -9 > "${REP_SAUV}/mediawiki_${DATE}.dump.bz2"

Adaptez le contenu des variables REP_SAUV et REP_MW, respectivement en indiquant le répertoire où les sauvegardes seront stockées et le répertoire d'installation de MediaWiki.

Donnez-vous le droit d'exécuter ce fichier :

$ chmod u+x sauvegarde_mediawiki.sh

Il ne reste qu'à indiquer à notre ami cron qu'il doit exécuter ce script à fréquence régulière :

$ crontab -e

Par exemple, si vous désirez sauvegarder tous les deux jours à trois heures du matin, indiquez :

# m h dom mon dow command
  0 3 */2  *   *  /chemin/vers/sauvegarde_mediawiki.sh

Quittez, sauvegardez, c'est prêt ! Dégustez très frais.




Et avec PhpMyAdmin ?

Faire : {{{1}}}