Backup und Restore Tests

Oder: Vertrauen ist gut, Kontrolle ist besser!

Welcher Windows Administrator kenn diese Situation nicht? Man ist zwar eigentlich kein Datenbankadministrator (DBA) aber zur der Anwendung gehört halt ein SQL Server und einen echten DBA gibt es halt nicht. Also muss man sehen, dass die Datenbank läuft. Genau so wichtig wie ein laufender Server ist gerade bei Datenbanken, dass man die Daten im Notfall auch wiederherstellen kann. Dabei muss man immer wieder feststellen, dass das Backup noch recht gut überwacht und kontrolliert wird aber die Wiederherstellung so gut wie nie getestet ist.

Es gilt der Spruch:

Was interessiert mich das erfolgreiche Backup, der erfolgreiche Restore ist mir viel wichtiger!

Und letztendlich trifft dies genau den Kern des Problems. Viele (Teilzeit) Datenbankadministratoren verlassen sich zu sehr auf die Meldung „Backup erfolgreich“, testen aber zu selten bis niemals ob auch der Restore aus dem Backup funktioniert.

Eine regelmäßige händische Kontrolle ist aufwendig, zeitintensiv und von Spaß wollen wir erst gar nicht reden.Aber es gibt einen einfachen und schnellen Weg den Restore über die Powershell zu testen.

DBATOOLS

Gerade für Teilzeit DBA  gibt es ein Powershell Modul mit dem Namen DBAtools, welches einem viel Arbeit abnehmen kann. Weitere Informationen zu dem Modul sowie Download Möglichkeiten gibt es auf der Projekt Seite unter www.dbatools.io

Das Module kann auf einem PC mit Internetzugang ganz leicht über den Powershell Befehl

Install-module dbatools

installiert werden. Um das Modul zu nutzen ist keine Installation oder änderung an dem Server notwendig. In der Regel muss nur der Port des SQL Server (Standmäßig 1433) von dem Administrations PCs aus erreichbar sein.

Für den Recovery Test steht das folgende Cmdlet zur Verfügung:

Test-DbaLastBackup -SqlInstance SERVER -Database DBNAME

Das Cmdlet stellt nun eine Verbindung zu dem SQL Server „SERVER“ her und führt eine Wiederherstellung der Datenbank durch. Die Datenbank wird mit einem anderen Name und anderen Dateinamen aus den Backupdaten wiederhergestellt und ein DBCC CHECKDB durchgeführt. Nachdem die Wiederherstellung und der Check abgeschlossen sind wird die Kopie wieder gelöscht.

Zudem ist es möglich mehrere Datenbank (oder gleich alle) gleichzeitig zu testen und den Test auf einem separaten Server durchzuführen.

Test-DbaLastBackup -SqlInstance QUELLSERVER -Destination ZIELSERVER | ogv

Durch diesen Befehl werden alle Datenbanken vom Quellserver auf dem Zielserver testweise wiederhergestellt und geprüft. Das Ergebnis wird in einem separaten Fenster als Liste ausgegeben.Bild1

Im Beispiel wurden die Datenbanken einer neuen leeren Instanz wiederhergestellt und geprüft. Man kann gut erkennen, dass der Restore von allen Datenbanken funktioniert hat. Lediglich der Check der Master DB kann auf Grund von technischen Einschränkungen nicht durchgeführt werden.

Neben der Information ob der Restore überhaupt funktioniert erhält man auch Informationen zum Zustand der Datenbank und wie lange die Wiederherstellung gedauert hat. Diese Information kann wichtig werden wenn es um vertragliche Wiederherstellungszeiten aus SLA (Service-Level-Agreement) geht. Kann ich die vereinbarten Zeiten überhaupt einhalten oder dauert der reine Restore schon länger als vereinbart.

Speicheranforderung

Da alle Datenbanken nach der Prüfung wieder gelöscht werden, braucht man nur so viel Festplattenspeicher wie die größte Datenbank belegt.

Weitere Informationen zum Cmdlet Test-DbaLastBackup findet man unter https://dbatools.io/functions/test-dbalastbackup/

 

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

w

Verbinde mit %s