Ich habe eine Django-Webanwendung mit dem Backend von PostGresQL 9.3.10 (unter Linux). Ich bin auf einen Festplattenfehler gestoßen. Selbst wenn ich versuche, eine Tabelle abzuschneiden, erhalte ich Fehler der folgenden Art:
ERROR: could not extend file "base/30137/33186048": No space left on device
HINT: Check free disk space.
Ich kann dem Server nicht einfach mehr Speicherplatz hinzufügen und auch nichts auf dieser VM löschen. Es gibt jedoch mehrere Tabellen, die für das Abschneiden in Frage kommen, aber anscheinend kann ich sie auch jetzt nicht abschneiden.
Kann mir jemand einen Rat geben, was ich hier tun kann? Dies trifft meinen Produktionsserver hart, und ich bin hier ein bisschen ein versehentlicher DBA, also total ratlos.
postgresql
postgresql-9.3
Hassan Baig
quelle
quelle
Antworten:
Da PostgreSQL WAL schreiben muss, bevor Änderungen an Tabellen vorgenommen werden, benötigt es freien Speicherplatz, um Dinge zu löschen und mehr Speicherplatz freizugeben.
Wenn Sie die Festplatte voll haben, können Sie in PostgreSQL keine Wiederherstellung durchführen.
TRUNCATE
Muss sogar noch an WAL schreiben.Sie müssen also Speicherplatz auf dem Volume freigeben oder das Volume erweitern. Wenn sich Ihre PostgreSQL-Protokolldateien
pg_log
im Datenverzeichnis befinden, können Sie einige davon sicher entfernen und Pg neu starten.Löschen Sie nicht
pg_xlog
oderpg_clog
. Hierbei handelt es sich nicht um Serverfehlerprotokolle, sondern um wichtige Teile der Datenbank, des Transaktionsprotokolls und des Festschreibungsprotokolls.quelle
TRUNCATE
ich an wal schreiben und wie sieht dieser Eintrag in WAL aus?rm -rf /tmp/*
Ihrem Vimrc erhalten oder löschen.rm -rf /tmp/*
... mit dem Sie möglicherweise auch die gewünschten Elemente löschen können, z. B. Anwendungssockets usw. Besser, Sie sind selektiver. Sie haben Recht, der Platzbedarf ist minimal - eine leere 8-KB-Tabelle + ein paar KB WAL-Einträge für die Kürzung, XID-Zuordnung, Festschreibungsdatensatz usw.