Verschieben Sie die postgresql-Datenbank von einem Server auf einen anderen

9

Ich habe bei mir zu Hause eine (räumliche) Datenbank erstellt, die mehrere Gigabyte umfasst, und ich möchte die gesamte Datenbank so verschieben, wie sie von einem Computer meines Arbeitscomputers stammt.

Nichts Fany, ich werde eine neue postgresql / postgis db Instanz auf meinem Arbeitscomputer erstellen. Die Datenbankbenutzer können auf beiden Computern denselben Namen haben oder nicht.

Ist es möglich? Worauf sollte ich achten? Wie kann ich es schmerzfrei machen?

Ich verwende postgresql v9.1.5 mit der Erweiterung postgis. Ubuntu12.04 (Kernel 3.2.0-31)

user528025
quelle
Siehe diesen ähnlichen Thread in StackOverflow, Kopieren der PostgreSQL-Datenbank auf einen anderen Server .
Basil Bourque

Antworten:

11

Sie können einen Speicherauszug der Datenbank ausführen:

pg_dump yourdatabase | gzip -9 > outfile.sql.gz

und dann wieder in PostgreSQL auf Ihrem Arbeitscomputer importieren. Es wird einige Zeit dauern und die resultierende Datei kann, selbst wenn sie komprimiert ist, im Gigabyte-Bereich liegen, sollte aber klein genug sein, um auf einem USB-Stick enthalten zu sein.

Erstellen Sie auf Ihrem Arbeitscomputer die neue Datenbank und laden Sie den Speicherauszug:

zcat outfile.sql.gz | psql yournewdatabase

Wenn Sie eine schnelle Verbindung haben (oder sich die Zeit nehmen können), können Sie die Datenbank sogar über eine verschlüsselte SSH-Verbindung oder Tools wie rsync über das Internet übertragen.

LSerni
quelle
1
Was ist mit Benutzer- / Gruppenprivilegien? Bei mir zu Hause habe ich zB Benutzer1, aber bei der Arbeit seinen Benutzer2. Ist das wichtig?
2
Es sollte nicht. Natürlich müssen Sie in Ihrer Anwendung den richtigen Benutzer einstellen. Versuchen Sie vor dem Dumping, Benutzer1 in Benutzer2 umzubenennen und zu überprüfen, ob alles funktioniert, da es sich um Ihren Heim-PC handelt. Dann sollte die Übertragung problemlos sein.
3
Verwenden Sie pg_dumpall für einen Speicherauszug der Datenbankrollen.
Frank Heikens
1
Um die Datenbank sichern zu können, müssen Sie dieselbe Postgresql-Version wie auf dem alten Server installieren, siehe wiki.postgresql.org/wiki/Apt
rubo77
2

pg_dumpall ist der sicherste Weg, dies zu tun. Ich würde sowieso empfehlen, vor der Migration einen Dumpall zu nehmen. Das große Problem dabei ist jedoch, dass die Wiederherstellung eine Weile dauern kann, wenn es groß ist.

Sie können das Datenverzeichnis auch kopieren, vorzugsweise nach dem Stoppen Ihres Servers (Sie können pg_start_backup () anstelle des Stopps verwenden, aber alle Dokumente zum Zeitpunkt der Wiederherstellung anzeigen, bevor Sie diese Route wählen. Diese Route würde eine Ausfallzeit nahe Null ermöglichen Beachten Sie jedoch auch, dass Sie dies nur tun können, wenn die Betriebssystem- und CPU-Architektur auf beiden Systemen identisch ist. Sie können auf diese Weise nicht von Windows zu Linux oder von i686 zu x86-64 wechseln. Überprüfen Sie auch die Kernelversionen des Betriebssystems um sicherzustellen, dass die Systeme kompatibel sind.

Chris Travers
quelle