In der Serie “Vorschläge zur Datensicherung mit SQL-Server” gab es bisher folgende Beiträge:
- Teil – Informationen zum Umfeld und zum Verständnis
- Teil – Vorgehen beim Offline-Backup
- Teil – Online-Vollsicherung
- Teil – differentielle bzw. inkrementelle Online-Sicherung
In diesem letzten – längst überfälligen – Artikel aus der Serie stelle ich die “Snapshot”-Sicherung vor. Es gibt zwei Arten einen Datenbank-Snapshot zu erzeugen, mir geht es primär um die zweite:
- Eine Online-Kopie im laufenden Betrieb, die einen "Snapshot" der Datenbank erstellt. Dazu werden interne Mechanismen des SQL-Servers verwendet.
- Ein Backup-Programm zieht im laufenden Betrieb eine Kopie der Datenbank-Dateien. Das Backup-Programm nutzt dazu den "Volume Shadow Copy Service" (VSS), der sich mit dem SQL-Server koordiniert.
SQL-Server-Snapshot-Backup
Ab der Version 2005 kann die Enterprise-Edition des SQL-Servers im laufenden Betrieb eine Kopie der Datenbank ziehen, die dann für rein lesende Zugriffe genutzt werden kann. Das ist natürlich auch so eine Art von Sicherung, die aber dann doch auf der gleichen Kiste gespeichert wird, wie das Original. Daher fällt das für mich eher in die Kategorie "schnelle Verfügbarkeit".
Wer sich für das Thema interessiert dem empfehle ich den Artikel "SQL Server 2005 Snapshots" von Andrew Calvett oder SQL Server 2005: When and how to use Database Snapshots von Greg Robidoux.
Volume Shadow Copy Service (VSS)
Im laufenden Betrieb können Datenbank-Dateien auf Datei-Ebene nicht kopiert werden. Die Dateien sind vom SQL-Server exklusiv geöffnet. Daher kann eine normale Sicherung die Dateien nicht kopieren. Das führt in der Vergangenheit dazu, dass die Datenbank-Dateien gerne vergessen wurden. Ich erlebe es leider regelmäßig, dass Kunden zwar fleißig die Bänder wechseln, aber nicht das Sicherungslog ansehen und daher gar nicht wissen, dass deren SQL-Server-Datenbanken nicht gesichert werden konnten. Bis zu mir oder meinen Kollegen kommen die Kunden übrigens nur dann, wenn deren Datenbanken defekt sind. Dann ist es natürlich schon zu spät…
Um dem Kunden das Leben zu erleichtern führte Microsoft mit Windows 2003 den schicke "Volume Shadow Copy Service" (VSS) ein. Dieser Dienst ermöglicht das Kopieren von geöffneten Dateien der SQL-Server-Datenbanken. Dazu muss man in der Regel nichts weiter tun, das Bindeglied zwischen dem SQL-Server und dem VSS kommt bereits bei der Installation mit: der VSS-Writer. Jede moderne Sicherungssoftware sollte das Feature bereits unterstützen.
Der interne Ablauf ist etwa so: Die Sicherungsoftware wendet sich an den VSS und sagt, dass bitte alle Dienste (die das unterstützen) die Daten sichern sollen. Der VSS schaut daraufhin seine Liste der registrierten "VSS-Writer" durch und benachrichtigt sie. Der VSS-Writer des SQL-Servers weist den SQL-Server an eine Kopie der Datenbanken zu erstellen. Das geht vergleichsweise schnell, weil genaugenommen nur die Unterschiede in den Dateien (eine Art DIFF) seit der letzten Sicherung rausgeschrieben werden. Intern speichert der VSS in seinen "shadow copy cache" maximal 64 Snapshots, aber auch nur, wenn auf dem Laufwerk genug Platz bereitgestellt wurde.
Die genauen Abläufe werden sehr detailliert im MSDN-Artikel "SQL Writer in SQL Server 2005: A Guide for SQL Server Backup Application Vendors" beschrieben. Das Handbuch ist auch ganz gut.
Vorteile
- Diese Methoden sind sehr schnell.
- Diese Methoden ermöglichen einen 7×24-Stunden-Betrieb.
- Jede normale Sicherungssoftware unterstützt das Verfahren.
- Die Rücksicherung ist einfach.
Risiken und Nebenwirkungen
- Für diese Sicherungsmethode muss man erst mal den VSS konfigurieren.
- Man benötigt Windows Server 2003.
- Der SQL-Server muss so konfiguriert sein, dass jeder im System-Kontext laufende Dienst SysAdmin-Rechte hat. Das ist allerdings nach der Default-Installation sowieso der Fall und stört vermutlich nur die wenigen, die besonders viel Wert auf Sicherheit legen.
Mein persönliches Resümee:
Diese Sicherungsmethode eignet sich vor allem für professionelle Nutzer, die viel Wert auf eine aktuelle Datensicherung legen. Man kann damit den Rund-um-die-Uhr-Betrieb realisieren und kann den Standard-Ablauf der gängigen Datensicherungssoftware nutzen.