Fortgeschritten7 Min. Lesezeit

DynamoDB Backup und Point-in-Time Recovery: Der vollständige Leitfaden

DynamoDB schützt deine Daten auf zwei Wegen. On-Demand-Backups sind vollständige Snapshots, die du erstellst und unbegrenzt behältst. Point-in-Time Recovery (PITR) ist ein kontinuierliches, automatisches Backup, das dir erlaubt, die Tabelle auf jede Sekunde innerhalb eines rollenden Fensters wiederherzustellen. Beide stellen in eine neue Tabelle wieder her — sie sind Wiederherstellungswerkzeuge, kein Rückgängig-Knopf.

Für das Audit-Log ist das nicht verhandelbar. Es ist ein unveränderlicher Compliance-Datensatz; eine schlechte Migration, die Events umschreibt, oder eine versehentliche Massenlöschung muss auf den Moment vor dem Fehler wiederherstellbar sein.

Wie funktionieren DynamoDB Backup und Point-in-Time Recovery?

DynamoDB bietet zwei Backup-Typen. Point-in-Time Recovery (PITR) erstellt kontinuierliche automatische Backups und lässt dich auf jede Sekunde innerhalb eines konfigurierbaren Fensters von 1 bis 35 Tagen wiederherstellen. On-Demand-Backups sind manuelle vollständige Snapshots, die unbegrenzt aufbewahrt werden. Beide stellen in eine neue Tabelle wieder her, nie über die ursprüngliche, sodass sie Wiederherstellungswerkzeuge sind statt ein In-Place-Rückgängig.

  • PITR = kontinuierliches Backup, Wiederherstellung auf jede Sekunde innerhalb eines konfigurierbaren Fensters von 1 bis 35 Tagen (früher waren es feste 35).
  • On-Demand-Backups = manuelle vollständige Snapshots, so lange aufbewahrt, wie du willst, unabhängig vom PITR-Fenster.
  • Wiederherstellungen erzeugen eine neue Tabelle. Du stellst unter einem neuen Namen wieder her und schaltest dann um — die ursprüngliche bleibt unberührt.
  • PITR wird nach Tabellengröße bepreist, nicht nach der Anzahl der Wiederherstellungspunkte — schätze es mit dem DynamoDB-Preisrechner.

Das Problem: ein Fehler, den du nicht an Ort und Stelle rückgängig machen kannst

DynamoDB hat kein Transaktions-Log, das du zurückrollen kannst, und kein „Rückgängig" auf einem Schreibvorgang. Wenn ein Migrationsskript das action-Feld jedes Events umschreibt oder jemand eine Löschung ausführt, die breiter ist als beabsichtigt, ist die Tabelle einfach im falschen Zustand. Ohne Backups sind die Daten weg.

Für ein Audit-Log — dessen gesamter Wert darin besteht, ein vertrauenswürdiger Datensatz zu sein — ist „wir bekommen die Events von letztem Dienstag nicht zurück" ein Compliance-Versagen, nicht nur eine Unannehmlichkeit.

Wie Backup und PITR funktionieren

Point-in-Time Recovery erstellt, einmal aktiviert, kontinuierliche automatische Backups. Laut der AWS-Dokumentation gibt dir PITR vollständig verwaltete kontinuierliche Backups der Tabellendaten mit sekundengenauer Wiederherstellung. Das Fenster ist von 1 bis 35 Tagen über RecoveryPeriodInDays konfigurierbar, und du kannst auf jede Sekunde darin wiederherstellen — bis auf etwa fünf Minuten hinter Echtzeit (LatestRestorableDateTime) — auch in eine andere Region.

Ein wichtiger Grenzfall: Das Verkürzen des Wiederherstellungszeitraums reduziert sofort den frühesten Wiederherstellungspunkt, und das Deaktivieren und anschließende Reaktivieren von PITR setzt die wiederherstellbare Startzeit zurück — du verlierst die vorherige kontinuierliche Historie.

PITR ist außerdem die Voraussetzung für den verwalteten Export nach S3: Der Export liest aus denselben kontinuierlichen Backups, sodass ExportTableToPointInTime bei ausgeschaltetem PITR mit PointInTimeRecoveryUnavailableException fehlschlägt.

On-Demand-Backups sind separat: manuelle, vollständige Tabellen-Snapshots, die du explizit erstellst und unbegrenzt aufbewahrst, nützlich für einen Vor-Migrations-Checkpoint oder ein langfristiges Compliance-Archiv jenseits des 35-Tage-PITR-Fensters. Die Anfrage wird sofort verarbeitet und das Backup ist innerhalb von Minuten wiederherstellbar, verbraucht keinen Durchsatz der Tabelle, und es gibt keine Obergrenze dafür, wie viele du aufbewahrst. Ein ehrlicher Vorbehalt aus den Docs: On-Demand-Backups garantieren keine kausale Konsistenz über Items hinweg — der Versatz zwischen Updates ist „usually much less than a second“, aber ein Backup mitten in einem Schreib-Burst ist kein einzelner eingefrorener Zeitpunkt.

Was eine Wiederherstellung nicht zurückbringt

Eine Wiederherstellung erzeugt die Daten der Tabelle und ihre Indizes neu — nicht ihre operative Verkabelung. Laut den AWS-Docs musst du auf der wiederhergestellten Tabelle manuell neu konfigurieren: Auto-Scaling-Policies, IAM-Policies, CloudWatch-Metriken und -Alarme, Tags, Stream-Einstellungen, TTL, Löschschutz und PITR selbst. Aus einem Backup wiederherzustellen und dabei zu vergessen, PITR wieder zu aktivieren, ist genau der Weg, auf dem der nächste Vorfall nicht mehr behebbar wird.

Bei der Wiederherstellung kannst du einige Einstellungen bewusst ändern — Abrechnungsmodus, provisionierte Kapazität, Verschlüsselungsschlüssel — und du kannst einige oder alle Secondary Indexes weglassen, was die Wiederherstellung schneller und günstiger macht, wenn du sie später neu aufbauen kannst. Wiederherstellungen können außerdem eine andere Region als Ziel haben, und eine Wiederherstellung überschreibt nie eine bestehende Tabelle.

Geplante Backups mit AWS Backup

Die eigenen On-Demand-Backups von DynamoDB haben keinen Scheduler. Für wiederkehrende Backups mit Aufbewahrung ist DynamoDB nativ in AWS Backup integriert (AWS-Docs): Backup-Pläne geben dir geplante Backups mit Lifecycle-Regeln (inklusive Cold-Storage-Tiering), automatische konten- und regionsübergreifende Kopien für DR, einen unabhängigen KMS-Schlüssel über den Backup-Vault und Vault Lock für eine WORM-Compliance-Haltung, die niemand still löschen kann. Zwei operative Fallstricke: AWS Backup ist ein explizites Opt-in pro Konto und pro Region, und die davon erzeugten Backups (Typ AWS_BACKUP) lassen sich nicht aus der DynamoDB-Konsole löschen — verwalte sie in AWS Backup.

Beide stellen in eine neue Tabelle wieder her, nicht über die bestehende:

PITR-Wiederherstellung aufT-5minprüfen, dann umstellenaudit-log (beschädigt)audit-log-restored (neue Tabelle)App zeigt auf diewiederhergestellte Tabelle

Ein ausgearbeitetes Beispiel: Erholung von einer schlechten Migration

Eine Migration, die ein expiresAt-Attribut hinzufügen sollte, überschrieb stattdessen action bei jedem Event mit einem leeren String. PITR ist mit einem 35-Tage-Fenster aktiv, also stellst du auf die Sekunde vor dem Lauf der Migration wieder her:

stepresult
restore PITR to 09:59:00new table audit-log-restored with correct actions
diff against liveconfirm only the migration's rows differ
cut app over to restoredoriginal left intact for forensics

Die korrupte Tabelle bleibt unberührt, während du die Wiederherstellung überprüfst — du vergleichst die wiederhergestellten Events mit den Live-Events, bestätigst, dass die action-Werte zurück sind, und zeigst dann die App neu. Bei der Wiederherstellung selbst wird nichts zerstört.

Wäre der Verlust eine Handvoll Items statt einer Korruption der ganzen Tabelle, könntest du stattdessen die Live-Daten und die wiederhergestellte Kopie inspizieren und nur die betroffenen Zeilen hinüberkopieren — siehe eine DynamoDB-Tabelle kopieren.

In DynoTable umsetzen

Eine Wiederherstellung ist nur so gut wie deine Überprüfung von ihr. Nachdem du auf audit-log-restored wiederhergestellt hast, musst du dir die wiederhergestellten Events tatsächlich ansehen und bestätigen, dass sie dem entsprechen, was sie vor dem Fehler hätten sein sollen.

DynoTable verbindet sich mit der wiederhergestellten Tabelle wie mit jeder anderen, sodass du die Events des betroffenen Tenants abfragen, bestätigen kannst, dass die action-Werte korrekt sind, und gegen die Live-Tabelle vergleichen kannst, bevor du umschaltest — was eine Wiederherstellung von einem Sprung ins Ungewisse in eine verifizierte Erholung verwandelt.

Eine PITR-wiederhergestellte Audit-Log-Tabelle in DynoTable inspizieren, um die wiederhergestellten Events zu überprüfen, bevor die App umgeschaltet wird.
Eine PITR-wiederhergestellte Audit-Log-Tabelle in DynoTable inspizieren, um die wiederhergestellten Events zu überprüfen, bevor die App umgeschaltet wird.

Du kannst die wiederhergestellten Events auch für einen Offline-Compliance-Datensatz exportieren — siehe DynamoDB nach CSV exportieren.

Fallstricke und nächste Schritte

  • Aktiviere PITR, bevor du es brauchst. Es schützt nur ab dem Moment, in dem es an ist — es gibt keine rückwirkende Wiederherstellung. Schalte es für jede Tabelle ein, deren Daten du dir nicht leisten kannst zu verlieren.
  • Das Deaktivieren von PITR setzt das Fenster zurück. Es aus- und wieder einzuschalten löscht die kontinuierliche Historie; die wiederherstellbare Startzeit beginnt ab der Reaktivierung von neuem.
  • Wiederherstellungen sind weder sofort noch kostenlos. Eine Wiederherstellung stellt eine ganz neue Tabelle bereit und dauert proportional zur Größe; kalkuliere die Dauer und die zusätzliche Tabelle ein.
  • 35 Tage sind kein Archiv. Für Aufbewahrung jenseits des PITR-Fensters erstelle On-Demand-Backups oder exportiere nach S3 — PITR ist ein Wiederherstellungsfenster, kein Langzeitspeicher.

Damit schließt sich die Betriebsschleife für das Audit-Log: Transaktionen für Konsistenz, Streams für Reaktion, TTL für Ablauf, der richtige Kapazitätsmodus für Kosten, Global Tables für Regionsresilienz und PITR für Datenwiederherstellung. Sieh dir den Überblick über Operationen & Kosten noch einmal an, um zu sehen, wie sie zusammenpassen.

Lade DynoTable herunter, um dich mit einer wiederhergestellten Tabelle zu verbinden und deine Wiederherstellung zu überprüfen, bevor du ihr vertraust.

Aktualisiert