Jump to content
Invision Board France
Sign in to follow this  
thewiseoldman

Comment Sauvegarder Et Restaurer Les Données

Recommended Posts

thewiseoldman

Nous conseillons vivement d'utiliser xtdump et uqiqi pour les sauvegardes et restaurations, la sauvegarde interne à IPB et phpmyadmin sont inefficaces dès que votre base atteint un certain volume

 

Nous allons ici détailler les procédures de sauvegarde et de restauration des données des forums.

 

Avertissement: Des sauvegardes régulières sont l'assurance vie de vos forums, ce n'est pas le jour où votre forum sera planté qu'il faudra se pencher sur la question. J'espère que ce mini guide vous sera utile, il va de soi qu'il faut vous entrainer à cet exercice alors installez easyphp et pratiquez ;)

 

Bien qu'IPB possède une interface de sauvegarde via le PC Admin, elle s'avère incomplète et ne propose pas la restauration de ce fait vous serez amené tôt ou tard à utiliser phpmyadmin ou un équivalent.

 

Nous allons donc nous familiariser avec phpmyadmin dès maintenant.

 

 

Où est mon phpmyadmin ?

 

Si vous ne le savez pas, nous non plus alors renseignez-vous auprès de vos hébergeurs, voir leur faq et forums ou contacter le service support technique de votre hébergeur.

 

Comment s'y connecter ?

 

Les informations nécessaires pour s'y connecter sont les mêmes que celles que vous avez du fournir pour installer les forums. Vous devriez donc connaître votre login et votre mot de passe phpmyadmin.

 

Comment faire la sauvegarde ?

 

Une fois connecté vous arriverez sur un écran de ce type:

Une fois connecté

 

Cliquez sur le nom de votre base de données entouré ici en rouge.

 

Phpmyadmin vous affiche alors dans la fenêtre de droite la liste de vos tables, descendez vers le bas de la fenêtre pour trouver le formulaire "Afficher le schéma de la base".

 

Configurez-le comme sur l'image ci-dessous, sélection de toutes les tables ibf_ (vous pouvez cliquer sur tout sélectionner si votre base ne contient que les tables ibf), structure et données, ajouter des énoncés "drop table", transmettre (zippé, bzippé, gzippé suivant la disponibilité)

Options de la sauvegarde

 

Vous pouvez maintenant cliquer sur le bouton "Exécuter", après un temps très variable suivant les serveurs et la taille de votre base de données, une boîte de dialogue s'affiche vous proposant d'enregistrer un fichier. Ce fichier se nomme généralement nom_de_la_base.sql, l'extension .sql peut être remplacée par .zip, .gz ou .bz2 suivant le type de compression que vous aurez choisi en face de "Transmettre"

Enregistrer le fichier

 

 

Si vous ouvrez le fichier de la sauvegarde (pensez à le décompresser avec winzip si besoin est) avec un éditeur de texte genre wordpad vous verrez quelque chose comme ceci :

# phpMyAdmin MySQL-Dump

# version 2.2.6

# http://phpwizard.net/phpMyAdmin/

# http://www.phpmyadmin.net/ (download page)

#

# Serveur: localhost

# Généré le : Lundi 17 Mars 2003 à 11:24

# Version du serveur: 3.23.49

# Version de PHP: 4.2.0

# Base de données: `ipb1_1_1_fr`

# --------------------------------------------------------

 

#

# Structure de la table `ibf_admin_logs`

#

 

DROP TABLE IF EXISTS ibf_admin_logs;

CREATE TABLE ibf_admin_logs (

  id bigint(20) NOT NULL auto_increment,

  act varchar(255) default NULL,

  code varchar(255) default NULL,

  member_id int(10) default NULL,

  ctime int(10) default NULL,

  note text,

  ip_address varchar(255) default NULL,

  PRIMARY KEY  (id)

) TYPE=MyISAM;

 

#

# Contenu de la table `ibf_admin_logs`

#

INSERT INTO ibf_...

 

Petite explication de texte :

"DROP TABLE IF EXISTS ibf_admin_logs;" correspond aux énoncés "Drop Table" qui supprimera la table si elle existe

"CREATE TABLE ibf_admin_logs..." correspond à "structure" ce qui va recréer la table.

"INSERT INTO ibf_..." correspond à "données" ce qui insère les données dans la table.

 

Voilà pour la partie sauvegarde, si tout se passe bien ;) . Que peut il se passer d'autre ?

 

- phpmyadmin boucle plusieurs minutes sans rien me proposer

- j'obtiens un message d'erreur timeout

 

Dans ces cas, la base de données est trop importante pour votre serveur (limitations souvent imposées par votre hébergeur) il va falloir procéder par étapes, en choisissant à chaque fois quelques tables ibf seulement.

 

Les tables les plus grosses sont souvent ibf_messages et ibf_posts pour ces deux tables procédez en ne sélectionnant qu'une table. Vous obtiendrez donc plusieurs fichiers .sql attention à ne pas les écraser choisissez bien des noms de fichiers différents, le mieux étant de les suffixer nom_de_la_base_01.sql,nom_de_la_base_02.sql,nom_de_la_base_03.sql

 

Comment faire la restauration ?

 

Connectez-vous sur phpmyadmin.

Cliquez sur le nom de votre base de données en haut à gauche.

Descendez vers le formulaire "Afficher le schéma de la base".

Cliquez sur "Parcourir" pour aller chercher votre fichier de sauvegarde

Parcourir

Cliquez sur "Exécuter"

 

Au bout d'un temps toujours aussi variable suivant votre héberbeur et la taille de votre base de données, phpmyadmin vous affichera une message de ce type:

 

"Votre requête SQL a été exécutée avec succès :

Le contenu de votre fichier a été inséré. (nnnn Instructions)"

 

Voilà pour la restauration si tout se passe bien :D . Que peut il se passer d'autre ?

 

- j'obtiens un timeout

- j'obtiens "Votre requête SQL a été exécutée avec succès" mais rien ne semble avoir été restauré

- j'obtiens "Aucune requête SQL"

 

Les limites imposées par votre hébergeur, configuration de PHP et de phpmyadmin empêchent la restauration de votre base de données.

Que faire ? Il va falloir découper votre fichier de sauvegarde en plusieurs fichiers plus petits, vous pouvez décider de le faire à la main via un éditeur de texte ou alors en utilisant http://www.invisionboard.fr/downloads/DecoupeSQL_1.2.1.zip, application windows développée par Pascuser

 

Brève explication sur DecoupeSQL:

 

Lancez le programme :)

Via le petit explorateur en bas à gauche retrouvez votre fichier de sauvegarde

Réglez la taille des fichiers générés via le curseur actuellement entouré de rouge et positionné sur 500Ko, attention par défaut PHP n'accepte pas l'upload de fichiers supérieurs à 2Mo, il se peut que ce soit encore moins suivant comment votre hébergeur a configuré PHP.

Cliquez sur Découpage.

Options de DécoupeSQL

Le programme va générer autant de fichiers que nécessaire, ces fichiers se nomment généralement nom_de_votre_fichier_0000n.txt où n est un nombre croissant

 

Voici une nouvelle version de DecoupSQL, merci PascuserDecoupeSQL_V1.2.3.zip

 

Pour restaurer votre base procédez comme expliqué ci-dessus mais en procédant fichier par fichier, du premier au dernier l'ordre est important.

Edited by thewiseoldman

Share this post


Link to post
Share on other sites
thewiseoldman

Pour ceux qui ont la chance d'avoir un accès SSH ou TELNET, valable aussi pour easyphp.

 

Pour vous connecter sur votre serveur via SSH ou TELNET, nous recommandons puTTY

 

Comment faire la sauvegarde ?

 

Connectez vous sur votre site via puTTY ou via un autre programme.

Vous devez savoir où se trouve mysql sur votre serveur, voir la faq, les forums de votre hébergeur, au besoin contactez votre support technnique.

 

Voici un exemple des commandes à entrer pour sauvegarder votre base de données, les deux dernières commandes étant optionnelles puisqu'elles créent une archive compressée puis suppriment le fichier devenu inutile

/usr/local/mysql/bin/mysqldump -u mon_login -p ma_base > ma_sauvegarde.sql

une invite vous demandera votre mot de passe (celui de connexion à la base de données), entrez le puis appuyez sur "Entrée"

tar -czf ma_sauvegarde.tar.gz ma_sauvegarde.sql

rm ma_sauvegarde.sql

Attention "/usr/local/mysql/bin/" est le chemin vers 'mon' serveur mysql.

Il ne vous reste qu'à télécharger ce fichier vers votre disque dur via ftp.

 

Sous windows ouvrez l'invite de commande et déplacez vous dans le répertoire mysql/bin d'easyphp

cd program files

cd easyphp

cd mysql

cd bin

 

 

Comment faire la restauration ?

Uploadez le fichier de sauvegarde sur votre serveur via ftp s'il n'y est pas

Décompressez le si besoin est

tar -xzvf ma_sauvegarde.tar.gz
Attention avant de remonter les données il faudra supprimer les tables ibf via phpmyadmin.

DROP TABLE `ibf_admin_logs`, `ibf_admin_sessions`, `ibf_attachments`, `ibf_badwords`, `ibf_calendar_events`, `ibf_categories`, `ibf_contacts`, `ibf_css`, `ibf_emoticons`, `ibf_faq`, `ibf_forum_tracker`, `ibf_forums`, `ibf_groups`, `ibf_languages`, `ibf_macro`, `ibf_macro_name`, `ibf_member_extra`, `ibf_members`, `ibf_messages`, `ibf_moderator_logs`, `ibf_moderators`, `ibf_pfields_content`, `ibf_pfields_data`, `ibf_polls`, `ibf_posts`, `ibf_reg_antispam`, `ibf_rules`, `ibf_search_results`, `ibf_sessions`, `ibf_skin_templates`, `ibf_skins`, `ibf_stats`, `ibf_templates`, `ibf_titles`, `ibf_tmpl_names`, `ibf_topics`, `ibf_tracker`, `ibf_voters`;

 

Pour restaurer les données:

/usr/local/mysql/bin/mysql -u mon_login -p ma_base < /chemin/vers/ma_sauvegarde.sql

une invite vous demandera votre mot de passe (celui de connexion à la base de données), entrez le puis appuyez sur "Entrée"

rm /chemin/vers/ma_sauvegarde.sql

Share this post


Link to post
Share on other sites
thewiseoldman

J'ai tout essayé et ca ne fonctionne pas :) que faire ?

 

Alors vous serez peut être intéressé par ces deux scripts :

Pour la sauvegarde : http://www.invisionboard.fr/downloads/xtdu...p05modified.zip

Pour la restauration : http://www.invisionboard.fr/downloads/UqiqiModified.zip

 

Pour faire fonctionner ces deux scripts si register_globals est Off sur votre serveur modifiez les come expliqués ci-dessous :

pour récuperer les Variable _POST et _GET de xtdump et Uqiqi sans toucher au param register_globals il suffit de placer ceci
foreach($HTTP_GET_VARS as $gkeys=>$gvalues)
{ 
${$gkeys}=$gvalues; 
}
foreach($HTTP_POST_VARS as $pkeys=>$pvalues)
{ 
${$pkeys}=$pvalues; 
} 
en haut de xtdump.php juste apres define("MAX_EXECUTION_TIME",20); 

et en haut de uqiqi.php juste apres

Header('Cache-Control: no-cache');
Header('Pragma: no-cache');

 

 

Attention les deux sont indissociables et ne fonctionnent pas l'un sans l'autre.

 

Certains 'gentils' hébergeurs se proposent de remonter vos sauvegardes de base de donnée pour vous éviter de perdre des heures dans phpmyadmin, demandez leur très gentiment on ne sait jamais ;)

 

Comment utiliser xtdump

Via FTP créez un répertoire 'sauvegardes' par exemple, mettez 777 en permissions chmod sur ce répertoire, uploadez y ensuite xtdump

Via le navigateur internet appelez xtdump ex: http://www.tonsite.com/sauvegardes/xtdump05_en.php

 

Renseignez ensuite les informations de connexion à la base de données, ne cochez PAS "Save connexion (bon sang!) Parameters" et cliquez sur connect, si il ne vous affiche pas les tables de votre base de données et que vous êtes surs et certains des paramètres que vous avez fournis, alors c'est que votre serveur a register_globals à OFF pour PHP dans ce cas il faut faire la modification que j'ai indiqué ci-dessus.

 

Une fois connecté, cliquez sur la case tout en haut à gauche de Table name ce qui aura pour effet de sélectionner toutes vos tables, cliquez ensuite sur la case Send in gzip puis sur Save.

 

Le script va dumper les tables une à une, et la page va se rafraichir automatiquement pour éviter les timeouts, à la fin vous aurez en bas de page un lien vers la sauvegarde "Backup finished. A file is available to download at dump_nomdetabase.sql.gz", mais le mieux est de récupérer le fichier via FTP puis de l'effacer du FTP sinon quelqu'un d'autre pourrait le télécharger par internet. Je vous conseille si vous utilisez xtdump pour vos sauvegardes de protéger l'accès au répertoire 'sauvegardes' par un fichier .htaccess et .htpasswd

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.