Sauvegarder et restaurer la BDD de MediaWiki
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}}}