IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Pb dépendance à la restauration


Sujet :

PostgreSQL

  1. #1
    Membre actif Avatar de SaintAmand
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Points : 203
    Points
    203
    Par défaut Pb dépendance à la restauration
    Bonjour,

    J'ai une base de données postgresql 7.4 (debian). Jusqu'à présent mes sauvegardes sont quotidiennement réalisées via la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ pg_dump -U admin ma_base | bzip2 > `date +%Y-%m-%d`-ma_base.sql.bz2
    Très régulièrement je suis amené à restaurer une sauvegarde sur un autre serveur via la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ psql -U admin -d ma_base < 2009-01-11-ma_base.sql
    Cela a toujours bien fonctionné, sauf hier. A la restauration le serveur ce plaint que telle fonction ou telle vue n'existe pas. Si bien qu'à la fin il me manque quelques vues. Bien entendu les fonctions ou vues en questions sont bien définies dans la sauvegarde mais certaines fonctions ou vues qui en dépendent sont définies avant d'où les erreurs. J'ai lancé la restauration deux fois d'affilées afin d'obtenir une restauration complète. Je sais que pg_dump n'organise pas toujours très bien les requêtes, néanmoins je n'ai pas introduit de dépendance circulaire, d'où ma surprise.

    Bref! Pour restaurer correctement la base:
    - soit je sauvegarde en ajoutant l'option --format=t pour ensuite contrôler l'ordre dans lequel les objets sont restaurés avec pg_restore.
    - soit je lance deux restaurations consécutives. La première méthode me parait plus propre. Mais étant donné qu'une restauration prend moins d'une minute - donc ce n'est pas gênant de la lancer deux fois - et qu'en ce moment je crée pas mal de vues et fonctions cette méthode me parait plus pénible à mettre en oeuvre.

    Comment procédez-vous dans un tel cas ?

    Merci,

    --
    Eric

  2. #2
    Membre averti
    Homme Profil pro
    Informaticien
    Inscrit en
    Juin 2004
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informaticien
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2004
    Messages : 183
    Points : 362
    Points
    362
    Par défaut
    Bonjour

    j'utilise régulièrement des sauvegardes effectuées par pg_dump et je n'ai jamais eu ce cas. (avec postgresql 8.1)

    perso. je sauvegarde avec l'option --format=p et je compresse ensuite avec tar.

    Je sais que pg_dump n'organise pas toujours très bien les requêtes,
    Pouvez vous expliquer ce que vous entendez par cela ?
    Merci

  3. #3
    Membre actif Avatar de SaintAmand
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Points : 203
    Points
    203
    Par défaut
    Citation Envoyé par rupteur Voir le message
    perso. je sauvegarde avec l'option --format=p
    Pareillement. C'est le format par défaut de la 7.4.

    Je sais que pg_dump n'organise pas toujours très bien les requêtes,
    Pouvez vous expliquer ce que vous entendez par cela ?
    Merci
    Dans le dump, l'ordre de création de certains objets peut ne pas respecter les dépendances. C'est la première fois que j'ai ce problème. C'est au cours de recherche que je suis tombé sur un article évoquant ce défaut de pg_dump.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 927
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 927
    Points : 51 735
    Points
    51 735
    Billets dans le blog
    6
    Par défaut
    Un dump (et pg_dump fait ceci) n'est par nature pas une sauvegarde mais une trace de la création des objets et des lignes des tables. C'est à tort que certains croient naïvement que cette fonction fait des sauvegardes mais il s'agit de ce que l'on appelle un script de création de la base obtenu par rétro ingéniérie.
    C'est pourquoi la séquence de création des objets dans le fichier de sortie peut générer une reproduction incohérente lorsque vous tentez de lancer l'intégralité du script afin de reconstituer votre base de données. Seule solution : intervenir à la main dans le script pour modifier l'enchaînement des commandes.

    La seule commande qui créée une véritable sauvegarde (c'est à dire un fichier binaire représentant l'image de la base à un instant t) est pg_start_backup combiné à l'archivage des journaux de transaction à l'aide de archive_command.

    Voici l'aide en ligne à ce sujet : http://www.postgresql.org/docs/8.1/s...up-online.html

    A +

  5. #5
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    C'est effectivement un problème récurrent des versions 7.x de PostgreSQL, qui semble-t-il a été corrigé (ou à tout le moins fortement atténué) dans les versions 8.x. Comme l'indique SQLPro, il est nécessaire de modifier manuellement le script afin de rétablir l'ordre logique de création.

  6. #6
    Membre averti
    Homme Profil pro
    Informaticien
    Inscrit en
    Juin 2004
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Informaticien
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2004
    Messages : 183
    Points : 362
    Points
    362
    Par défaut
    -> Sql-pro

    certains croient naïvement que cette fonction fait des sauvegardes mais il s'agit de ce que l'on appelle un script de création de la base obtenu par rétro ingéniérie.
    Alors pourquoi sur la documentation officielle il est écrit

    pg_dump est un outil de sauvegarde d'une base de données PostgreSQL™. Les sauvegardes réalisées sont cohérentes, même lors d'accès concurrents à la base de données. pg_dump ne bloque pas l'accès des autres utilisateurs (ni en lecture ni en écriture).

  7. #7
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Avec pg_dump on perd quand même toute trace des transactions en cours ; c'est acceptable ou non selon les applications.

  8. #8
    Membre actif Avatar de SaintAmand
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Points : 203
    Points
    203
    Par défaut
    Citation Envoyé par GrandFather Voir le message
    Avec pg_dump on perd quand même toute trace des transactions en cours ; c'est acceptable ou non selon les applications.
    Dans le cas présent, cela ne pose aucun soucis.

    Merci pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Makefile] [Avancé]Récupération de dépendances
    Par Ruok dans le forum Systèmes de compilation
    Réponses: 4
    Dernier message: 06/02/2004, 13h52
  2. Recherche des dépendances des modules
    Par slowpoke dans le forum Mandriva / Mageia
    Réponses: 9
    Dernier message: 11/12/2003, 09h49
  3. Impossible de restaurer une base
    Par bencot dans le forum InterBase
    Réponses: 5
    Dernier message: 27/11/2003, 12h12
  4. Sauvegarde / Restauration
    Par Sitting Bull dans le forum Administration
    Réponses: 2
    Dernier message: 13/06/2003, 14h46
  5. [Concept] Dépendances fonctionnelles
    Par bolo dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 24/01/2003, 21h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo