← Zurück zu den Artikeln
Performance & Datenbanken

Backup vs. Snapshot in Datenbanken: Was wählen und wann?

Ein praktischer Vergleich von Datenbank-Backups und Snapshots: Vor- und Nachteile, wann man welches verwendet, und Laravel-Beispiele mit spatie/laravel-backup und mysqldump.

Verfügbare Sprachen
Backup vs. Snapshot in Datenbanken: Was wählen und wann?
Ausgewählter Artikel ↗

Backup vs. Snapshot in Datenbanken: Was wählen und wann?

Wenn Sie mit Daten arbeiten, wissen Sie, dass deren Verlust ein Albtraum ist. Aber wenn es um den Schutz von Informationen in einer Datenbank geht, entsteht oft Verwirrung: Backup oder Snapshot? Das sind keine austauschbaren Werkzeuge, sondern unterschiedliche Strategien für unterschiedliche Aufgaben.

Lassen Sie uns aufschlüsseln, wann man welches einsetzt, und einige Beispiele in Laravel betrachten.

📸 Was ist ein Snapshot?

Ein Snapshot ist eine „Fotografie" des Zustands Ihres Dateisystems oder Datenvolumes zu einem bestimmten Zeitpunkt. Er ist oft eine Infrastrukturfunktion (Virtualisierung, Cloud-Festplatten).

Wie es funktioniert: Das System kopiert nicht sofort alle Daten, sondern zeichnet Änderungen „vor" und „nach" dem Erstellungszeitpunkt des Snapshots auf.

Vorteile von Snapshots:

  • Instant: In Sekunden erstellt.
  • Minimale Auswirkung: Nahezu keine Last auf dem System während der Erstellung.
  • Ideal für schnelle Rollbacks: Zum Beispiel vor einem riskanten Update oder einer Datenmigration.

Nachteile von Snapshots:

  • Infrastrukturabhängig: Normalerweise an einen bestimmten Host, Cloud-Anbieter oder ein Speichersystem gebunden.
  • Nicht portabel: Schwierig, „mitzunehmen" und in einer völlig anderen Umgebung wiederherzustellen.
  • Risiko eines Single Point of Failure: Wenn der primäre Speicher beschädigt wird, können auch Snapshots verloren gehen.

💾 Was ist ein Backup?

Ein Backup ist das gezielte Kopieren von Daten (z. B. eines SQL-Dumps) an einen unabhängigen, oft externen Speicherort.

Wie es funktioniert: Die Datenbank exportiert sequenziell ihre Schemata und Daten in eine Datei, die überall hin bewegt werden kann.

Vorteile von Backups:

  • Portabilität: Eine Dump-Datei kann auf jedem kompatiblen DBMS überall wiederhergestellt werden.
  • Flexibilität: Sie können nicht alles, sondern nur bestimmte Tabellen sichern. Sie können logische Backups erstellen (nur Schema, nur Daten).
  • Langlebigkeit & Compliance: Dateien können gemäß Sicherheitsrichtlinien (DSGVO usw.) jahrelang archiviert und gespeichert werden.
  • Wiederherstellung „überall": Mit einem Backup sind Sie nicht an Hardware oder Cloud gebunden.

Nachteile von Backups:

  • Zeit & Ressourcen: Die Erstellung eines vollständigen Dumps einer großen Datenbank kann erhebliche Zeit und CPU in Anspruch nehmen.
  • Leistungsauswirkung: Der Exportprozess kann die Datenbank belasten.
  • RPO-Komplexität (Recovery Point Objective): Zwischen Backups gibt es ein „Fenster", in dem Daten verloren gehen können.

🧭 Wann was verwenden? Kurzer Leitfaden

Wählen Sie SNAPSHOT, wenn:

  • Ihr Ziel: Schneller Rollback des gesamten Systemzustands (DB + Anwendung).
  • Erstellungsgeschwindigkeit kritisch ist: Sie brauchen Wiederherstellungspunkte in Sekunden, nicht in Stunden.
  • Wiederherstellungsumgebung: Sie werden auf derselben oder einer identischen Infrastruktur wiederherstellen.
  • Aufbewahrungsdauer: Sie brauchen es kurzfristig (Tage/Wochen).
  • Granularität: Sie brauchen das gesamte System/Volume als Ganzes.

Wählen Sie BACKUP (Dump), wenn:

  • Ihr Ziel: Datenwiederherstellung nach einem Ausfall, Migration auf eine neue Infrastruktur oder langfristige Archivierung.
  • Erstellungsgeschwindigkeit flexibel ist: Sie können sich Minuten oder Stunden für den Backup-Prozess leisten.
  • Wiederherstellungsumgebung: Möglicherweise müssen Sie in eine beliebige andere Umgebung wiederherstellen (lokaler PC, anderes Hosting, neuer Cloud-Anbieter).
  • Aufbewahrungsdauer: Sie benötigen eine langfristige Speicherung (Monate/Jahre).
  • Granularität: Sie müssen bestimmte Elemente wiederherstellen, z. B. eine einzelne Datenbank, Tabelle oder sogar bestimmte Zeilen.

Wichtigste Erkenntnis: Snapshots sind kein Ersatz für Backups. Sie sind eine Ergänzung. Snapshots schützen vor Bedienerfehlern oder Softwareausfällen, aber nicht vor der physischen Zerstörung eines Servers oder dem Ausfall einer Cloud-Anbieterregion. Ein Backup ist Ihre letzte Verteidigungslinie.

🔧 Praxis in Laravel: Beispiele

Im Laravel-Ökosystem arbeiten Sie typischerweise mit logischen Datenbank-Backups.

1. Klassisches Backup mit spatie/laravel-backup: Dieses Paket dient zur Erstellung vollständiger Anwendungs-Backups (Dateien + DB).

composer require spatie/laravel-backup
// Konsolenbefehl zum Erstellen eines Backups php artisan backup:run // Im Scheduler (app/Console/Kernel.php) $schedule->command('backup:run')->daily()->at('02:00');

Plus: Vollständige Automatisierung, Upload in Clouds (S3, Dropbox), Benachrichtigungen.

2. Logischer DB-Dump mit mysqldump oder pg_dump: Manchmal ist ein einfaches Skript nötig.

use Illuminate\Support\Facades\Schedule; use Illuminate\Support\Facades\DB; Schedule::call(function () { $database = config('database.connections.mysql.database'); $username = config('database.connections.mysql.username'); $password = config('database.connections.mysql.password'); $host = config('database.connections.mysql.host'); $filename = 'backup-' . date('Y-m-d_H-i-s') . '.sql.gz'; $path = storage_path('app/backups/' . $filename); // Beispiel für MySQL $command = "mysqldump --user={$username} --password={$password} --host={$host} {$database} | gzip > {$path}"; exec($command); })->daily();

3. Datenbank-Snapshot in der Cloud (AWS RDS): Dies ist bereits Infrastrukturebene, nicht Laravel-Code.

  • In der AWS RDS-Konsole können Sie manuell einen DB-Snapshot erstellen oder die automatische Erstellung einrichten.
  • Dies gibt Ihnen einen Wiederherstellungspunkt innerhalb von AWS in wenigen Minuten.
  • Aber! Aus Zuverlässigkeitsgründen sollten diese Snapshots regelmäßig nach S3 exportiert werden (was sie im Wesentlichen in portable Backups verwandelt).

Abschließende Empfehlung

Verwenden Sie eine kombinierte Strategie:

  1. Tägliche logische Backups (Dumps) mit Laravel-Paketen oder Skripten. Speichern Sie sie außerhalb des Hauptsystems.
  2. Häufige Snapshots (wenn Ihre Infrastruktur es erlaubt) für operative Rollbacks.
  3. Testen Sie regelmäßig die Wiederherstellung aus einem Backup. Ein Backup, aus dem Sie nicht wiederherstellen können, ist kein Backup.
Technologien & Themen

Artikel-Tags

Keine Artikel entsprechen diesen Filtern.

Haben Sie ein Projekt oder eine Idee zu besprechen?

Lassen Sie uns sprechen ↗