Erstellen einer Kopie einer Datenbank in PostgreSQL
Was ist der richtige Weg, um kopieren Sie die gesamte Datenbank (Struktur und Daten) auf ein neues im pgAdmin?
InformationsquelleAutor der Frage egaga | 2009-05-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Postgres ermöglicht die Verwendung einer vorhandenen Datenbank auf dem server als Vorlage beim erstellen einer neuen Datenbank. Ich bin mir nicht sicher, ob pgAdmin gibt Ihnen die Möglichkeit, über das Dialogfeld Datenbank erstellen, aber Sie sollten in der Lage sein, um führen Sie den folgenden in der Abfrage-Fenster, wenn es nicht:
Immer noch, Sie kann bekommen:
Um es zu beheben können Sie diese Abfrage verwenden
InformationsquelleAutor der Antwort Bell
Einem command-line-version von Bell ' s Antwort:
Sollte dies laufen unter den rechten des Datenbank-master, in der Regel postgres.
InformationsquelleAutor der Antwort zbyszek
Klonen einer vorhandenen Datenbank mit postgres, die Sie tun können,
ES wird töten alle die Verbindung zu dem Quell-db-Vermeidung der Fehler
InformationsquelleAutor der Antwort Brugolo
In der Produktionsumgebung, wo die original-Datenbank ist unter Verkehr, ich bin einfach zu verwenden:
InformationsquelleAutor der Antwort Tregoreg
Weiß nicht, über pgAdmin, aber
pgdump
gibt dir einen dump der Datenbank in SQL. Sie benötigen nur eine Datenbank zu erstellen mit dem gleichen Namen und tunWiederherstellung alle Tabellen und deren Daten und alle Zugriffsrechte.
InformationsquelleAutor der Antwort TrayMan
Ich setzte diesen Ansatz zusammen mit den Beispielen von oben. Ich arbeite auf eine "unter Last" server und bekam die Fehlermeldung, wenn ich versuchte den Ansatz von @zbyszek. Ich war auch nach einer "command-line-only" - Lösung.
createdb: database creation failed: ERROR: source database "exampledb" is being accessed by other users
.Hier ist was für mich gearbeitet (Befehle vorangestellt, mit
nohup
zu verschieben Ausgabe in eine Datei und schützen von einem server trennen):nohup pg_dump exampledb > example-01.sql
createdb -O postgres exampledbclone_01
nohup psql exampledbclone_01 < example-01.sql
InformationsquelleAutor der Antwort fusion27
Zunächst
sudo
als Datenbank-Benutzer:Gehen Sie zu PostgreSQL command line:
Erstellen Sie die neue Datenbank, geben Sie die Rechte-und Ausfahrt:
Kopieren Sie die Struktur und die Daten aus der alten Datenbank in die neue Datenbank:
InformationsquelleAutor der Antwort Mathieu Rodic
In pgAdmin kannst du ein backup machen von der original-Datenbank, und klicken Sie dann erstellen Sie einfach eine neue Datenbank und restore aus dem backup gerade erstellt:
InformationsquelleAutor der Antwort Isomorph
Was ist der richtige Weg, um kopieren Sie die gesamte Datenbank (Struktur und Daten) auf ein neues im pgAdmin?
Antwort:
Ausprobiert und getestet.
InformationsquelleAutor der Antwort Anirban Chakrabarti
PostgreSQL 9.1.2:
InformationsquelleAutor der Antwort Arta
Für diejenigen, die noch interessiert, ich habe mit einem bash-Skript, das funktioniert (mehr oder weniger), was der Autor wollte. Ich musste eine tägliche business-Datenbank-Kopie auf einem Produktion system, das script scheint den trick tun. Denken Sie daran, den Namen der Datenbank ändern/Benutzer/pw-Werte.
InformationsquelleAutor der Antwort Dariusz
Erstellen Datenbank-dump
Zu resote Datenbank-dump
InformationsquelleAutor der Antwort Jagdish N
Wenn die Datenbank geöffnet hat-verbindungen, ist dieses Skript helfen. Ich benutze diese zum erstellen einer test-Datenbank aus einem backup von der live-Produktionsdatenbank jede Nacht. Dies setzt Voraus, dass Sie haben eine .SQL-backup-Datei von der Produktions-db (ich mache das in webmin).
InformationsquelleAutor der Antwort screig
Mithilfe von pgAdmin, trennen Sie die Datenbank, die Sie verwenden möchten, als Vorlage. Dann wählen Sie es als Vorlage zum erstellen der neuen Datenbank, dies vermeidet bekommen, die bereits in Gebrauch Fehler.
InformationsquelleAutor der Antwort evergreener2
Aus der Dokumentationmit
createdb
oderCREATE DATABASE
mit Vorlagen nicht gefördert werden:pg_dump
oderpg_dumpall
ist ein guter Weg zu gehen für das kopieren von Datenbank UND ALLE DATEN. Wenn Sie verwenden ein GUI wie pgAdmin, diese Befehle aufgerufen werden, hinter den kulissen, wenn Sie führen Sie eine backup-Befehl. Kopieren in eine neue Datenbank erfolgt in zwei Phasen: sichern und Wiederherstellenpg_dumpall
speichert alle Datenbanken, die sich auf den PostgreSQL-cluster. Der Nachteil dieser Vorgehensweise ist, dass Sie am Ende mit potentiell sehr großen text-Datei voll von SQL erforderlich, um die Datenbank zu erstellen und füllen Sie die Daten. Der Vorteil dieses Ansatzes ist, dass man alle Rollen (Berechtigungen) für die cluster-kostenlos. Dump aller Datenbanken über das superuser-Kontound wiederherstellen
pg_dump
hat etwas Kompression Optionen, die Ihnen wesentlich kleinere Dateien. Ich habe eine Produktionsdatenbank ich das backup zweimal täglich mit einem cron-job mitwo
compress
ist die Komprimierung des Pegels (0 bis 9) undcreate
sagt pg_dump zum hinzufügen der Befehle zum erstellen der Datenbank. Wiederherstellen (oder bewegen, um ein neues cluster) mitwo newdb ist der name der Datenbank, die Sie verwenden möchten.
Andere Dinge zu denken
PostgreSQL nutzt ROLLEN zur Verwaltung von Berechtigungen. Diese werden nicht kopiert von
pg_dump
. Auch haben wir uns nicht befasst, mit den Einstellungen in postgresql.conf und pg_hba.conf (wenn Sie die Datenbank auf einem anderen server). Sie haben, um herauszufinden, die conf-Einstellungen auf Ihrem eigenen. Aber es gibt einen trick, den ich gerade entdeckt, die für das sichern der Rollen. Rollen verwaltet werden, die auf der cluster-Ebene, und Sie können Fragenpg_dumpall
backup nur die Rollen mit den--roles-only
Befehl Linie Schalter.InformationsquelleAutor der Antwort bfris
Versuchen Sie dies:
gl XD
InformationsquelleAutor der Antwort user3108031