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 30/04/2012 21:12:06

sinfra
Membre

probleme pg_restore avec une table de 64.000.000 enregistrements

Bonjour,
plusieurs fois, j'esaie de faire un backup de ma bd 8.4 puis la restaurer dans la bd 9.1,
pg_dump -Fc --disable-triggers --data-only ma_bd > backup_ma_bd.dump
pg_restore --disable-triggers --data-only --verbose --dbname=ma_bd backup_ma_bd.dump

mais a chaque fois, j'ai un blocage sur une table realtimes,
--------------
pg_restore: enabling triggers for ping_options
pg_restore: disabling triggers for realtimes
pg_restore: restoring data for table "realtimes"

------------------------

j'ai analyser et vu qu'il contient 64.000.000 enregistrements.
existe t'il un autre moyen pour restaurer une table aussi immense?

Dernière modification par sinfra (30/04/2012 21:18:40)

Hors ligne

#2 30/04/2012 21:46:13

rjuju
Administrateur

Re : probleme pg_restore avec une table de 64.000.000 enregistrements

Bonjour,
64 millions d'enregistrements ça fait beaucoup, c'est donc normal que ça prenne du temps. Le pg_restore fait la restauration avec un copy, ce qui est la manière la plus rapide de procéder. Les seuls moyens de gagner du temps à mon avis c'est de désactiver certaines fonctionnalités le temps de faire la restauration (l'autovacuum, synchronous_commit, fsync, full_page_writes) et de prendre son mal en patience.

Hors ligne

#3 30/04/2012 22:23:17

sinfra
Membre

Re : probleme pg_restore avec une table de 64.000.000 enregistrements

salut,
ces fonctionalites sont désactivées, et jai patienté pendant une heure et demi ( roll la la, c'est trop quand même).
et quand je fais un controle+c pour mettre fin a la restauration, je remarque qu' aucune données n'est enregistrée dans aucune table

Hors ligne

#4 30/04/2012 22:48:57

rjuju
Administrateur

Re : probleme pg_restore avec une table de 64.000.000 enregistrements

Vous pouvez essayer spécifier uniquement cette table lors du pg_restore (-t), et vérifier dans pg_stat_activity que la procédure restauration n'est pas bloquée par un autre processus.
Vous pouvez également augmenter la valeur du paramètre checkpoint_segments à 20 ou 30, et passer le checkpoint_completion_target à 0.9 pour augmenter encore les performances.

Dernière modification par rjuju (30/04/2012 23:36:58)

Hors ligne

#5 02/05/2012 17:19:08

sinfra
Membre

Re : probleme pg_restore avec une table de 64.000.000 enregistrements

Salut,
finalement, le restaurant est passé.
j'ai lancé le restaure le soir avant de partir chez moi, et le matin, j'ai constaté que la restauration a été achevé.

Merci pour votre aide

Hors ligne

#6 02/05/2012 18:23:45

rjuju
Administrateur

Re : probleme pg_restore avec une table de 64.000.000 enregistrements

Tant mieux smile

Si vous aviez modifié des paramètres comme le fsync, full_page_writes etc, il faut absolument les remettre comme avant pour la sécurité de vos données.

Hors ligne

Pied de page des forums