Angeregt durch eine Diskussion in der Newsgroup microsoft.public.de.sqlserver möchte ich ein paar Vorschläge für die Datensicherung der Datenbanken des SQL-Servers unterbreiten. Dabei möchte ich vorausschicken, dass ich hier generell über Wald-und-Wiesen-Anwender rede: also kleine bis mittlere Büros und Privatleute. Diejenigen 2%, die einen Hochverfügbarkeitscluster im Serverraum stehen haben, brauchen meinen Rat vermutlich sowieso nicht, sondern lassen das ihren Admin entscheiden.. 😛
Da man bekanntlich nicht alles haben kann, muss man im ersten Schritt die Prioritäten klären, damit man entscheiden kann, was einem wichtig ist:
- Geringe Ausfallzeit: Darf im Desasterfall die Arbeit eines ganzes Tagen verloren gehen oder muss die Wiederherstellung bis zum Crash-Zeitpunkt gehen?
- Ist die leichte Bedienbarkeit der Datensicherung und Rücksicherung wichtig oder steht geschultes Fachpersonal zur Verfügung?
- Was darf die Sicherungslösung kosten? Was kostet mich der Totalverlust der Daten?
Dann muss man sich überlegen, wie oft und aus welchen Anlässen ich damit rechne die Rücksicherung zu benötigen:
- Werden öfters mal versehentlich ein paar Daten zu viel gelöscht?
- Bietet die Software eine Wiederherstellung von diesen gelöschten Daten an? Die meiste Software bietet so eine Art "Papierkorb" an, dort können gelöschte Datensätze wiederhergestellt werden so lange der Papierkorb noch nicht entgültig "geleert" wurde.
- Wenn nicht, wie kann ich die gelöschten Daten aus einer älteren Sicherung exportieren und in den aktuellen Bestand importieren?
Das war jetzt noch nicht wirklich spezifisch für den SQL-Server. DEshalb komme ich langsam auf die Möglichkeiten, die wir hier zur Verfügung haben: ich möchte mich aber wirklich auf die Datensicherung beschränken. Natürlich sind auch die Hardware-Überlegungen in diesem Zusmamenhang wichtig, damit alles zusammenpasst, bspw. gehört es auch dazu sich zu überlegen, ob man sich ein Raid-System anschafft oder nicht. Aber eine Datensicherung wird in jedem Fall benötigt, auch mit Raid-Systemen. Daher gehe ich in dieser Serie nur auf diesen Aspekt ein.
Ich unterscheide grundsätzlich erstmal zwischen der
- Offline-Datensicherung, d.h. der SQL-Server-Dienst wird gestoppt, die Datenbank-Dateien werden gesichert und der Dienst neu gestartet, und der
- Online-Datensicherung, d.h. im laufenden Betrieb wird der Inhalt der Datenbank mit Bordmitteln des SQL-Servers gesichert. In diesem Fall hat man noch die Wahl erstens immer eine Vollsicherung anzufertigen, zweitens regelmäßige Vollsicherungen durchzuführen und dazwischen mit differentiellen Backups zu arbeiten oder drittens in größeren Abständen Vollsicherungen durchzuführen und in kürzeren Abständen inkrementelle Sicherungen anzufertigen.
- Zuletzt kann mit macher Sicherungssoftware unter Windows Srever 2003 auch der Volume Shadow Copy Service (VSS) genutzt werden, um geöffnete Dateien auf Datei-Ebene zu sichern.
Im Falle der Offline-Datensicherung kann man immer nur eine Vollsicherung durchführen, eine differentielle Sicherung auf Datei-Ebene ist mit SQL-Server sinnlos, da die Datenbank-Dateien bei jedem Start des Dienstes angefasst und damit verändert werden.
Die oben genannten fünf Fälle werden ich in den kommenden Tagen jeweils ausführlich als separates Posting beschreiben.