Technische Tipps: Wie sichere und stelle ich die Postgres-Datenbank wieder her?
·

Wichtige Erkenntnisse
PostgreSQL-Backups können je nach Bedarf auf einzelne Tabellen, eine einzelne Datenbank oder alle Datenbanken abzielen.
pg_dumperstellt eine SQL-Textdatei, die die DDL und die Daten enthält, die zum Wiederherstellen der Zieltabelle oder -datenbank benötigt werden.pg_dumpallsichert alle Datenbanken auf der Postgres-Instanz.Die Wiederherstellung erfolgt mit
psql, das den SQL-Dump zurück in die Zieldatenbank ausführt.Bei Tabellenebenen-Wiederherstellungen muss sichergestellt werden, dass die Tabelle nicht bereits existiert, um Konflikte zu vermeiden.
Beim Sichern einzelner Tabellen sollten Sie auf relationale Abhängigkeiten achten.
Dumps können von lokalen Postgres-Instanzen genommen und auf Remote-Postgres-Instanzen wiederhergestellt werden.
Backups beinhalten
CREATE-,ALTER- undCOPY-Befehle, abhängig davon, was exportiert wird.Die richtige Backup-Strategie hängt vom Verständnis der Tabellenbeziehungen, der Verwendung von Schemata und den Bereitstellungsumgebungen ab.
Stellen Sie immer die Datenintegrität sicher, indem Sie Backups erstellen, die bei Bedarf referenzierte Tabellen enthalten.
Q&A Highlights
Was macht pg_dump tatsächlich?
pg_dumperzeugt eine textbasierte SQL-Datei, die den vollständigen Satz von Befehlen enthält, um eine Tabelle oder Datenbank genau so wiederherzustellen, wie sie zum Zeitpunkt der Sicherung existierte.Kann ich nur eine Tabelle statt einer gesamten Datenbank sichern?
Ja. Verwenden Sie
pg_dump --table TABLENAME, um eine spezifische Tabelle zu exportieren. Falls Tabellen mit demselben Namen in verschiedenen Schemata existieren, verwenden Sie--schema, um das richtige anzugeben.Sollte ich mir Sorgen über verwandte Tabellen machen, wenn ich eine einzelne Tabelle sichere?
Absolut. PostgreSQL ist relational, daher könnten andere Tabellen auf die Tabelle verweisen, die Sie sichern. Wenn Sie nur eine Tabelle ohne die zugehörigen wiederherstellen, können Sie die referenzielle Integrität gefährden.
Wie sichere ich eine vollständige Datenbank?
Führen Sie einen Befehl aus wie:
pg_dump -U <user> <database> -f <output.sql>Dies exportiert alle Tabellen, Schemadefinitionen, Indizes und Daten für diese Datenbank.
Was macht pg_dumpall?
pg_dumpallsichert jede Datenbank auf dem Server in einer einzigen SQL-Datei. Es ist nützlich bei der Migration oder Erstellung eines Snapshots einer gesamten Postgres-Instanz.Kann ich eine Tabelle in eine bestehende Datenbank wiederherstellen?
Ja. Verwenden Sie
psql -U <user> -f <file.sql> <database>.Aber stellen Sie sicher, dass die Tabelle nicht bereits existiert — andernfalls erhalten Sie während der Wiederherstellung „existiert bereits“-Fehler.
Was passiert während eines vollständigen Datenbank-Restore?
Die Wiederherstellungsdatei wird ausgeführt:
CREATE TABLEALTER TABLECOPY(für Tabellendaten)
um die Datenbank wieder in ihren genauen Zustand zum Zeitpunkt der Sicherung zu versetzen.
Kann ich zu einem anderen Server als dem, von dem ich gesichert habe, wiederherstellen?
Ja. Dumps sind portabel. Sie können ein Backup lokal erstellen und es auf eine entfernte Postgres-Instanz wiederherstellen, vorausgesetzt, die Versionen sind kompatibel.
Beeinflusst pg_dump die laufende Datenbank?
Nein. Es funktioniert über SQL-Abfragen und sperrt nicht die gesamte Datenbank. Es erfasst sicher eine konsistente Momentaufnahme.
Wie stelle ich alle Datenbanken aus einer pg_dumpall-Datei wieder her?
Verwendung:
psql -U <user> -f all_dump.sqlDies stellt jede in der Dump-Datei gefundene Datenbank wieder her.
Zuerst ein Haftungsausschluss. Dieser Beitrag bietet eine allgemeine Anleitung zum Sichern einer Postgres-Datenbanktabelle. Die bereitgestellten Beispiele beziehen sich nicht auf eine bestimmte Tabelle oder Datenbank. Wenn Sie versuchen, eine bestimmte Tabelle zu sichern, sollten Sie auch Tabellen sichern, die sich auf die ursprünglichen Tabellen beziehen. Da Postgres eine relationale Datenbank ist, wird es immer Verweise zwischen mehreren Tabellen geben.
Dies ist ein „How to“-Dokument, das nur Beispielbefehle gibt. Wie es tatsächlich gemacht wird, hängt allein von der Person ab, die es durchführt, und von den spezifischen Anwendungsfällen. Bewahren Sie immer die Integrität der Daten, die Sie sichern möchten. Die Sicherung der gesamten Datenbank ist immer eine sichere Option, aber wenn man spezifische Tabellen sichert, muss man vorsichtig sein.
SQL-dump/pg_dump:
Die Idee hinter der SQL-Dump-Methode ist es, eine Textdatei mit SQL-Befehlen zu erstellen, die, wenn sie zurück an den Server übergeben wird, die Datenbank in demselben Zustand wiederherstellen, in dem sie sich zum Zeitpunkt des Dumps befand. PostgreSQL stellt das Dienstprogramm pg_dump für diesen Zweck bereit.
pg_dump ist ein effektives und umfassendes Tool, um Postgres-Datenbank-Backups zu erstellen und die Backups zur Wiederherstellung der Postgres-Datenbank zu verwenden. Es ist jedoch nicht nur auf die Datenbank beschränkt. Wir können pg_dump verwenden, um Tabellen zu sichern und diese dann zur Wiederherstellung einzelner Tabellen zu nutzen. Mit pg_dump können Sie die lokale Datenbank sichern und auf einer entfernten Datenbank wiederherstellen.
So sichern Sie eine Postgres-Datenbank:
Wie man eine Postgres-Datenbank wiederherstellt
Postgres Restore Optionen Übersicht
Wiederherstellungsbereich | Verwendetes Tool | Eingabedatei | Wichtige Voraussetzung | Häufige Falle |
|---|---|---|---|---|
Einzelne Tabelle | psql | Tabellen-Dump | Tabelle darf nicht bereits existieren | „Bereits vorhanden“ Fehler |
Einzelne Datenbank | psql | Datenbank-Dump | Ziel-DB muss existieren | Unbeabsichtigtes Überschreiben von Daten |
Alle Datenbanken | psql | Vollständiger Dump | Superuser-Zugriff empfohlen | Mehr wiederherstellen als beabsichtigt |
Eine Postgres-Tabelle wiederherstellen:
$ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql peDer obige Befehl installiert die Tabelle, die im ms_table.sql-Datei gesichert wurde, in der ‚pe‘ Datenbank. Stellen Sie sicher, dass diese Tabelle nicht bereits existiert, sonst sehen Sie eine Menge ‚Bereits vorhanden‘ Fehler. Dieser Befehl erstellt die Tabelle und exportiert alle Daten in die neu erstellte Tabelle.
Eine Postgres-Datenbank wiederherstellen:
$ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sqlÄhnlich wie bei der Wiederherstellung der Tabelle können wir den obigen Befehl verwenden, um die vollständige Datenbank wiederherzustellen. Hier stellen wir die ‚pe‘ Datenbank mit der Datei pe_dump.sql wieder her, die wir beim Sichern der Datenbank im oben beschriebenen Backup-Abschnitt erstellt hatten.
Alle Datenbanken wiederherstellen:
$ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sqlStellen Sie alle Datenbanken mit dem obigen Befehl wieder her. ‚all_dump.sql‘ war die Datei, die mit
pg_dumpallerstellt wurde. Der obige Befehl wird uns alle Postgres-Datenbanken im exakten Zustand geben, in dem sie waren, als ein Dump vom ursprünglichen Datenbankserver erstellt wurde.



