Wenn Backup zum Nadelöhr wird
Sicherung dauert ewig.
Wiederherstellung noch länger.
Und im Ernstfall tickt die Uhr.
Je größer die Datenbank, desto wichtiger ist ein gutes Konzept.
Ich zeige Dir, wie ich Backup- und Restore-Zeiten in den Griff bekomme.
Was typische Bremsen sind
- Keine Komprimierung
- Langsames Laufwerk (SATA statt SSD)
- Netzwerk-Backups auf langsamen Shares
- Viele kleine Datenbanken auf einmal
- Kein Test-Restore-Prozess
Lösbar. Mit Bordmitteln.
Schritt 1: Komprimierung aktivieren
Ein einfacher Hebel. Spart Platz und Zeit.
BACKUP DATABASE MeineDB
TO DISK = 'E:\Backup\MeineDB.bak'
WITH COMPRESSION, INIT, STATS = 5;
Meist halbiert sich die Backup-Größe.
Dazu schneller, weil weniger I/O.
Schritt 2: Backup auf mehrere Dateien aufteilen
Hilft bei großen DBs auf schnellen Systemen.
SQL Server schreibt parallel.
BACKUP DATABASE MeineDB
TO
DISK = 'E:\Backup\MeineDB_1.bak',
DISK = 'F:\Backup\MeineDB_2.bak'
WITH COMPRESSION, INIT, STATS = 10;
Wichtig: Auf unterschiedlichen Volumes. Sonst bringt’s nix.
Schritt 3: Restore ebenfalls parallelisieren
RESTORE DATABASE MeineDB
FROM
DISK = 'E:\Backup\MeineDB_1.bak',
DISK = 'F:\Backup\MeineDB_2.bak'
WITH MOVE 'MeineDB_Data' TO 'D:\Data\MeineDB.mdf',
MOVE 'MeineDB_Log' TO 'D:\Log\MeineDB.ldf',
STATS = 10;
Restore geht nur so schnell wie das langsamste Medium.
Also: Disks mitdenken.
Schritt 4: Differential + Log Backups nutzen
Full-Backup am Wochenende.
Differential täglich.
Log stündlich.
Im Restore-Fall:
- Full
- Differential
- Log-Kette
Kombiniert sich so:
-- Vollbackup
RESTORE DATABASE MeineDB
FROM DISK = '...\Full.bak'
WITH NORECOVERY;
-- Differential
RESTORE DATABASE MeineDB
FROM DISK = '...\Diff.bak'
WITH NORECOVERY;
-- Letzter Log
RESTORE LOG MeineDB
FROM DISK = '...\Log_12.trn'
WITH RECOVERY;
Damit bist Du schneller wieder produktiv.
Schritt 5: Restore-Tests automatisieren
Was nützt das beste Backup, wenn’s nicht zurückgespielt werden kann?
Job-Vorlage:
-- Restore-Test auf separatem System
RESTORE VERIFYONLY
FROM DISK = 'E:\Backup\MeineDB.bak';
Oder einmal im Monat komplett zurückspielen – mit WITH REPLACE
.
Schritt 6: Nur das Notwendige sichern
READ_ONLY
-Dateigruppen nicht täglich sichern- Archivdaten separat lagern
- Datenbank splitten, wenn sinnvoll
Beispiel: Separate Dateigruppe nur alle 4 Wochen sichern.
BACKUP DATABASE MeineDB FILEGROUP = 'Archiv'
TO DISK = 'E:\Backup\MeineDB_Archiv.bak'
WITH COMPRESSION;
Reduziert Datenmenge im Daily-Job.
Mein typisches Setup in KMU
Backup-Typ | Intervall | Ziel |
---|---|---|
Full Backup | Samstag | Lokaler Storage + Cloud |
Differential | So–Fr | Lokaler Storage |
Log Backup | Alle 1 h | Lokaler Storage |
Restore-Test | 1×/Monat | Dev- oder Test-Server |
Monitoring | täglich | Mail bei Fehlern |
Performance messen
SELECT
bs.database_name,
bs.backup_start_date,
bs.backup_finish_date,
DATEDIFF(SECOND, bs.backup_start_date, bs.backup_finish_date) AS DauerSekunden,
CAST(bs.backup_size / 1024.0 / 1024.0 AS DECIMAL(10,2)) AS GrößeMB
FROM msdb.dbo.backupset bs
WHERE bs.database_name = 'MeineDB'
ORDER BY bs.backup_finish_date DESC;
Hilft, Engpässe zu erkennen und Trends zu sehen.
Backup ist keine lästige Pflicht. Es ist Deine Versicherung.
Aber ohne Restore bringt’s nichts.
Optimier beides. Teste beides.
Dann bleibt’s ruhig – auch wenn’s mal brennt.
No responses yet