PDA

Afficher la version complète : Réintégrer un topic effacé via un backup mysql



mistera
07/02/2010, 12h47
Bonjour tout le monde,

J'ai un petit problème. Un topic de mon forum a été effacé. J'ai des backups donc je peux récupérer une partie du topic en question. Toutefois, en me baladant dans le base de données sauvegardée, c'est plutôt le bazar.... J'ai l'impression qu'il y a des "bouts" un peu partout. Existe t'il une méthode simple pour récupérer un topic et ses messages à partir d'une sauvegarde mysql ?

merci d'avance

Ombre
07/02/2010, 15h34
Bonjour,

Oui cela est faisable, bien entendu commence par faire une nouvelle sauvegarde en cas ou tu endommagerais ta db en cas de fausse manipulation.



Pour récupérer un sujet et ses messages si il y en a, il te faut pour commencer une sauvegarde qui contient se message avant qu'il est était supprimé (logique me diras tu :)), donc avoir enregistré la totalité de ta dB ou une partie, mais les tables post et thread doivent être présentes au complet.
Avoir l'ID du sujet ou le titre exacte du message, ce qui facilitera la recherche dans le fichier .sql.
Mon exempel que je vais te montré dans ce sujet à était effectué avec une sauvegarde faite avec le script MySqlDumper, la structure peu différé selon le script je pense.


Selon la sauvegarde effectué compressé ou non, ouvre l'archive si elle est compressé grâce à winrar par exemple qui n'aura aucuns mal à décompresser l'archive sayant comme extension (.gz).

Une fois le fichier (.sql) extrait tu peux l'ouvrir avec un logiciel du type notepad, j'ai une préférence pour notepad++, qui est de loin plus évolué.

Attention dans mon exemple j'utilise un sauvegarde effectué par MySqlDumper et le préfixe de ma base de données est vbtest400, tiens en compte car je ne le signalerais plus.

Tu vas dans ce fichier récupéré les lignes correspondants aux ce sujet (messages inclus) en recherchent dans la partie


--
-- Data for Table `vbtest400_thread`
---En dessous de cela j'ai tous mes threads, donc tous les titres de mes sujet et les infos des colonnes de la table thread, je commence par rechercher soit l'ID sois le titre du sujet, pour cela j'effectue uen recherche avec le mode recherche du logiciel que j'utilise (notepad++) en tapent ctrl+f (valable sur la plus par des logiciels et autres navigateur) de mon coté je sais que l'ID du sujet est le 10 dans mon exemple, et que le titre est "Message test pour suppression", je lance donc ma recherche qui pointes sur cela:


INSERT INTO `vbtest400_thread` (`threadid`,`title`,`prefixid`,`firstpostid`,`last postid`,`lastpost`,`forumid`,`pollid`,`open`,`repl ycount`,`hiddencount`,`deletedcount`,`postusername `,`postuserid`,`lastposter`,`lastposterid`,`dateli ne`,`views`,`iconid`,`notes`,`visible`,`sticky`,`v otenum`,`votetotal`,`attach`,`similar`,`taglist`,` keywords`) VALUES ('10','Message test pour suppression','','14','16','1265545389','2','0','1' ,'2','0','0','Ombre','1','Ombre','1','1265545245', '0','0','','1','0','0','0','0','','ombre, test','ombre, test,message,réponse,cotennus,test,pour,supression ');Si tu remarque bien les deux première colonnes correspondent à l'ID du sujet et le titre du sujet:


`threadid`,`title` donc il me suffit de regarder sur la ligne pointé si c'est le bon sujet, je me dirige donc plus loin sur la ligne afin d'être sur que ça soit la bonne après le mot "VALUES" et je vois celà:


VALUES ('10','Message test pour supression',Ce qui me certifie que c'est le bon sujet visé pour sa restauration, je vais donc recopier la totalité de la ligne, et me dirigé sur phpmyadmin, de mon espace d'hébergement et inclure cette ligne dans le champ "Exécuter une ou des requêtes sur la base vbtest400:" qui se trouve dans l'onglet "SQL", il vous suffit de cliquer sur la table thread pour voir ceci en capture:


12355


Sur la capture ci dessous j'ai entouré l'ID de mon sujet et le titre du sujet, et je clique sur le bouton "Exécuter" après avoir vérifié que j'importe bien cela ou il faut:


12356


Si tous c'est bien apssé, j'aurais un message en vert comme celui ci, il arrive des fois qu'il n'apapraisse pas, ce n'est pas important, mais dés lors que l'exécution de la commande est mauvaise, alors un message en rouge apparaitra forcément, capture quand tous c'est bien passé:


12357


L'exécution de la commande thread c'est bien déroulé, dés lors je peux vérifié sur mon forum que le sujet à ré apparu dans mon forumdisplay, il est fort possible qu'une mise à jour de compteur soit nécessaire des fois pour les threads (sujets), passons maintenant à la partie post, qui contient le contenus de mon sujet et des messages.

PAreil que plus haut: dans ce fichier récupéré les lignes correspondants aux ce sujet (messages inclus) en recherchent dans la partie


--
-- Data for Table `vbtest400_post`
--MAis cette fois ci de vais devoir recherche qu'à partir d'une seule colonne qui est "threadid" qui correspond à tous le contenu de mon sujet et de ses messages si il y en a, je vais donc copier toutes les lignes qui on comme "threadid" le 10 dans mon exemple comme ID, ses ligne sont pour moi:


INSERT INTO `vbtest400_post` (`postid`,`threadid`,`parentid`,`username`,`userid `,`title`,`dateline`,`pagetext`,`allowsmilie`,`sho wsignature`,`ipaddress`,`iconid`,`visible`,`attach `,`infraction`,`reportthreadid`) VALUES ('14','10','0','Ombre','1','Message test pour supression','1265545245','Contenus du sujet','1','1','127.0.0.1','0','1','0','0','0');
INSERT INTO `vbtest400_post` (`postid`,`threadid`,`parentid`,`username`,`userid `,`title`,`dateline`,`pagetext`,`allowsmilie`,`sho wsignature`,`ipaddress`,`iconid`,`visible`,`attach `,`infraction`,`reportthreadid`) VALUES ('15','10','14','Ombre','1','','1265545290','Coten nus du message 1 en réponse','1','1','127.0.0.1','0','1','0','0','0');
INSERT INTO `vbtest400_post` (`postid`,`threadid`,`parentid`,`username`,`userid `,`title`,`dateline`,`pagetext`,`allowsmilie`,`sho wsignature`,`ipaddress`,`iconid`,`visible`,`attach `,`infraction`,`reportthreadid`) VALUES ('16','10','14','Ombre','1','','1265545389','Conte nus du messages 2 en réponse','1','1','127.0.0.1','0','1','0','0','0'); J'ai trouvé 3 ligne correspondant à l'ID de mon "threadid" je les copies donc mais cette fois dans la table "post" de ma DB de la même façon que la table thread, je vais donc abrégé mes explications, voici la capture:


12358

12359


Voila j'ai maintenant fini et récupéré mon sujet et ses 2 messages, par contre impossible de récupéré un pièce jointe si elle était stocké dans la base de données, car les pièces jointes sont supprimées dés lors que l'on utilise la suppression physique.

J'espère que cela t'aidera ainsi que d'autres.

mistera
07/02/2010, 20h20
ca c'est du support !

merci pour tout le temps que tu as passé pour ta réponse, j'imagine qu'elle en aidera bien d'autres et je me dis que ca vaudrait le coup qu'elle soit sauvegardée dans les tuto même

merci beaucoup ombre :)

Ombre
07/02/2010, 21h19
De rien, bonne continuation.

Sujet, déplacé, le sujet étant fonctionnel sur tous les vb j'ai opté pour le mettre ici de façon générale, vu que le point commun du forum est la sauvegarde.

facile
27/02/2010, 20h20
merci ombre tres utile

Lo'
02/03/2010, 10h00
ca c'est du support !
+1 comme d'habitude :delicious: