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 Re : Général » Divers problèmes concernant la restauration et la sauvegarde » 16/12/2011 20:53:17

Bon sang je me suis complètement gourer de rubrique! @gleu, d'avance je m'excuse. Merci de déplacement ce post ou il faut!

#2 Général » Divers problèmes concernant la restauration et la sauvegarde » 16/12/2011 20:45:02

afrofip
Réponses : 3

Bonjour
J'aimerais exposer divers problèmes que j'ai rencontré concernant la restauration et la sauvegarde des bases de données sur PostgreSQL.

PROBLEME 1:

     J'ai sauvegardé une base de donnée au format compress (option -F c) à une date donnée. Quelques jours plus tard, par erreur, plusieurs données sont supprimées dans la base. J'essaye alors de faire une restauration de la base à partir du fichier crée lors de la dernière sauvegarde.

1°)      lorsque j'execute ce code:

pg_restore -h localhost -p 5432 -U postgres -d myBase D:\sauvegarde.backup

je reçois plusieurs message d'erreur m'indique que certaines données existent déjà dans la base. Normal, puisque la base contient encore des données qui étaient présentent au moment de la sauvegarde. Par contre, je le rends compte qu'aucune donnée n'est ajoutée! La base n'est pas restaurée.

2°) lorsque j'exécute ce code: 

pg_restore -h localhost -p 5432 -U postgres -c -d myBase D:\sauvegarde.backup

, c'est à dire le premier code avec l'option -c (clean) en plus. La requête s'execute, je n'ai aucun message d'erreur et la base de donnée est restaurée.

     Est-ce qu'on peut conclure que pour restaurer une base de données qui contient encore des données présente dans le fichier de sauvegarde, il faut d'abord la nettoyer? N'y aurait-il pas un moyen de faire en sorte que la restauration ignore les données déjà existe et ne "complète" que celles qui manquent?



PROBLEME 2:

     Toujours sur le même ordinateur et le même serveur.A partir du client pdAdmin III, j'ai sauvegardé ma base de donnée au format PLAIN. Mais lorsque j'essaye de restaurer à partir du fichier sauvegarder, le bouton "OK" n'est pas actif. Par contre, lorsque j'essaye de restaurer à partir un fichier au format COMPRESS, le bouton s'active! Même si lorsque je lance la restauration, je rencontre le problème 1 tant que j'ai n'ai pas coché l'option "nettoyer avant la restauration"

Peut-on conclure que pg_admin n'admet des restaurations qu'au format COMPRESS?



PROBLEME 3:

     Sur un tout autre ordinateur, j'ai essayé de faire un pg_dumpall pour sauvegarder tout le serveur. J'utilise ce code:

pg_dumpall -h localhost -p 5432 -U postgres -W -d myBase D:\sauvegarde.backup

Lorsque je l'execute, On me demande le mot de passe. Je rentre celui de postgres (super-utilisateur), puisque c'est lui que j'ai choisi dans l'otion -U. Mais après un certain temps, je reçois le message d'erreur selon lequel l'accès à la base de donnée template 1 a été refusé. Pourtant, lorsque j'exécute le même code en distant sur un autre poste (je remplace juste "localhost" par l'adresse ip de l'ordinateur où ça a foiré), le pg_dumpall se déroule à merveille!

Quelqu'un aurait-il une piste d'explication?

#3 Re : Général » Transfert d'une base de donnée d'un ordinateur perso vers un serveur » 15/12/2011 16:52:52

Salut
Non, rien n'a été restaurée dans la base postgres. Celle-ci affiche toujours 0 tables (je n'y ai jamais touché).
Par contre, j'ai modifié ajouté la base de donnée dans la commande psql. Mais rien n'y fait. Toujours aucune donnée ajoutée. En fait, pendant l'execution de la commande, il y a des erreurs, du genre "telle contrainte existe déjà"... Mais ça me surprend qu'il y ait des erreurs de ce genre, puisse que lors du dumpall, j'ai ajouté l'option -c. Il devrait donc suprimer la base de donnée avant de la recréer! Voici les codes mis à jour:

Sauvegarde:
pg_dumpall -h 10.242.109.25 -W -U postgres -p 5432   -c  > D:\Sauvegarde.backup

restauration:
psql -h localhost -W -U postgres -p 5432 MyDataBase < D:\Sauvegarde.backup

#4 Re : Général » Transfert d'une base de donnée d'un ordinateur perso vers un serveur » 15/12/2011 14:47:19

@gleu, bien compris (la remarque et la réponse).
@rjuju, je parle du compte de connexion à la base de donnée.
Les parties de la documentation que tu mentionne n'indiquent pas comment automatiser la sauvegarde...

Mais j'ai un problème plus grave:

Comme je l'ai dis plus haut, je sauvegarde les base de données avec la code suivant, tapé dans l'invite de commande:
pg_dumpall -h 10.242.109.25 -W -U postgres -p 5432    > D:\Sauvegarde.backup
Ensuite, je charge les bases de données sur mon ordinateur avec le code:
psql -h localhost -W -U postgres -p 5432 < D:\Sauvegarde.backup

Seulement, mais quand je vérifie ma base Postgresql, je me rendre compte qu'aucune de donnée n'a été copiée. Est-ce que les codes que j'utilise sont bons?

J'ai une question de plus. En ajoutant l'option -c dans le pg_dumpall, et en utilisant le fichier généré pour la restauration, est-ce que toutes les bases de données de mon ordinateur perso seront supprimées (y compris celle qui n'était pas présente sur le serveur dont les données ont été récupérées par le dumpall)

#5 Re : Général » Transfert d'une base de donnée d'un ordinateur perso vers un serveur » 15/12/2011 13:43:16

Bonjour à tous.
Je n'ai pas jugé utile de créer une nouvelle discussion, puisse que le problème que je vai poser concerne le même projet. Les précédents post vous mettrons donc brièvement dans le contexte.
Je suis au terme du projet, et maintenant, j'aimerais mettre en place la partie sauvegarde et restauration de l'application. Ce que je crois savoir:
1°) pg_dump permet de sauvegarder une base de donnée. Mais pas les rôles.
2°)pg_restore permet de restaurer une base de donnée.
3°)pg_dumpall permet de sauvegarder toutes les bases de données d'un serveur ainsi que les rôles.
3°)pg_sql est le seul moyen de restaurer une sauvegarder faite avec pg_dumpall.

Je souhaitais récupérer les base de données sur le serveur distant pour les restaurer sur mon ordinateur perso (avec tous les roles de connexion inclus). A cet effet, j'ai utilisé pg_dumpall pour copier les données du serveur distant.pg_dump -h 10.242.109.25 -W -U postgres -p 5432   > D:\Sauvegarde\backup.dump

Maintenant, je souhaite les restaurer sur mon ordinateur. Je vai utiliser le code suivant, tapé dans l'invide de commande windows: psql -h localhost -W -U postgres -p 5432  -c D:\Sauvegarde\backup.dump

Question
1°) est-ce que le mot de passe du compte postgres de mon ordi perso sera conservé? Sinon, comment faire pour que ça le soit?
3°) est-ce qu'il est possible de faire l'opération depuis pgAdminIII (dans le menu" outils" je ne vois pas de choix du genre: restauration globale)
2°) J'aimerais ensuite automatiser l'opération de sauvegarde de donnée (ET de vaccum). Sachant que je suis ne suis pas informatien et que je suis débutant sur postgres, quels sont les outils sur lesquels je dois me documenter pour y arriver. (Avec un petite ligne d'explication sur la fonction des outils que vous proposez, s'il vous plait).

Merci d'avance!

#6 Re : Général » Transfert d'une base de donnée d'un ordinateur perso vers un serveur » 07/10/2011 17:59:02

Bonjour à tous.

Voici l'épilogue (mitigée) à mon problème.
J'ai lancé initdb.exe en invite de commande et j'ai reçu comme message d'erreur:Impossible de lancer le serveur depuis un compte administrateur . Effectivement, c'est sur un compte (super)administrateur du serveur que j'essayer de faire tourner pgAdminIII. @rjuju, lorsque vous me demandiez de vérifier que le compte postgreSQL n'est pas administrateur, vous deviez peut-être vous dire que j'essayais de faire les opérations depuis le compte postgres? J'ai omis de mentionner que j'étais sur un autre compte.

La suite de mon histoire est un pb humain. Vous n'êtes pas obligés de la lire c'est sans interêt. je vous aurais prévenu!
  J'ai demandé à l'administrateur du reseau de m'ouvrir le compte postgres qui avait été crée lors de l'installation, ce qu'il a refusé pour des raisons relativement obscures. Peut-être, et je le comprends, à t-il été effrayé de voir un stagiaire étudiant et sans aucune formation proprement dite en informatique tripoter son serveur....Quoiqu'il en soit, il m'a installer postgres sur un desktop connecter au reseau. C'est moins..disons cool, mais ça me suffit largement pour mener à bien mon projet de fin d'étude.

Merci à tous.

#7 Re : Général » Transfert d'une base de donnée d'un ordinateur perso vers un serveur » 07/10/2011 12:49:09

Bonjour
Effectivement les droits d'écritures n'etaient pas accordée à l'utilisateurs postgreSQL. Je (ou plutôt l'informaticien de la boite) lui a accordé tous les droits sur le dossier ou est installe la base de donnee.
J'ai relancé l'installtion, mais sans améliorations! Toujours l'erreur en fin d'installation: "problem running post-install step. Installation may not be complete correctly". Et le serveur refuse toujours de se connecter en local: "Connection refused (0x0000274D/10061) Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?". Le firewall a été configuré pour accepter les entrants sur le port 5432. Je suis à court d'idées (et de souffle). Toute suggestion, même la plus farfelue possible, serait la bienvenue!
Merci.

Au fait @Gleu, je ne trouve pas la log de l'installateur...

#8 Re : Général » Transfert d'une base de donnée d'un ordinateur perso vers un serveur » 06/10/2011 14:32:37

Bonjour
    La commande pg_dump... fonctionne à merveille.

    Le problème se pose au moment de la restauration vers le serveur distant. Mais je pense que le problème est lié à l'installation de postgreSQL sur le serveur distant (qui fonctionne sous Windows Server 2003).

    En effet, lorsque je vai sur le serveur distant et que j'ouvre pgAdminIII depuis le dit serveur (et non depuis mon ordi personnel), et que j'essaye de configurer une nouvelle connection en local, il me sort l'erreur selon laquelle "le serveur refuse les connections TCP/IP" (pourtant, j'ai bien saisi l'hôte: localhost). J'ai vérifié les fichiers pg_hba.conf et pg_config.conf conformément aux prescriptions de la documentation, mais je n'ai rien trouvé d'anormal. J'ai même complété le fichier pg_hba.conf pour lui permettre de detecter toutes les addresses.

    Mais ensuite, je me suis souvenu que vers la toute fin de l'installation de PostgreSQL sur ce serveur, j'ai eu une erreur ;"le lancement post-installation n'a pas pu être réalisé, l'installation est peut être incomplete". J'ai essayer de réinstaller le logiciel, mais la même erreur s'est produite.

pourrait-il s'agir d'un problème de compatibilité entre PostgreSQL 9.0.4.1 et Windows Server 2003?

#10 Re : Général » Transfert d'une base de donnée d'un ordinateur perso vers un serveur » 05/10/2011 20:54:05

rjuju a écrit :

Quelques options sont à modifier selon que la base de donnée est déjà créée ou non sur le serveur distant.
Le dump copiera les données de la base mais pas les informations de rôle de connexion.

Merci rjuju. Si je comprend bien:
- j'ouvre psql
- je rentre la premiere commande pour copier ma base de donnée
- je rentre la seuxieme commande pour "l'enregistrer" sur le serveur.

Par contre, j'aimerais justement savoir quels sont les options à modifier, puisque la base de donnée n'est pas encore crée sur le serveur?

#11 Général » Transfert d'une base de donnée d'un ordinateur perso vers un serveur » 05/10/2011 20:18:30

afrofip
Réponses : 19

Bonjour à tous.
Je n'ai trouvé aucun fil de discussion qui reponde à ma question (peut être ai-je mal cherché?), donc je crée un nouveau fil. Voici mon problème:

Contexte

    -J'ai crée une base de donnée sur mon ordinateur personnel (Systeme windows 7) à laquelle j'accede en local avec une interface Java faite
     maison . Le mot de passe du super utilisateur postgres sur mon ordinateur personnel est "AA" (par exemple).

    -Maintenant, je doit transporter la base sur un serveur distant. 

    -postgreSQL est installé sur le serveur distant, et je peux accéder au repertoire de postgreSQl sur ce serveur à l'aide de l'explorateur de
     fichiers windows. Le mot de passe du super utilisateur postgres sur le serveur distant est "BB".

    -je n'ai encore créer aucune base ni configurer aucune connection sur le serveur distant.
 
Questions

    1. Qu'est ce que je dois faire pour transferer ma base de donnée (définition de la base + données déjà presentes) de mon ordinateur
        personnel vers le serveur distant, sans ecraser le mot de passe du compte postgres dejà installé sur le serveur distant? Quels fichiers
        dois-je copier?

    2. Quand j'ouvre l'executable de pdAdminIII situé sur le serveur distant à partir de mon ordinateur personnel, ce n'est pas les
       données du serveur distant qui s'affichent (d'ailleurs, comme je l'ai dit,  je n'ai encore rien créer dessus), mais plutôt celle du répertoire
       postgreSQL de MON ordinateur personnel. Pourrais-je en savoir la cause?

Merci d'avance.

#13 Général » type variant » 13/09/2011 20:51:08

afrofip
Réponses : 3

Bonjour
Est-ce qu'il existe un type dans posgreSQL qui puisse recevoir tantôt les chaines de caractères, tantôt les nombres?

#14 Re : Java » Droits d'acces à une sequence lors de l'insertion d'une ligne » 13/09/2011 20:41:14

Bonjour
Desolé, j'ai oublié de faire le compte rendu.
Le problème a été resolu lorsque, après avoir attribué les droits à "surveillant", je suis allé dans pgAdminIII au niveau de la dite sequence pour affecter manuellement les droits sur elle à "surveillant"
Merci

#15 Re : Java » Droits d'acces à une sequence lors de l'insertion d'une ligne » 02/09/2011 20:26:19

Bonjour @gleu.
Merci pour cet éclairage. Mais l'ennui c'est que lorsque j'essaie d'attribuer des droits à la sequence "chambre_idchambre_seq", postgreSQL me dit qu'elle n'existe pas... Pour pouvoir faire ce que vous dites, est-ce qu'il faut impérativement que je crée ma propre séquence pour gerer l'identifiant de la table "client"?

#16 Java » Droits d'acces à une sequence lors de l'insertion d'une ligne » 01/09/2011 21:01:25

afrofip
Réponses : 5

Bonjour a tous.
J'ai un problème avec l'insertion d'un ligne dans ma base de donnée.

CONTEXTE:
J'ai une interface Java qui communique avec une base de donnée "HOTEL" dans laquelle se trouve une table "client". En plus de l'utilisateur "postgres", j'ai créer un rôle "surveillant" a qui j'ai donné tout les droits sur la base de donnée avec GRANT all ON "HOTEL" TO surveillant. Ensuite je lui ai donné tout les droits individuellement sur la table "client", et sur toutes les autres tables. La table "client" a un identifiant nommé "idchambre" de type SERIAL.

PROBLEME:
Lorsque j'essaye d'inserer une ligne depuis le rôle "surveillant", j'ai une erreur de ce type "droits d'acces refusé pour la sequence chambre_idchambre_seq". Et je ne sais vraiment pas pourquoi!

Quelqu'un aurait-il une idée du problème?

Pied de page des forums

Propulsé par FluxBB