Vous n'êtes pas identifié(e).

#1 16/04/2019 15:56:55

MissTi
Membre

[postgresql 10] pg_restore: "check free disk space"

Bonjour à tous,

Je ne suis pas encore une brutasse absolue sous postgreSQL et rencontre un écueil que je n'arrive pas à résoudre seule. C'est pas faute d'avoir essayé...

Je dois migrer une application et sa base de données d'un serveur à un autre. Après un pg_dump, je rebalance ma BD avec un pg_restore:

sudo -u postgres pg_dump --format c -d mabd > /home/user/backup/`date +%Y%m%d`_mabd.backup

==>

sudo su postgres
pg_restore -d mabd /home/user/backup/20190409_mabd.backup

Quand je fais le pg_dump/restore depuis une version light de la BD (ma version crash-test sur une machine virtuelle), ça passe les doigts dans le nez.
Quand je le fais depuis ma BD en production (donc un pg_dump de 4... Go!!), ça coince sur une table trèèèès lourde:

pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 5867; 2606 41976 CONSTRAINT dem_vector pk_dem_vector utilisateurxx
pg_restore: [archiver (db)] could not execute query: ERROR: could not extend file "base/202593/224563": wrote only 4096 of 8192 bytes at block 89651
HINT: Check free disk space.
Command was: ALTER TABLE ONLY ref_geo.dem_vector
ADD CONSTRAINT pk_dem_vector PRIMARY KEY (gid);

Il semble quand même aller jusqu'au bout mais je n'ai pas de visibilité s'il y a eu des données "abandonnées" en route.

Côté serveur, j'ai 18Go/64 libres. Pour la mémoire "hôte", j'ai 8 Go. Je dois quand même avoir assez d'espace disque pour traiter un gros fichier, non?
Dans le postgresql.conf, j'ai essayé de modifier les paramètres effective_cache_size (ouvert à 4Gb) et work_mem (poussé à 10Mb) mais j'ai toujours le même message (j'ai lancé un service postgresql restart après avoir modifié le postgresql.conf).

Y a-t-il un moyen de contourner le bug?
Faut-il que j'opte pour un autre format d'export/import?
A noter qu'en plus des nombreuses tables, cette base contient des contraintes, des triggers, des vues matérialisées... Bref, la restaurer table par table puis contraintes, triggers, etc, ce serait l'enfer...

Hors ligne

#2 16/04/2019 17:56:49

rjuju
Administrateur

Re : [postgresql 10] pg_restore: "check free disk space"

Bonjour,


Ce message correspond effectivement à un problème de système de fichier plein, ou du moins à une erreur d'écriture sur le système de fichier.  Aucun changement de configuration ne pourra résoudre votre problème.  L'erreur a eu lieue en créant un index utilisé pour satisfaire une contrainte, vous pouvez vérifier que le résultat n'est pas correct en regardant la définition de la table (ainsi que la la liste des index) ref_geo.dem_vector.


La seule solution est d'ajouter de l'espace disque.

Hors ligne

Pied de page des forums