Différences entre les versions de « Sauvegarder et restaurer la BDD de MediaWiki »

De La Mouche VII
Aller à la navigationAller à la recherche
 
(→‎Restauration : nuancement de l'avertissement)
 
(2 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{Ebauche}}
+
Comment sauvegarder et restaurer la base de données de son wiki favori ? Grave question en vérité… Non, pas tant que ça en fait : cela se passe comme pour toute autre base de données.&thinsp;<ref>Lorsque j'ai commencé à écrire cette page, il y avait un problème avec les accents dans les titres des pages, qui étaient mal restaurés avec les options par défaut. Il fallait forcer l'utilisation de l'encodage '''[http://fr.wikipedia.org/wiki/Latin-1 latin1]''' (ISO-8859-1). Le problème semble néanmoins être résolu, et on peut à présent sauvegarder la base de données aussi bien en latin1 qu'en UTF-8.</ref>
 
 
 
 
{{Code non testé}}
 
 
 
 
 
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 '''[http://fr.wikipedia.org/wiki/Latin-1 latin1]''' ('''ISO-8859-1''').
 
 
 
 
 
 
 
 
 
 
 
  
 
== Sauvegarde ==
 
== 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) :
 
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
+
  $ mysqldump -u Utilisateur -p -B BaseDeDonnées > FichierSauvegarde.dump
 
Puis compressez à l'aide de '''bzip2''' (qui semble meilleur que '''gzip''' sur ce type de fichiers) :
 
Puis compressez à l'aide de '''bzip2''' (qui semble meilleur que '''gzip''' sur ce type de fichiers) :
 
  $ bzip2 -9 FichierSauvegarde.dump
 
  $ bzip2 -9 FichierSauvegarde.dump
 
  
 
Pour tout faire en une seule commande :
 
Pour tout faire en une seule commande :
  $ mysqldump -u Utilisateur -p --default-character-set=latin1 -B BaseDeDonnées | bzip2 -9 > FichierSauvegarde.dump.bz2
+
  $ mysqldump -u Utilisateur -p -B BaseDeDonnées | bzip2 -9 > FichierSauvegarde.dump.bz2
  
 +
== Restauration ==
  
 
+
'''''Attention''' : la nouvelle base doit avoir le même nom que l'ancienne, car le nom de la base est inclus dans le fichier dump (que vous pouvez éditer, au besoin). Si vous lancez ces commandes avec un vieux backup sur une base plus récente, vous risquez de perdre des données.''
 
 
 
 
 
 
== Restauration ==
 
  
 
Avant de restaurer notre base de données, il faut recréer une base vide, comme fait lors de l'installation de MediaWiki :
 
Avant de restaurer notre base de données, il faut recréer une base vide, comme fait lors de l'installation de MediaWiki :
Ligne 35 : Ligne 20 :
 
  mysql> grant all on BaseDeDonnées.* to 'Utilisateur'@'localhost' identified by 'MotDePasseEnClair' ;
 
  mysql> grant all on BaseDeDonnées.* to 'Utilisateur'@'localhost' identified by 'MotDePasseEnClair' ;
 
  mysql> exit
 
  mysql> exit
 
  
 
Puis la restauration à proprement parler. Décompression du fichier de sauvegarde...
 
Puis la restauration à proprement parler. Décompression du fichier de sauvegarde...
 
  $ bunzip2 FichierSauvegarde.dump.bz2
 
  $ bunzip2 FichierSauvegarde.dump.bz2
 
... et injection dans la base vide :
 
... et injection dans la base vide :
  $ mysql --default-character-set=latin1 -h localhost -D BaseDeDonnées -u Utilisateur -p < FichierSauvegarde.dump
+
  $ mysql -h localhost -D BaseDeDonnées -u Utilisateur -p < FichierSauvegarde.dump
  
 
Ce qui donne, en une seule commande :
 
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
+
  $ bunzip2 -c FichierSauvegarde.dump.bz2 | mysql -h localhost -D BaseDeDonnées -u Utilisateur -p
 
 
 
 
 
 
 
 
 
 
  
 
== Script de sauvegarde automatique ==
 
== Script de sauvegarde automatique ==
Ligne 73 : Ligne 52 :
 
  #
 
  #
 
  # Sauvegarde de la base de données
 
  # 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"
+
  mysqldump -u Utilisateur -pMotDePasseEnClair -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.
 
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.
Ligne 87 : Ligne 66 :
 
Quittez, sauvegardez, c'est prêt ! Dégustez très frais.
 
Quittez, sauvegardez, c'est prêt ! Dégustez très frais.
  
 +
== Notes ==
  
 
+
<references/>
 
 
 
 
 
 
== Et avec PhpMyAdmin ? ==
 
 
 
{{TODO|texte=salut}}
 
 
 
 
 
  
  
 
[[Catégorie:MediaWiki]]
 
[[Catégorie:MediaWiki]]

Dernière version du 15 février 2010 à 11:04

Comment sauvegarder et restaurer la base de données de son wiki favori ? Grave question en vérité… Non, pas tant que ça en fait : cela se passe comme pour toute autre base de données. [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 -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 -B BaseDeDonnées | bzip2 -9 > FichierSauvegarde.dump.bz2

Restauration

Attention : la nouvelle base doit avoir le même nom que l'ancienne, car le nom de la base est inclus dans le fichier dump (que vous pouvez éditer, au besoin). Si vous lancez ces commandes avec un vieux backup sur une base plus récente, vous risquez de perdre des données.

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 -h localhost -D BaseDeDonnées -u Utilisateur -p < FichierSauvegarde.dump

Ce qui donne, en une seule commande :

$ bunzip2 -c FichierSauvegarde.dump.bz2 | mysql -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 -pMotDePasseEnClair -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.

Notes

  1. Lorsque j'ai commencé à écrire cette page, il y avait un problème avec les accents dans les titres des pages, qui étaient mal restaurés avec les options par défaut. Il fallait forcer l'utilisation de l'encodage latin1 (ISO-8859-1). Le problème semble néanmoins être résolu, et on peut à présent sauvegarder la base de données aussi bien en latin1 qu'en UTF-8.