Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
J'ai un pb de restauration d'un dump partiel.
Si je fais un dump avec "pg_dump -h host -U user -p port -c db > file.sql", je n'ai pas de pb.
Je ne peux pas toujours utiliser cette commande car j'ai des schémas qui sont énormes et donc je n'ai pas besoin.
J'utilise donc "pg_dump -h host -U user -p port -c -N sch_site_????????_archivage db > file.sql".
La différence est que j'exclue des schémas du dump.
Si je restore un dump partiel, la restauration n'est pas bonne.
Les schémas sont bien créés, mais seulement qq tables le sont.
Merci de votre aide
Hors ligne
Merci de commencer par expliquer exactement où est le problème : quelle table n'est pas restaurée, de quel schéma, à quoi vous attendiez vous ?
La question est trop vague pour le moment ?
Marc.
Hors ligne
Je vais donc essayé d'être plus précis.
Exple:
J'ai 10 schémas ayant chacun 20 tables - certaines héritant d'autres.
Les schémas sont tous créés, mais seules les tables de 1 schéma sont créées.
Si je ré-exécute le restore, toutes les tables se crééent correctement.
je ne vois pas comment être plus clair, si ce n'est en fournissant le dump.
Quelle type d'info voulez-vous?
Cdlt
Hors ligne
Ce que vous reprochez à pg_dump, c'est de ne pas dumper la structure des tables contenues dans des schémas que vous avez choisi d'ignorer ?
Dernière modification par Marc Cousin (30/11/2009 19:35:13)
Marc.
Hors ligne
Quelle type d'info voulez-vous?
L'erreur que vous avez à la restauration serait un bon début.
Guillaume.
Hors ligne
Je n'ai malheureusement aucune erreur qui remonte. Apparemment, tout se passe bien, mais en réalité, non.
J'ai le fichier log fait par psql. Ce log est dispo à l'URL : http://www.filedropper.com/pg_1
Merci d'avance
Hors ligne
Il ne semble pas y avoir d'erreur dans le fichier de log. Pourriez vous expliquer ce qui pose problème ?
Marc.
Hors ligne
Une fois le restore effectuée (apparemment ss pb), j'ouvre PGAdmin pour faire qq vérifications.
Hors, la majorité des schémas n'a aucune table....
J'utilise PSQL pour faire le restore. Est-ce la bonne méthode?
Utilisant DUMP en mode sélectif, ne devrais-je pas utiliser PG_RESTORE?
Hors ligne
Si dans votre dump vous n'avez demandé le dump que de certains schémas il est normal que les autres soient vides
Marc.
Hors ligne
Pouvez-vous nous fournir la commande exacte que vous utilisez pour faire la sauvegarde et celle pour faire la restauration ?
Guillaume.
Hors ligne
Bonjour,
La commande que j'utilise pour la sauvegarde est :
"pg_dump -h host -U user -p port -c -N sch_site_????????_archivage db > file.sql"
La commande que j'utilise pour la restauration est :
"psql.exe -h host -U user -p port -f script base"
Dernière modification par energiesysteme (02/12/2009 10:22:11)
Hors ligne
Marc COUSIN,
Je me doute bien que si un schéma n'est pas sauvegardé, il ne pourra être restitué; il ne sera même pas recréé car pas ds le backup.
Dans le cas présent, les schémas présents ds le backup sont bien tous créés, mais ne sont pas tous complétés.
Dans quel cas utiliser PSQL et ds quel cas utiliser PG_RESTORE?
Hors ligne
Dans quel cas utiliser PSQL et ds quel cas utiliser PG_RESTORE?
psql ne peut restaurer que les sauvegardes au format SQL (format par défaut, option -Fp). pg_restore ne peut restaurer que les bases au format binaire (option -Ft ou -Fc). Donc, dans votre cas, ça ne peut être que psql.
Concernant le fichier de log que vous fournissez, ce n'est clairement pas le fichier de log de PostgreSQL. Ou alors c'est un fichier fortement modifié, et donc sans intérêt.
Vu que vous êtes apparemment sous Windows, si vous n'avez pas activé le log collector, il y a de fortes chances que les traces se trouvent dans le journal des événements. Le plus simple dans ce cas est d'activer le log collector (paramètre logging_collector) pour tout récupérer dans un fichier et nous l'envoyer.
Guillaume.
Hors ligne
Je pense avoir compris.
L'utilisation de PG_DUMP/PSQL fonctionne en SQL soit. Mais il faut aussi que le dump soit un dump sans restriction de schéma.
Si j'utilise PG_DUMP/PG_RESTORE avec Fc ou Ft, cela fonctionne parfaitement; même avec exclusion de schéma!
Peut-être y-a-t-il une restriction à l'utilisation de l'exclusion de schéma.
Merci pour vos pistes.
Hors ligne
J'oubliais, je vous confirme que le log que j'ai fourni vient bien de PSQL.
Hors ligne
je vous confirme que le log que j'ai fourni vient bien de PSQL.
Sincèrement, je n'y crois pas une seconde. C'est un log applicatif, ou un log du driver PostgreSQL, ou autre chose. Mais clairement, ce ne sont pas des traces générées par le serveur PostgreSQL. Sauf traitement après coup. Attention, je parle bien du serveur, pas des clients, pas des pilotes de connexion, etc.
Guillaume.
Hors ligne
La seule chose que je peux certifier, c'est que je ne me suis pas amusé à modifier un fichier de plus de 1Mo.
Il me semble que que l'ai eu via PSQL -L
Si cela vous semble douteux, je pourrai le refaire.
Hors ligne
psql est un client, pas le serveur PostgreSQL. Si vous voulez récupérer les messages d'erreur à partir du client, il faut aussi rediriger la sortie des erreurs. Par exemple :
psql -f sauvegarde.sql la_base 2>&1 | tee psql.log
Et psql.log contiendra la sortie standard et celle des erreurs du client psql... arg, je viens de me rappeler que c'est sous Windows. Donc, non, il faut absolument récupérer les traces du serveur PostgreSQL. Et psql n'est pas capable de vous les fournir. Il faut regarder la config de PostgreSQL pour savoir où ces derniers sont enregistrés.
Guillaume.
Hors ligne
OK.
C'est vraiq ue PSQL est client. Pour moi c'était aussi coté serveur, mais non.
Mes tests avec PG_DUMP/PG_RESTORE fonctionne nickel, donc, je classe l'affaire.
Je vous remercie tous des conseils que vous m'avez donné.
Hors ligne
Pages : 1