Dies ist eine alte Version des Dokuments!
LU12B: Backups & Restore (mysqldump) – Daten sichern & wiederherstellen
Lernziele
- Backups erstellen (Schema, Daten, Vollbackup)
- Restore testen & validieren
- Betriebshinweise: Konsistenz, Schutz, Automatisierung
0) Warum Backups?
- Schutz vor Fehlbedienung, Defekt, Ransomware, rechtlichen Anforderungen.
- Nur Backups, die regelmässig getestet werden, gelten als verlässlich.
1) mysqldump – die wichtigsten Varianten
Alle Befehle im Terminal ausführen. -u root -p fragt nach dem Passwort.
Für InnoDB immer mit –single-transaction für konsistente Dumps.
1.1 Vollbackup (Struktur + Daten + Routinen/Trigger)
mysqldump -u root -p --single-transaction --routines --triggers app_demo > app_demo_full.sql
1.2 Nur Struktur
mysqldump -u root -p --no-data app_demo > app_demo_schema.sql
1.3 Nur Daten
mysqldump -u root -p --no-create-info app_demo > app_demo_data.sql
2) Restore – Schritt für Schritt
2.1 Ziel-DB anlegen & Import
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS app_demo_restore" mysql -u root -p app_demo_restore < app_demo_full.sql
2.2 Validierung (Datenbestand vergleichen)
SELECT COUNT(*) AS rows_src FROM app_demo.notes; SELECT COUNT(*) AS rows_dst FROM app_demo_restore.notes;
3) Übung: Backup & Restore im Klassen-Setup
Auftrag
1) Erzeuge einen Voll-Dump von app_demo.
2) Stelle ihn nach app_demo_restore wieder her.
3) Vergleiche Anzahl Zeilen in notes.
4) Dokumentiere 2 Screenshots (Dump-Befehl & Restore-Resultat).
4) Operative Hinweise
- Zeitpunkt: Dumps ausserhalb von Peak-Zeiten.
- Aufbewahrung: Rotation (z. B. 7/4/12), verschlüsselt ablegen, Zugriff beschränken.
- Automatisierung: Cron/Task Scheduler, Log prüfen.
- Privacy: Backups können personenbezogene Daten enthalten → DSG/DSGVO beachten.
- Wiederherstellung üben: Restore-Tests in separatem Schema/Server.
5) Troubleshooting
- Access denied beim Import → prüfe Benutzerrechte auf Zielschema.
- Foreign Key Errors → Reihenfolge/Constraints beachten; bei Sonderfällen:
SET FOREIGN_KEY_CHECKS=0; -- Import SET FOREIGN_KEY_CHECKS=1; -- danach wieder aktivieren
- Große Dumps → ggf.
–max_allowed_packeterhöhen, oder per Split importieren.
6) Mini-Quiz (Kontrollfragen)
- Wozu dient
–single-transactionbeimysqldump? - Unterschied: Struktur-Dump vs. Daten-Dump?
- Warum sind verschlüsselte Backups wichtig?
- Wie validierst du, dass ein Restore vollständig war?
Ausblick auf Backend (Node/Express) Umgebungsvariablen für getrennte DB-User:
APP_RO(nur SELECT),APP_RW(CRUD),APP_ADMIN(Migrationen).
So hältst du Least Privilege auch im Code ein.