Frage

Ich arbeite an einem Entwicklersystem und habe in eine Datenbank wiederhergestellt, sagen "Foo", das ich für Entwicklerzwecke verwende. Während ich die Knicks durcharbeite, habe ich gerade Drop -Datenbank Foo ausgeführt. Allerdings wurde mir schnell klar, dass ich den gesamten Raum auf meiner Festplatte gegessen habe. Mist.

Fördert Vakuum voll aus einer anderen logischen Datenbank Platz aus der Datenbank, die ich zuvor fallen gelassen habe (Foo)? Ich habe dies aus einer anderen logischen Datenbank ausprobiert, und der freie Speicherplatz wurde zurückgefordert, aber ich glaube nicht, dass es ausreicht, um alle ich getätigte Datenbank -Datenbankanrufe erstellen zu berücksichtigen. Es könnte gerade die logische Datenbank, aus der ich gelaufen ist, Vakuum gemacht hat.

Es muss eine Möglichkeit geben, diesen Raum zurückzugewinnen, ohne eine totale Datenbank init zu machen?

BEARBEITEN

Also habe ich die Datenbank von einem Backup wieder initialisiert, wobei ich ungefähr folgt diese Stufen. Nach der Wiederherstellung habe ich eine Menge Platz auf der Festplatte zurückgefordert! Dies funktioniert vorerst, aber jede Hilfe bei der Bereinigung einer fallengelassenen Datenbank wäre immer noch nützlich.

Bearbeiten 2

Daher habe ich es geschafft, weitere Informationen zu diesem Problem zu sammeln ... hier ist, was ich mir als Beispiel ausgedacht habe:

Initial partition size:
                       Size   Used  Avail Use% Mounted on
                        25G   8.1G    16G  35% /apps1

After creating my new database and populating it:
                        25G    18G   6.4G  73% /apps1

After Dropping the database using "DROP database mydb" from a separate logical DB:
                        25G    13G    11G  56% /apps1

Es scheint mir also, dass die neue DB ~ 9,6 GB auf der Festplatte aufgenommen hat. Nach dem Absetzen wuchs der zurückgewonnene Speicherplatz jedoch nur um ~ 4,6 g. Es gibt also ungefähr 5 GB Platz, was mich frage, was los ist!?

Und es setzt diesen Zyklus fort, wenn ich wieder neu errege, bevölkert und wieder fallen kann.

Hat jemand eine Idee, was nach einem Befehl "Drop -Datenbank" ausgestellt wird?

Keine korrekte Lösung

Andere Tipps

Versuchen sudo lsof| grep deleted und prüfen Sie, ob ein PostgreSQL -Prozess angezeigt wird. Dieser Befehl sucht nach Dateien, die gelöscht wurden, die Dateideskriptoren sind jedoch nach jedem Prozess noch geöffnet. Ein weiterer Nebeneffekt ist das df -h und du -sh / unterscheidet sich. Das ist weil du Betrachtet das Dateisystem und fasse die Größe aller Dateien zusammen, und df schaut sich das physische Gerät an.

Ich hatte gerade ein Problem mit einer Datenbank, die nach a keinen Platz befreit hat DROP table Und das war die Ursache.

Die einzige Lösung, die ich kenne, besteht darin, die Datenbank neu zu starten. Vielleicht können Sie versuchen, ein Reload (Seufzer) zu senden.

Mein Verständnis ist, dass wenn Sie eine Datenbank fallen lassen, und die Dateien verschwunden sind.

Wenn Sie Tabellenspaces nicht verwenden, sollte jede Datenbank ihre Daten in ihrem eigenen Unterverzeichnis unter $ pgdata/Basis enthalten. Verwenden eines meiner Server für ein Beispiel (als Postgres -Benutzer):

-bash-3.2$ cd $PGDATA/base

-bash-3.2$ ls | wc -l
9

-bash-3.2$ du -sh `ls`
6.9M    1
6.7M    12690
6.9M    12698
11M     16391
341M    17339
3.8G    17341
11M     17343
6.8M    19047
8.0K    pgsql_tmp

Wenn wir nun eine neue Datenbank erstellen, sollte es ein weiteres Unterverzeichnis unter $ pgdata/base geben:

-bash-3.2$ createdb foo

-bash-3.2$ ls | wc -l
10

-bash-3.2$ du -sh `ls`
6.9M    1
6.7M    12690
6.9M    12698
11M     16391
341M    17339
3.8G    17341
11M     17343
6.8M    19047
6.9M    83637
8.0K    pgsql_tmp

Was wir sehen ($ pgdata/base/83637 ist das Unterverzeichnis für die neue Datenbank).

Das Löschen dieser Datenbank sollte auch die Datendateien löschen:

-bash-3.2$ dropdb foo

-bash-3.2$ ls wc -l
9

-bash-3.2$ du -sh `ls`
6.9M    1
6.7M    12690
6.9M    12698
11M     16391
341M    17339
3.8G    17341
11M     17343
6.8M    19047
8.0K    pgsql_tmp

Was wir erwarten würden- das $ pgdata/base/83637-Verzeichnis ist verschwunden, es sollte nichts zu Vakuum geben.

Sind Sie sicher, dass es noch etwas gibt, das Ihren Festplattenraum nicht ausgeht? Eine Ihrer anderen Datenbanken? Protokolldateien?

Etwas, das Sie versuchen könnten, wäre:

-bash-3.2$ cd $PGDATA
-bash-3.2$ du -sh `ls` > ../pre_sizes

Machen Sie Ihre verschiedenen Datenbank -Sachen, erstellen, fallen lassen usw. und dann:

-bash-3.2$ du -sh `ls` > ../post_sizes

eine Idee zu bekommen, wohin der Speicherplatz führt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top