PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 21/07/2014 16:20:00

mary
Membre

Récupérer une base de données non sauvegardée à partir d'un disque dur

Bonjour,

j'ai changé le disque dur de mon ordinateur sans faire de sauvegarde (stupidement...) de la base de données que j'avais créee avec postgresql dans pgAdmin3. J'ai mon ancien disque dur où était ma base de données mais je n'arrive pas à la transférer sur mon nouvel ordinateur. J'ai essayé de copier-coller le fichier Data>base (qui fait 6Go, probablement la taille de ma base de données) dans le postgres de mon nouvel ordinateur mais cela n'a pas marché. Est-ce que quelqu'un pourrait me mettre sur la piste pour récupérer ma base de données?

Merci d'avance

Hors ligne

#2 21/07/2014 19:05:55

gleu
Administrateur

Re : Récupérer une base de données non sauvegardée à partir d'un disque dur

Il faut récupérer tout le répertoire data et avoir la même version majeure de PostgreSQL. Si cela ne fonctionne pas malgré cela, merci de donner le message d'erreur.


Guillaume.

Hors ligne

#3 23/07/2014 10:40:49

mary
Membre

Re : Récupérer une base de données non sauvegardée à partir d'un disque dur

Merci de votre réponse.
J'ai donc copié le dossier C:\Program Files\PostgreSQL\9.3\data de mon vieux disque dur et remplacé le dossier data de mon nouvel ordinateur, en m'assurant qu'il s'agissait bien de la même version de PostgreSQL que j'utilisais. J'ai ensuite ouvert pgAdmin mais je ne récupère pas la base de données que je souhaite. Je n'ai pas de message d'erreur et mes autres bases de données sont toujours présentes. Ai-je besoin de faire autre chose ?
Merci beaucoup de votre aide.

Hors ligne

#4 23/07/2014 10:59:45

ruizsebastien
Membre

Re : Récupérer une base de données non sauvegardée à partir d'un disque dur

Bonjour,

Avez vous relancé le service postgres ?
Les autres bases de données sont-elles dans un autre répertoire que C:\Program Files\PostgreSQL\9.3\data ?


Cordialement,

Sébastien.

Hors ligne

#5 23/07/2014 23:19:02

mary
Membre

Re : Récupérer une base de données non sauvegardée à partir d'un disque dur

J'ai réussi à stopper le serveur en utilisant pg_ctl.exe, le log dans postgresql.conf est bien éteint et pgAdmin ne peut pas se connecter. Par contre je n'arrive pas à relancer le serveur en utilisant pg_ctl.exe ou via le terminal en mettant : \bin\pg_ctl.exe start \data. J'ai le message d'erreur suivant : "pg_ctl is not recognized as an internal or external command". De plus, lorsque j'essaye d'ouvrir pgAdmin, j'ai le message suivant : "pgadmin password authentication failed for user postgres"... Avez-vous une solution à mon problème ?
Merci.

Hors ligne

#6 24/07/2014 09:07:28

ruizsebastien
Membre

Re : Récupérer une base de données non sauvegardée à partir d'un disque dur

bonjour,

Ah la la...Windows... ce serait tellement plus simple avec un système linux.

La bonne commande pour démarrer avec pg_ctl.exe est la suivante :
pg_ctl.exe -D \data start
ou même : pg_ctl.exe -D \data restart (pour être sur que postgres est bien arrêté avant de redémarré.
\data est évidemment votre répertoire de démarrage (celui qui contient le postgresql.conf).
-------
le binaire pg_ctl.exe ne semble pas être dans votre PATH.
Mettez-vous directement dans son répertoire.
-------


Pour le 2ème message d'erreur c'est sans doute un problème avec le mot de passe du user postgres. Le mieux serait de modifier votre fichier pg_hba.conf, il faudrait être en mode "trust".
Pouvez-vous nous donner le contenu de votre fichier ?

Cordialement,

Dernière modification par ruizsebastien (24/07/2014 09:16:24)


Cordialement,

Sébastien.

Hors ligne

#7 24/07/2014 10:30:20

mary
Membre

Re : Récupérer une base de données non sauvegardée à partir d'un disque dur

Bonjour,

En faisant : pg_ctl.exe -D \data start voilà le message que j'ai : "postgres cannot access the server configuration file /data/postgresql.conf: No such file directory" (alors qu'il est là).

Et lorsque j'essaye : pg_ctl.exe -D \data restart, j'ai le message suivant : "pg_ctl: PID file "/data/postmaster.pid" does not exist
is server running?
starting server anyway
pg_ctl: could not read file "/data/postmaster.opts"".

Pourtant tous les fichiers sont bien présents.

----

Voici le contenu du fichier pg_hba.conf :

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all        all        0.0.0.0/0        md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5


Merci beaucoup de votre aide,
Cordialement.

Hors ligne

#8 24/07/2014 10:49:20

ruizsebastien
Membre

Re : Récupérer une base de données non sauvegardée à partir d'un disque dur

bonjour,

il ne faut pas oublier d'indiquer le nom du lecteur dans votre commande (chemin complet vers postgresql.conf) :
pg_ctl.exe -D "C:\data" restart
(ne pas oublier les guillemets)
----
vérifier les droits sur les répertoires et les fichiers (droits full pour postgres)
----
pour le pg_hba.conf :
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all        all        0.0.0.0/0        trust
# IPv6 local connections:
host    all             all             ::1/128                 trust


Cordialement,

Sébastien.

Hors ligne

#9 24/07/2014 11:32:28

mary
Membre

Re : Récupérer une base de données non sauvegardée à partir d'un disque dur

Merci.
Nous avons changé pg_hba.conf et changeant les droit et permissions sur les répertoires et les fichiers.
La ligne de commande a l'air de fonctionner : pg_ctl.exe -D "C:\data" restart, mais retour à mon problème initial, càd je ne récupère pas ma base de données dans pg_Admin.
Voici le message que j'ai :

pg_ctl: PID file "C:\Program Files\PostgreSQL\9.3\data/postmaster.pid" does not exist
Starting server anyway
server starting
C:/Program Files/PostgreSQL\9.3\bin> 2014-07-24 11:01:34 CEST LOG: could not bind d IPv6 socket: No error
2014-07-24 11:01:24 CEST HINT: IS another postmater already running on port 5432? If not, wait a few seconds and retry.
2014-07-24 11:01:34 CEST LOG: could not bind IPv4 socket. No error
2014-07-24 11:01:34 CEST Hint: Is another postmaster already running on 5432? If not, wait a few seconds and retry.
2014-07-24 11:01:34 CEST WARNING: could not create listen socket for "*"
2014-07-24 11:01:34 CEST FATAL: could not create any TCP/IP sockets

Hors ligne

#10 24/07/2014 14:30:37

ruizsebastien
Membre

Re : Récupérer une base de données non sauvegardée à partir d'un disque dur

En fait  je pense que postgresql attend les fichiers dans C:\Program Files\PostgreSQL\9.3\data (ce qui correspond d'après ce que vous disiez plus haut à l'emplacement précédent de votre ancien disque).
Si vous aviez copié votre data sauvegardé dans c:\data (c'est bien ça ?), ça ne pourra pas marcher.
Il faut recréer l’arborescence initiale (celle de l'ancien disque) et y mettre les fichiers de l'ancien postgresql.
J'espère que mon explication n'est pas trop confuse.


Cordialement,

Sébastien.

Hors ligne

#11 25/07/2014 11:08:59

mary
Membre

Re : Récupérer une base de données non sauvegardée à partir d'un disque dur

Bonjour,
Non, je pense que j'ai bien reconstruit l'arborescence initiale. Nos données sont dans C:\Program Files\PostgreSQL\9.3\data. Cependant je n'arrive pas à supprimer le fichier data. Je peux seulement merger l'ancien avec le nouveau. Par ailleurs, j'ai essayé de stopper postgreSQL (au cas où le serveur m'empêcherait de supprimer le fichier data) mais la ligne
pg_ctl.exe -D "C:\Program Files\PostgreSQL\9.3\data" stop ne fonctionne plus. Le serveur ne se stoppe pas non plus en lançant pg_ctl.exe (dans bin, pas via le terminal).
Meci beaucoup de votre patience !

Hors ligne

#12 25/07/2014 14:37:57

ruizsebastien
Membre

Re : Récupérer une base de données non sauvegardée à partir d'un disque dur

et que donne l'arrêt du service via la gestion des services windows ?


Cordialement,

Sébastien.

Hors ligne

#13 25/07/2014 15:19:54

mary
Membre

Re : Récupérer une base de données non sauvegardée à partir d'un disque dur

aucune tâche n'est possible.

Hors ligne

#14 25/07/2014 16:03:05

ruizsebastien
Membre

Re : Récupérer une base de données non sauvegardée à partir d'un disque dur

désolé, difficile de vous aider à distance sans avoir la main sur la machine.
Je peux juste vous conseiller de désinstaller proprement postgres et de le réinstaller, de créer votre instance avec initdb, d’arrêter le service et seulement ensuite d'écraser le data par votre data sauvegardé.
Il faut s'assurer de 3 choses :
- arborescence identique
- service arrêté
- data contient tous les fichiers nécessaires (conf, fichiers de données, xlog, etc...)

Bon courage.


Cordialement,

Sébastien.

Hors ligne

Pied de page des forums