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 28/03/2013 17:01:43

Lenka
Membre

Récupération d'une base sur un ancien disque dur

Bonjour,


J'utilisais une base PostGreSQL 8.2 sur un PC (en XP 32 bits) avec une station météo.

La carte mère a laché. sad


J'ai récupéré le disque dur (avec PostGreSQL 8.2 et la base) et l'ai installé dans mon nouveau PC (W8 64 Bits) en disque K:.

J'ai installé une nouvelle version du soft pour la station (avec PostGreSQL 9.3), un nouveau driver, et PgAdmin.

Tout fonctionne correctement.


Je souhaite récupérer l'historique (les données qui sont dans la base sur le disque K:)

Comment faire ? roll


D'avance, merci de votre aide !

Hors ligne

#2 28/03/2013 21:42:10

rjuju
Administrateur

Re : Récupération d'une base sur un ancien disque dur

Bonjour,

je suppose que  vous voulez parler de postgresql 8.3 ou 9.2, la version 9.3 n'étant toujours pas stable. Si le schéma de données n'a pas changé avec la nouvelle version de l'application, il faut d'abord installer un postgres version 8.2, en lui définissant le répertoire data vers celui de votre disque K (et en modifiant éventuelle le port d'écoute). Vous pourrez alors exporter vos données (pg_dump.exe ou pg_dumpall.exe) pour les restaurer sur la la nouvelle base (pg_restore.exe ou psql.exe)

Hors ligne

#3 29/03/2013 12:02:54

Lenka
Membre

Re : Récupération d'une base sur un ancien disque dur

Bonjour,


et merci pour votre réponse.


Sur l'ancien disque dur (K:), c'est PostGreSQL 8.2.4 avec PgAdminIII 1.6.3 (logiciels fournis avec la station météo).
La base contient l'historique que je souhaite récupérer.

Sur le nouveau PC (W8 64 bits), sur C:, c'est PostGreSQL 9.2.2 (64 bits) avec PgAdminIII 1.16.1 (Driver 64 bits et logiciels fournis par l'éditeur du soft de la station). La station y est connectée.
La base reçoit tous les jours de nouvelles données.


Puis-je lancer PostGres.exe directement du disque K: ?
Dois-je, au préalable, modifier certains paramètres de la config pour éviter les conflits avec la version 9.2.2 qui tourne en permanence ?
Ou bien, est-il préférable que je fasse les manips sur un autre PC (copie du répertoire "Data", install de PostGreSQL, export des données) ?
Je préfère la dernière solution, j'ai eu quelques difficultés à l'installation sur le nouveau PC et j'appréhende de créer des conflits...


Comment fait-on l'export ?
J'ai testé sur un autre PC la commande pg_dump.
Je ne connais pas la syntaxe de cette commande !
Ca me demande un mot de passe mais ça utilise mon user Windows... (vu dans la log)
L'accès est donc refusé.


Peut-on faire cet export avec PgAdmin ?
En me positionnant sur la base, dans "Outils", il y a "Sauvegarde".
Peut-on faire l'export avec ?
(Je préfère utiliser l'interface graphique que les lignes de commandes...)

Et quel est le format (Compress, Tar, Plain) et les paramètres à utiliser (cases à cocher) ?

Et ensuite, pour l'import, même question :
Si on peut utiliser PgAdmin, quels paramètres dans "Restauration" ?


Merci d'avance.

Dernière modification par Lenka (29/03/2013 12:07:12)

Hors ligne

#4 29/03/2013 12:08:37

rjuju
Administrateur

Re : Récupération d'une base sur un ancien disque dur

Vous pouvez lancer postgres.exe directement depuis le disque K. Le seul paramètre à changer obligatoirement est le port, pour qu'il soit différent de celui en 9.2 (5432 par défaut). Vous pouvez lancer postgres directement en ligne de commande, par exemple :

k:\program files\postgres\bin\postgres.exe -D ..\data\

Si cela vous rassure vous pouvez faire la même manip en copiant les données sur un autre pc ou même un machine virtuelle.

Pour l'export, il faut le faire avec les binaires de la 9.2. Si les utilisateurs sont déjà présents, il suffit de sauvegarder la base voulue, ou les tables voulues et cela peut se faire avec pgAdmin. Si vous choisissez le format Custom (ou compress à priori ?), vous pourrez le restaurer avec pgAdmin sur le nouveau serveur.

Hors ligne

#5 29/03/2013 17:11:43

Lenka
Membre

Re : Récupération d'une base sur un ancien disque dur

Merci pour vos précisions !

J'y suis parvenu, non sans mal....


Je ne suis pas très doué....


J'ai mis 5430 comme port (dans le fichier "postgresql.conf" du disque K:)

En lançant la commande, j'ai obtienu ce message :
K:\Program Files\WeatherProfessional\database\bin>postgres.exe -D ..\data\
2013-03-29 12:17:35 PANIC:  could not open control file "global/pg_control": Permission denied
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.


Pourtant le fichier "pg_control" est bien dans "K:\Program Files\WeatherProfessional\database\data\global"

Il m'a fallu changé les permissions.

Mais à chaque tentative, le problème provenait d'un nouveau fichier...


J'ai fini par copier l'intégralité via un support physique (pour le mettre sur un autre PC)
J'ai pu lancer le service sur le port 5430 en arrêtant celui qui tournait sur le port 5432.


La sauvegarde n'a signalé aucune erreur.
La restauration s'est bien passée !


Merci encore !
big_smile

Hors ligne

#6 29/03/2013 17:28:53

rjuju
Administrateur

Re : Récupération d'une base sur un ancien disque dur

Oui effectivement j'ai oublié de préciser qu'il faut lancer l'invite de commande (ou le fichier bat) en tant qu'utilisateur système postgres, afin de se retrouver dans le comportement "standard".

Bonne nouvelle en tout cas smile

Hors ligne

Pied de page des forums