web-dev-qa-db-fra.com

Gérer l'espace disque plein dans postgresql

J'ai une Django avec backend postgresql 9.3.10 (assis dans un système d'exploitation Linux). J'ai rencontré une erreur de disque plein, de sorte que même si j'essaie de tronquer une table, j'obtiens des erreurs du genre:

ERROR:  could not extend file "base/30137/33186048": No space left on device
HINT:  Check free disk space.

Je ne peux pas facilement ajouter plus d'espace disque au serveur, ni supprimer des éléments sur cette machine virtuelle. Cependant, plusieurs tables sont candidates à la troncature, mais il semble que je ne puisse pas les tronquer non plus.

Quelqu'un peut-il me donner des conseils sur ce que je peux faire ici? Cela frappe durement mon serveur de production, et je suis un peu un DBA accidentel ici, donc totalement perplexe.

14
Hassan Baig

Étant donné que PostgreSQL doit écrire WAL avant d'apporter des modifications aux tables, il a besoin d'espace disque libre pour supprimer des éléments et libérer plus d'espace disque.

Si vous laissez le disque se remplir, vous ne pourrez pas récupérer depuis PostgreSQL. Même TRUNCATE doit encore écrire dans WAL.

Donc vous devez libérer de l'espace sur le volume ou augmenter le volume. Si vos fichiers journaux PostgreSQL sont dans pg_log dans le répertoire de données, vous pouvez en supprimer en toute sécurité et redémarrer Pg.

À faire pas supprimer pg_xlog ou pg_clog. Ce ne sont pas des journaux d'erreurs du serveur, ce sont des parties critiques de la base de données, le journal des transactions et le journal de validation.

9
Craig Ringer