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:

  1. Full
  2. Differential
  3. 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-TypIntervallZiel
Full BackupSamstagLokaler Storage + Cloud
DifferentialSo–FrLokaler Storage
Log BackupAlle 1 hLokaler Storage
Restore-Test1×/MonatDev- oder Test-Server
MonitoringtäglichMail 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.

Tags:

No responses yet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert