pg_dump ist ein PostgreSQL-Tool, das Administratoren ermöglicht, Datenbanken in verschiedenen Formaten wie Voll-, Kopie-, inkrementellen und differentiellen Backups zu exportieren. Zusammen mit pg_dumpall kann dieses Werkzeug eine oder mehrere Datenbanken mit nur einem Befehl exportieren und als SQL-Skript (.sql, .dump) oder als Archivdatei (.tar, .tgz) speichern. Solche Sicherungen sind hilfreich, um Datenbanken zwischen Servern zu migrieren, nach Fehlern wiederherzustellen oder Snapshots für Tests und Entwicklung zu erstellen.
In dieser Anleitung erfahren Sie, wie man PostgreSQL-Datenbanken mit pg_dump und pg_dumpall sichert und sie anschließend mit pg_restore sowohl auf lokalen als auch auf entfernten PostgreSQL-Servern wiederherstellt.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie:
- Zugriff auf einen bestehenden PostgreSQL-Server haben.
PostgreSQL-Client installieren
In diesem Abschnitt wird beschrieben, wie der PostgreSQL-Client installiert wird. Dieser enthält wichtige Kommandozeilen-Tools wie pg_dump und pg_restore, mit denen Sie PostgreSQL-Datenbanken sichern und wiederherstellen können. Die Werkzeuge ermöglichen es, lokale oder entfernte Server zu verbinden, Daten in unterschiedlichen Formaten zu exportieren und Migrationen oder Wiederherstellungen effizient durchzuführen.
Befolgen Sie die folgenden Schritte für APT-basierte Systeme wie Ubuntu und Debian. Aktualisieren Sie den APT-Paketindex:
$ sudo apt updateInstallieren Sie den PostgreSQL-Client:
$ sudo apt install -y postgresql-clientFühren Sie auf RPM-basierten Systemen wie Rocky Linux und AlmaLinux folgenden Befehl aus:
$ sudo dnf install -y postgresqlUnter Windows können Sie die PostgreSQL-Downloadseite besuchen und den neuesten Installer herunterladen. Dieser enthält pg_dump, pg_restore und weitere Kommandozeilenprogramme.
PostgreSQL-Datenbank sichern
Mit pg_dump und pg_dumpall können Sie einzelne Datenbanken oder alle Datenbanken eines PostgreSQL-Servers sichern. Die allgemeine Syntax für pg_dump lautet:
pg_dump --host=<host> --port=<port> --username=<benutzer> --dbname=<datenbank> -f <datei>.dumpUm eine bestimmte PostgreSQL-Datenbank zu sichern, verwenden Sie den folgenden Befehl und passen Sie die Platzhalter an:
$ pg_dump -Fd -v --host=db.example.com --port=5432 --username=db_user --dbname=example_db -f example_db.dumpErklärung der Parameter:
- -Fd: Gibt das Ergebnis im Verzeichnisformat aus (mit -Fc ist ein komprimiertes Format möglich).
- -v: Aktiviert detaillierte Ausgaben.
- -f: Legt die Ausgabedatei oder das Verzeichnis fest.
Um alle Datenbanken zu sichern, nutzen Sie pg_dumpall:
$ pg_dumpall -v --host=db.example.com --port=5432 --username=db_user > full-backup.sqlNach Abschluss können Sie prüfen, ob die Sicherungsdatei erstellt wurde:
$ lsPostgreSQL-Datenbank wiederherstellen
Zur Wiederherstellung können Sie je nach Format pg_restore oder psql nutzen. Die allgemeine Syntax für pg_restore lautet:
pg_restore --host=<host> --port=<port> --username=<benutzer> --dbname=<datenbank> <datei>.dumpVerbinden Sie sich mit psql zu Ihrem PostgreSQL-Server:
$ psql --host=db.example.com --port=5432 --username=db_user --dbname=postgresLegen Sie eine Zieldatenbank an:
postgres=# CREATE DATABASE example_db;Beenden Sie die PostgreSQL-Sitzung:
postgres=# \qStellen Sie eine einzelne Datenbank mit pg_restore wieder her:
$ pg_restore --host=db.example.com --port=5432 --username=db_user --dbname=example_db backup.dumpUm alle Datenbanken aus einem pg_dumpall-Backup wiederherzustellen, verwenden Sie psql:
$ psql --host=db.example.com --port=5432 --username=db_user -f full-backup.sqlErklärung:
- -f: Gibt die SQL-Datei an, die wiederhergestellt wird.
- --username: Zum Wiederherstellen von Rollen und Berechtigungen ist in der Regel ein Superuser erforderlich.
Nach der Wiederherstellung können Sie sich mit der wiederhergestellten Datenbank verbinden:
postgres=# \c example_dbListen Sie Tabellen auf, um die Wiederherstellung zu prüfen:
postgres=# \dtÜberprüfen Sie die Tabellendaten (ersetzen Sie app_users durch den Tabellennamen Ihrer Datenbank):
postgres=# SELECT * FROM app_users;Beenden Sie den PostgreSQL-Client:
postgres=# \qFazit
Diese Anleitung hat gezeigt, wie man PostgreSQL-Datenbanken mit pg_dump, pg_dumpall und pg_restore sichern und wiederherstellen kann. Diese Werkzeuge bieten eine zuverlässige Möglichkeit, einzelne Datenbanken oder komplette Cluster für Migration, Tests oder Disaster Recovery zu exportieren. Sie haben den PostgreSQL-Client installiert, sowohl einzelne als auch vollständige Backups erstellt und Daten mit benutzerdefiniertem sowie Plain-SQL-Format erfolgreich wiederhergestellt. Für weiterführende Strategien empfiehlt sich die offizielle PostgreSQL-Dokumentation.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.