TL;DR: Ein Disaster-Recovery-Plan stellt sicher, dass Ihr SaaS Datenverlust, Korruption oder Anbieterausfälle übersteht. Dieser Leitfaden behandelt automatisierte D1-Backups nach R2, Point-in-Time-Recovery-Strategien, Backup-Integritätsprüfung und ein Runbook für die Wiederherstellung.
Einleitung
Datenverlust ist keine Frage von „ob", sondern von „wann". Eine fehlkonfigurierte Migration, ein Bug, der Daten korruptiert, oder ein Anbieterausfall kann Monate an Nutzerdaten zerstören. Ein durchdachter Backup- und Disaster-Recovery-Plan ist Ihre Versicherungspolice.
Automatisierte Backups mit Cron Triggers
// src/server/backup.ts
import { createServerFn } from '@tanstack/react-start'
export const runDatabaseBackupFn = createServerFn({ method: 'POST' })
.handler(async ({ context }) => {
const env = context.env
const timestamp = new Date().toISOString()
const backupKey = `backups/db/${timestamp}.sqlite`
// D1-Datenbank exportieren
const result = await env.DB.dump()
// In R2 speichern
await env.R2.put(backupKey, result.body, {
customMetadata: { timestamp, type: 'full' },
})
// Alte Backups bereinigen (letzte 7 Tage behalten)
await cleanOldBackups(env.R2, 'backups/db/', 7)
return { backupKey, timestamp }
})
Backup-Strategie-Matrix
| Backup-Typ | Häufigkeit | Speicher | Aufbewahrung | Recovery-Zeit |
|---|---|---|---|---|
| Vollständige Datenbank | Täglich | R2 | 30 Tage | 30 Minuten |
| Transaktionsprotokoll | Kontinuierlich | D1 | 7 Tage | 1 Minute |
| Datei-Assets | Bei Änderung | R2 Versioning | 90 Tage | Sofort |
| Konfiguration | Bei Änderung | Git + KV | Unbegrenzt | 10 Minuten |
Fazit
Automatisieren Sie Ihre Backups mit Cloudflare Cron Triggers. Speichern Sie in R2 für maximale Beständigkeit. Testen Sie Ihren Wiederherstellungsprozess monatlich. Ein Backup, aus dem Sie die Wiederherstellung noch nie getestet haben, ist kein Backup. Für weiterführenden Kontext lesen Sie unseren Cloudflare R2 Object Storage Guide, den D1 Production Guide, die Cron Triggers-Dokumentation und SaaS Security Best Practices.