Essai en vue d'une recupération
syracine/ = 23 Août, 2007 - 19:47
Bonjour,
Je ne suis pas un spécialiste de PostgreSQL. Mais j'ai déjà fait un backup simple de PostgreSQL 7.4 et transférer le contenu d'une BD dans la version 8.1 de PostgreSQL avec PostGIS, dans des conditions optimales. J'ai besoin de savoir certaines informations.
Est-ce que des requĂȘtes SQL provenant d'utilisateurs connectĂ©s ou des commandes d'administration tels que VACCUUM Ă©taient en cours au moment du crash?
Est-ce que le serveur PostgreSQL fonctionne encore? Quel type de crash s'agit-il: panne électrique, problÚme matériel (barette de mémoire défectueuse, disque dur qui lùche, etc.), problÚme logiciel (l'ordi a gelé, ne répond plus, dépassement de la mémoire, virus...)
Sous quelle systÚme est installé PostgreSQL: Linux? Windows? Cygwin ou l'exécutable compilé sous Mingw (depuis la version 8)? Quel est la version de PostgreSQL?
Y a-t-il des extensions, tel PostGIS? Quelle version?
Sache que, d'aprÚs mes lectures, il existe 3 méthodes pour réaliser un backup de PostgreSQL: création d'un fichier SQL avec pg_dump, pg_dumpall (recommendé); sauvegarde des fichiers physiquement présents sur le disque dur; et récupération par les logs (journaux) d'un moment X de la BD (c'est ce que j'ai cru comprendre?) Je connais les 2 premiÚres méthodes, mais pas la troisiÚme.
Quel est ton niveau de connaissance de PostgreSQL? débutant, intermédiaire, expert?
D'aprÚs ta question, tu as essayé la derniÚre méthode, la plus compliquée. Si tu es un expert et que tu tiens mordicus à ta méthode, je ne peux pas t'aider. Va sur le forum anglais de PostgreSQL www.postgresql.org et pose ta question.
Si tu es un utilisateur plus ou moins expérimenté de PostgreSQL, qu'il s'agit de ton premier crash et que tu es un peu perdu dans les commandes de PostgreSQL, je peux t'aider avec d'autres méthodes.
Dans l'attente de réponses
Cordialement
[ Vous devez
vous connecter pour poster des commentaires ]
restore_command suite
bilone/ = 27 Août, 2007 - 11:50
Bonjour syracine,
Et merci pour ta réponse.
Concernant les miennes par rapport Ă tes questions, voila la situation :
Le crash est intervenu suite Ă une coupure de courant.
Lâapplication (en relation avec PostgreSQL) ne fonctionnant plus, lâutilisateur Ă eu la bonne idĂ©e ;) de rĂ©installer PostgreSQL !! ⊠Ce qui a Ă©crasĂ© la base !
Bien que ces donnĂ©es soient « vitales » pour lâentreprise, aucune procĂ©dure rĂ©guliĂšre de sauvegarde nâĂ©tait en place. La derniĂšre (sauvegarde) date de plus de six mois (je sais, ça commence plutĂŽt mal !).
Heureusement (?), nous avons retrouvĂ©, dans le rĂ©pertoire des donnĂ©es du groupe, un rĂ©pertoire « _data » (surement crĂ©Ă© par Postgre lors de la rĂ©installation) contenant les infos de lâancienne base et notamment :
- le répertoire « base » contenant les infos des tables
- le répertoire « pg_xlog » contenant les journaux
Question 1 : Peut-on rĂ©tablir une base Ă partir des infos du rĂ©pertoire « base » (fichiers dĂ©crivant les tables) ? Est-ce que câest la deuxiĂšme mĂ©thode que tu dĂ©cris («sauvegarde des fichiers physiquement prĂ©sents sur le disque dur ») ? Si oui, nous sommes SAUVĂ©S !
Dans un premier temps, câest ce que nous avons tentĂ© (en copiant les fichiers du rĂ©pertoire « base » dans la nouvelle)⊠Sans succĂšs.
Nous nous sommes alors retournés vers la procédure de « recovery » (exploitation des journaux WAL) via la commande restore_command dans le fichier recovery.conf.
Mais les fichiers log nous indiquent lâerreur suivante :
«
2007-08-24 16:32:55 LOG: database system was shut down at 2007-08-24 16:32:01 Paris, Madrid
2007-08-24 16:32:55 LOG: starting archive recovery
2007-08-24 16:32:55 LOG: restore_command = "copy C:\archives\0000000100000000000000BC "%p""
2007-08-24 16:32:56 LOG: restored log file "00000001.history" from archive
2007-08-24 16:32:56 PANIC: syntax error in history file: \Ă
2007-08-24 16:32:56 HINT: Expected a numeric timeline ID.
»
En effet, nos fichiers commencent par les charactÚres « \à ».
Mais, jâai Ă©galement dâautres fichiers WAL sur un autre ordinateur (qui sont Ă priori bons !... Donc aucun rapport avec le crash) qui commence Ă©galement par les mĂȘme caractĂšres, et qui crĂ©es la mĂȘme erreur ! Q2 : POURQUOI ?
Indices ( ?) :
Sur ces deux ordinateurs (celui ayant subi le crash et lâautre, celui des fichiers WAL), lâinstallation de postgre a Ă©tĂ© faite en 2 temps : tout dâabord la 8.2 puis la 8.0.0-rci.
Question 3 : Est-ce que notre commande restore_command est invalide (elle sâexĂ©cute pourtant correctement sur dâautres fichiers WAL testĂ©s) ? ⊠Ou lâerreur pourrait-elle provenir dâun « mĂ©lange » Ă©ventuel des deux versions ?
Question 4 : Aurais-tu dâautres solutions ?
Merci.
[ Vous devez
vous connecter pour poster des commentaires ]
re
Guillaume Lelarge/ = 28 Août, 2007 - 10:07
Comme expliqué sur http://www.developpez.net/forums/showthread.php?t=400349 , il n'est pas possible d'utiliser restore_command si tu n'as pas fait 1. une sauvegarde de base façon PITR (donc avec pg_start_backup...) 2. une sauvegarde de *tous* les fichiers WAL générés depuis cette sauvegarde.
Dis autrement, je pense que tu ne pourras rien restaurer par les fichiers WAL.
Autre chose, il est trĂšs Ă©tonnant que PostgreSQL ait acceptĂ© de se rĂ©installer sur un rĂ©pertoire systĂšme oĂč des donnĂ©es sont dĂ©jĂ prĂ©sentes. Donc soit votre utilisateur a indiquĂ© un autre rĂ©pertoire, soit le rĂ©pertoire des donnĂ©es n'existait plus (soit Ă cause du systĂšme d'exploitation (je pense Ă un fsck qui aurait supprimĂ© des fichiers suite Ă l'arrĂȘt brutal), soit Ă cause de l'utilisateur).
--
Guillaume.
[ Vous devez
vous connecter pour poster des commentaires ]