Dump von postgres-Daten mit Indizes
Ich habe eine Postgres 9.0-Datenbank, welche Häufig ich habe Daten-dumps von es.
Diese Datenbank hat eine Menge von Indizes und jedesmal, wenn ich wieder einen dump von postgres startet die hintergrund-task Staubsauger (ist das richtig?). Diese Aufgabe verbraucht viel Verarbeitungszeit und Speicher neu erstellen Indizes der dump wiederhergestellt.
Meine Frage ist:
- Gibt es eine Möglichkeit, der Datenbank-dump-Daten und die Indizes der Datenbank?
- Wenn es einen Weg gibt, wird die Mühe Wert (ich meinte dumping die Daten mit den Indizes wird eine bessere Leistung als Staubsauger)?
- Oracle hat das "data pump" - Befehl ein schneller Weg, um imp und exp. Tut postgres haben etwas ähnliches?
Vielen Dank im Voraus,
Andre
- Gute Frage, dba.stackexchange.com
- Wenn Sie pg_dump, es gibt keinen Weg, um die Erhaltung der index Daten-index muss neu erstellt werden, nach dem importieren. Sie konnte einfach komprimieren Sie Ihre ganze postgres-Daten-Verzeichnis tun, anstatt eine pg_dump jedoch.
- Vielen Dank Frank, ich werde versuchen, dass es vielleicht die beste option für mich. Meine einzige Sorge ist, über Unterschiede zwischen verschiedenen Moll-postgres-Versionen und Betriebssysteme.
- wird teeren das ganze Data-Verzeichnis, und verschieben Sie es auf einen neuen server, werden die Dinge "einfach funktionieren"? Wenn der alte server ist auf einem älteren CentOS und PG 8.x, während die neue Datenbank auf eine neue hardware-stack und mit PG 9.6?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mit pg_dump zweimal, einmal mit --schema-only und einmal mit --data-only können Sie schneiden Sie die schema-nur die Ausgabe in zwei Teile: der erste Teil mit der bloßen Tabellendefinitionen und den letzten Teil mit den Einschränkungen und Indizes.
Etwas ähnliches kann wahrscheinlich gemacht werden, mit pg_restore.
Best Practice ist wohl
Wenn ein index vorhanden ist, wird ein bulk-load wird PostgreSQL in die Datenbank schreiben und den index. Und einen Haufen machen Ihre Statistiken für die Tabelle nutzlos. Aber wenn Sie laden die Daten zuerst, dann den index erstellen, die stats sind automatisch up-to-date.
Speichern wir Skripte, erstellen von Indizes und scripts, erstellen von Tabellen in verschiedenen Dateien unter Versionskontrolle. Das ist der Grund.
In Ihrem Fall, ändern autovacuum Einstellungen die Ihnen helfen könnten. Sie sollten auch deaktivieren autovacuum für einige Tabellen bzw. für alle Tabellen, aber das wäre ein bisschen extrem.
pg_dump --data-only
enthalten nichtCREATE INDEX
Aussagen. Ein--rebuild-indexes
option wäre praktisch, wenn. Vielleicht werde ich daran arbeiten.