CodeGym /Kurse /SQL SELF /Grundlegende Backups mit pg_dump erstellen

Grundlegende Backups mit pg_dump erstellen

SQL SELF
Level 43, Lektion 2
Verfügbar

pg_dump ist ein Kommandozeilen-Tool, das von PostgreSQL bereitgestellt wird und dir erlaubt, eine Datenbank in eine Backup-Datei zu exportieren. Diese Datei kann entweder nur die Struktur, nur die Daten oder beides enthalten.

Der größte Vorteil von pg_dump ist, dass du damit Daten zwischen Servern verschieben, eine Datenbank nach einem Crash wiederherstellen oder einfach ein Archiv für die langfristige Aufbewahrung anlegen kannst. Wichtig zu wissen: Das Tool ist eher für logische Backups (mittels SQL-Statements) gedacht als für das physische Kopieren von Datenbankdateien.

Grundlegende Syntax für den pg_dump Befehl

Um ein Backup mit pg_dump zu erstellen, reicht folgender Befehl im Terminal:

pg_dump -U benutzername -d datenbank_name -f backup_datei.sql

Schauen wir uns die Komponenten des Befehls an:

  • -U benutzername — gibt den PostgreSQL-Benutzernamen an, der für die Verbindung zur Datenbank verwendet wird.
  • -d datenbank_name — legt den Namen der Datenbank fest, von der das Backup erstellt wird.
  • -f backup_datei.sql — bestimmt, wohin die Backup-Datei gespeichert wird. Das kann ein absoluter oder relativer Pfad sein.

Beispiel: Angenommen, du hast eine Datenbank university und willst ein Backup in die Datei university_backup.sql machen. Der Befehl sieht dann so aus:

pg_dump -U postgres -d university -f university_backup.sql

PostgreSQL fragt dann nach dem Passwort für den Benutzer postgres, um Zugriff auf die Daten zu erlauben.

Tipp: Wenn du mit einem lokalen Server arbeitest und nicht jedes Mal das Passwort eingeben willst, richte die Datei .pgpass ein. Lies dir die offizielle PostgreSQL Dokumentation für weitere Infos durch.

Parameter und deren Verwendung

Das Tool pg_dump ist ziemlich flexibel und kann für verschiedene Backup-Szenarien angepasst werden:

  1. Nur die Struktur der Datenbank sichern

Wenn du nur die Struktur der Datenbank sichern willst (zum Beispiel, um sie auf einem neuen Server aufzusetzen), nutze das Flag --schema-only. Beispiel:

pg_dump -U postgres -d university --schema-only -f university_schema.sql

Das erstellt ein SQL-Skript, das nur CREATE TABLE, CREATE INDEX usw. enthält – ohne Daten.

  1. Nur die Daten sichern

Manchmal willst du nur die Daten sichern, ohne die Struktur. Dann verwende das Flag --data-only:

pg_dump -U postgres -d university --data-only -f university_data.sql

Die Datei enthält dann INSERT INTO Befehle, mit denen du deine Daten wiederherstellen kannst.

  1. Backup komprimieren

Die Backup-Datei kann ziemlich groß werden, besonders wenn deine Datenbank viele Tabellen und Daten enthält. Um die Dateigröße zu verringern, nutze den Parameter --compress:

pg_dump -U postgres -d university -f university_backup.sql --compress=6

Der Komprimierungsgrad ist eine Zahl von 0 (keine Komprimierung) bis 9 (maximale Komprimierung). Je höher die Komprimierung, desto länger dauert das Backup.

  1. Export im binären Format

Wenn du ein schnelleres Restore willst, kannst du das Backup im binären Format statt als Text-SQL-Skript speichern:

pg_dump -U postgres -d university -Fc -f university_backup.dump

Das -Fc Flag steht für das Custom Format, das du mit pg_restore wiederherstellen kannst.

Beispiele für Backups

Komplettes Datenbank-Backup

Angenommen, du hast eine Datenbank company und willst ein komplettes Backup inklusive Struktur und Daten machen:

pg_dump -U postgres -d company -f company_backup.sql

Backup einer einzelnen Tabelle

Wenn du nur eine bestimmte Tabelle sichern willst, nutze den Parameter -t:

pg_dump -U postgres -d company -t employees -f employees_backup.sql

Die Datei enthält dann Struktur und Daten nur aus der Tabelle employees.

Backup mehrerer Tabellen

Um mehrere Tabellen zu sichern, füge mehrere -t Parameter hinzu:

pg_dump -U postgres -d company -t employees -t departments -f selected_tables_backup.sql

Komprimiertes Backup

Um Speicherplatz zu sparen, nutze das --compress Flag oder erstelle direkt eine Datei im komprimierten Format:

pg_dump -U postgres -d company -Fc -f company_backup_compressed.dump

Nützliche Tipps

Überprüfe die Größe deiner Backup-Datei. Wenn das Backup zu klein ist, ist vielleicht ein Fehler passiert. Nutze --verbose für mehr Details zum Backup-Prozess.

Automatisiere den Prozess. Nutze cron oder pg_cron, um regelmäßige Backups einzurichten. Vergiss nicht, alte Backups richtig zu rotieren, damit die Festplatte nicht voll läuft.

Teste deine Backups. Überprüfe die erstellten Backups, indem du die Datenbank auf einem Testserver wiederherstellst.

Fehler, auf die du stoßen könntest

Authentifizierungsfehler. Wenn du den falschen Benutzer angibst oder das Passwort vergisst, gibt pg_dump einen Fehler aus. Stelle sicher, dass du die .pgpass Datei für die automatische Anmeldung eingerichtet hast.

Verbindungsfehler. Wenn der PostgreSQL-Server nicht läuft oder du den Datenbanknamen falsch geschrieben hast, kann das Tool kein Backup erstellen. Überprüfe den Namen und den Server-Status.

Probleme mit Zugriffsrechten. Der Benutzer, mit dem du pg_dump startest, muss Leserechte für Struktur und Daten haben. Nutze am besten eine Admin-Rolle, wenn möglich.

2
Aufgabe
SQL SELF, Level 43, Lektion 2
Gesperrt
Nur das Datenbankschema sichern
Nur das Datenbankschema sichern
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION