J'ai une application web Django avec backend postgresql 9.3.10 (assis dans un OS 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 de la sorte:
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, il existe plusieurs tables qui sont candidates à la troncature, mais il semble que je ne puisse pas les tronquer maintenant 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.
postgresql
postgresql-9.3
Hassan Baig
la source
la source
Réponses:
É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 à WAL.Vous devez donc libérer de l'espace sur le volume ou augmenter le volume. Si vos fichiers journaux PostgreSQL se trouvent dans
pg_log
le répertoire de données, vous pouvez supprimer certains d'entre eux en toute sécurité et redémarrer Pg.Ne supprimez pas
pg_xlog
oupg_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.la source
TRUNCATE
-il écrire à wal, et à quoi ressemble cette entrée dans WAL?rm -rf /tmp/*
ou la suppression de votre vimrc.rm -rf /tmp/*
... qui peut également supprimer des éléments que vous pourriez souhaiter, tels que des sockets d'application, etc. Mieux vaut être plus sélectif. En ce qui concerne l'espace nécessaire, vous avez raison, c'est minime - une table vide de 8 Ko + quelques kb d'entrées WAL pour la troncature, l'allocation xid, l'enregistrement de validation, etc.