Stell dir vor, deine Datenbank ist ein riesiges Bibliotheksarchiv mit tausenden Büchern. Ein Full Backup bedeutet, dass du jede Nacht einen Kurier losschickst, der alle Bücher kopiert. Und wenn sich fast nichts geändert hat? Das ist nicht nur langsam, sondern belastet auch den Transport und verbraucht viel Speicherplatz. Genau hier kommen Incremental und Differential Backups ins Spiel. Wir arbeiten smarter, nicht härter, und kopieren nur das, was sich wirklich geändert hat.
Heute schauen wir uns folgende Backup-Typen an:
- Full Backup: komplette Kopie der Datenbank.
- Incremental Backup: kopiert nur die Änderungen seit dem letzten Backup.
- Differential Backup: kopiert die Änderungen seit dem letzten Full Backup.
Jede dieser Methoden hat ihre eigenen Vor- und Nachteile und Einsatzgebiete. Lass uns das mal genauer anschauen.
Full Backup
Ein Full Backup ist ein komplettes Backup der gesamten Datenbank zu einem bestimmten Zeitpunkt. Es enthält sowohl die Struktur der Datenbank (Tabellen, Indizes, Schemata) als auch alle vorhandenen Daten. Kurz gesagt: ein "Snapshot" der ganzen Datenbank.
Beispiel für einen Full Backup Befehl:
pg_dump -U username -d database_name -F c -f full_backup.dump
Hier:
-U username— PostgreSQL-Benutzername.-d database_name— Name der Datenbank.-F c— Backup-Format (custom, praktisch für Restore mitpg_restore).-f full_backup.dump— Dateiname, in dem das Backup gespeichert wird.
Mehr zu pg_dump und seinen Parametern gibt's in den nächsten Vorlesungen :P
Vorteile von Full Backups:
- Einfache Wiederherstellung. Wenn mal was schiefgeht, kannst du mit einem Full Backup die ganze Datenbank schnell wiederherstellen.
- Kompletter Daten-Snapshot. Kann genutzt werden, um die komplette Datenbank auf einen anderen Server oder in eine andere Umgebung zu übertragen.
Nachteile von Full Backups:
- Datenmenge: Ein Full Backup kann richtig groß werden, vor allem wenn du viele Daten hast.
- Lange Laufzeit: Je mehr Daten, desto länger dauert das Backup.
- Speicherplatz: Jedes Full Backup braucht eigenen Speicherplatz, das kann die Storage-Ressourcen auffressen.
Wann solltest du ein Full Backup machen?
- Beim ersten Backup überhaupt.
- Vor größeren Änderungen an der Datenbank.
- Für ein langfristiges Archiv (Full Backup machen und ins "kalte" Storage schieben).
Incremental Backups
Ein Incremental Backup speichert nur die Dateien, die sich seit dem letzten Backup geändert haben — egal ob das letzte ein Full oder ein Incremental Backup war. Das spart ordentlich Speicherplatz und beschleunigt das Backup.
In PostgreSQL kannst du Incremental Backups mit dem Tool pgBackRest machen — ein mächtiges Tool, das Full, Incremental und Differential Backups für PostgreSQL unterstützt und verwaltet.
Wie funktioniert pgBackRest?
pgBackRestnutzt Metadaten und Checksummen, um Änderungen an Dateien zu erkennen.- Nur wirklich geänderte Dateien landen im Incremental Backup.
- Automatisches WAL-Archivieren wird unterstützt, damit du ein Point-in-Time Recovery machen kannst.
Beispiel für ein Incremental Backup:
pgbackrest --stanza=main --type=incr backup
Hier:
--stanza=main— Name der Konfiguration (Parameter-Set für eine bestimmte DB).--type=incr— sagt, dass ein Incremental Backup gemacht wird.
Vor dem ersten Incremental Backup muss unbedingt ein Full (--type=full) gemacht werden.
Vorteile von Incremental Backups mit pgBackRest:
- Speicher sparen: Es werden nur geänderte Dateien kopiert.
- Schnelle Ausführung: Besonders wenn es nur wenige Änderungen gibt.
- Automatisches WAL-Management: pgBackRest archiviert und nutzt WAL-Dateien automatisch.
- Flexibles Recovery: Du kannst einen beliebigen Wiederherstellungspunkt (PITR) wählen.
Nachteile und Besonderheiten:
- Erstkonfiguration nötig: Du musst
stanza, das Repository-Verzeichnis und Zugriffsrechte einrichten. - Komplex für Einsteiger: Du solltest wissen, wie WAL und die PostgreSQL-Architektur funktionieren.
- Abhängigkeit vom Repository: Alle Backups liegen zentral — du musst das Storage gut verwalten.
Wann solltest du Incremental Backups nutzen?
- Wenn die Datenbank ständig aktualisiert wird.
- Wenn ein Full Backup zu groß oder zu langsam ist.
- Wenn du eine zuverlässige und automatische Recovery-Strategie mit minimalem Aufwand willst.
Differential Backups
Ein Differential Backup speichert alle Änderungen, die seit dem letzten Full Backup passiert sind. Der Unterschied zum Incremental Backup ist, dass jedes Differential Backup alle Änderungen seit dem letzten Full Backup enthält. Für ein Recovery brauchst du also nur das letzte Full Backup und das letzte Differential Backup.
Beispiel-Ablauf:
- Erster Abend: Full Backup wird erstellt (A).
- Zweiter Abend (B): Differential Backup — enthält Änderungen seit A.
- Dritter Abend (C): Differential Backup — enthält ebenfalls Änderungen seit A.
Vorteile:
- Einfache Wiederherstellung: Du brauchst nur das Full Backup und das letzte Differential Backup.
- Schneller als Full Backup: Differential Backups gehen schneller, weil nur Änderungen kopiert werden.
Nachteile:
- Backup-Dateigröße: Mit jedem neuen Differential Backup wird die Datei größer, weil alle Änderungen seit dem Full Backup drin sind.
- Speicherplatz: Langfristig kann mehr Platz nötig sein als bei Incremental Backups.
Ein Differential Backup ist praktisch, wenn du das Recovery vereinfachen willst: Es speichert alle Änderungen seit dem letzten Full Backup. Das ist besonders nützlich, wenn sich die Daten oft ändern, aber ein Full Backup jedes Mal zu aufwendig wäre. In solchen Fällen ist der Differential-Ansatz ein guter Kompromiss zwischen Geschwindigkeit und Zuverlässigkeit.
Vergleich der Backup-Typen
| Backup-Typ | Full | Incremental | Differential |
|---|---|---|---|
| Datenmenge | Maximal | Minimal | Mittel |
| Laufzeit | Lang | Schnell | Mittel |
| Recovery | Einfach | Komplex (abhängig von allen Backups) | Mittel (letztes Full und Differential nötig) |
| Wann nutzen | Erst-Backup, Migrationen | Häufige Backups in Echtzeit | Regelmäßige Backups |
Welchen Backup-Typ du wählst, hängt davon ab, wie wichtig dir Datensicherheit, wie oft sich deine Daten ändern und wie viel Ressourcen du hast. Für kleine Datenbanken reicht oft ein regelmäßiges Full Backup. Wenn die DB wächst, helfen Incremental Backups beim Platzsparen. Und wenn dir schnelles Recovery wichtig ist, sind Differential Backups vielleicht die beste Wahl. Wichtig ist: Bleib regelmäßig dran und automatisiere deine Backups!
GO TO FULL VERSION