von Arno Hohenschuh
Im ersten Teil der Artikelserie ist die Einrichtung einer geplanten Datensicherung mit Windows Server Backup besprochen worden. Im zweiten Teil schauen wir uns an, wie eine automatisierte Aufgabe zur Datensicherung mit wbadmin.exe, der PowerShell und der Windows Aufgabenplanung erstellt werden kann.
Windows Server-Sicherung installieren
Zunächst muss die Windows Server Sicherung installiert werden. Starten Sie eine Powershell, z.B. die Exchange Shell, mit erhöhten Rechten als Administrator. Nach der Eingabe der folgenden Befehle ist das Sicherungsfeature installiert:
- Import-module Servermanager
- Add-WindowsFeature backup
Mit get-windowsfeature backup können Sie überprüfen, ob das Feature installiert ist.
Exchange Datenbanken mit wbadmin.exe sichern
Um eine Datensicherung der Exchange Datenbanken per Kommandozeile zu starten wird mindestens ein Befehl wie folgt benötigt:
wbadmin.exe start backup -include:”E:\DATABASE,F:\TLOGS” -backupTarget:\\mbx2\Backup -vssFull –quiet
(Im Beispiel sind die Datenbanken in E:\Database und die Transaktionsprotokolle in F:\TLogs .)
Hiermit wird über wbadmin.exe die vollständige VSS-Sicherung der Datenbanken und Logfiles angestoßen.
Die einfachste Variante diese Sicherung zu automatisieren ist das Anlegen einer Aufgabe in der Aufgabenplanung mit dem Verweis auf eine Batchdatei, die diese Kommandozeile beinhaltet.
Legen Sie eine Batchdatei backup.cmd im Verzeichnis c:\Backup an. Geben Sie in der Datei den Befehl
wbadmin.exe start backup -include:”E:\DATABASE,F:\TLOGS” -backupTarget:\\mbx2\Backup -vssFull –quiet
an.
Mit dem folgenden Befehl wird nun eine Aufgabe mit dem Namen „Exchange-Datensicherung“ erzeugt, die backup.cmd Montags, Mittwochs und freitags um 21:00 Uhr ausführt.
Schtasks /Create /TN Exchange-Sicherung /TR c:\backup\backup.cmd /sc WEEKLY /D Mo, MI, FR /ST 21:00 /RU backup /RP password /RL HIGHEST
Der nachfolgende Befehl legt wieder eine Aufgabe mit dem Namen „Exchange-Datensicherung“ an (bestehende Aufgaben mit demselben Namen werden auf Wunsch überschrieben) und führt diese Aufgabe um 11:00 Uhr und um 23:00 Uhr aus.
Schtasks /Create /TN Exchange-Sicherung /TR c:\backup\backup.cmd /sc Daily /ST 11:00 /RI 720 /DU 24:00 /RU backup /RP password /RL HIGHEST
Mit dem Befehl „schtasks /run /tn “Exchange-Sicherung” kann eine Aufgabe manuell ausgeführt werden und getestet werden.
Der folgende Befehl zeigt den Status einer Aufgabe an:
schtasks /query /tn “Exchange-Sicherung”
Sicherung von Datenbanken in einer DAG (Database Availability Group)
Sollen die Exchange Datenbanken in einer DAG gesichert werden, empfiehlt es sich bei der Verwendung von Exchange Server Backup immer die aktiven Datenbanken zu sichern.
Dazu könnten zuerst die aktiven Datenbanken auf einen Mailboxserver verschoben werden und anschließend auf diesem Mailboxserver die Sicherung erfolgen. Nach der durchgeführten Sicherung können die Datenbanken wieder auf die Knoten in der DAG verteilt werden.
Das folgende Beispiel erläutert dieses Vorgehen bei einer DAG mit zwei Mailboxservern (MBX1, MBX2) und zwei Datenbanken (DB1 und DB2). (Stellen sie sicher, dass die Powershell Skripts ausführen kann, indem die Executionpolicy auf z.B. RemoteSigned einstellen: Set-ExecutionPolicy RemoteSigned).
Wir erstellen zuerst ein Skript backup.ps1, das auf die Funktionen der Exchange Management Shell zugreift:
if ( (Get-PSSnapin -Name Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction SilentlyContinue) -eq $null )
{ RemoteExchange.ps1
add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010
}
Get-MailboxDatabase | where {$_.Server -ne “MBX1″} | Move-ActiveMailboxDatabase -ActivateOnServer MBX1 -Confirm:$false
$datafiles = “E:\DATABASE,F:\TLOGS”
$BackupTarget = \\mbx2\Backup
$p = [diagnostics.process]::Start(“cmd.exe”, “/c start /wait C:\Windows\System32\wbadmin.exe start backup -include:$datafiles -backupTarget:$BackupTarget -vssFull -quiet”)
$p.WaitForExit()
$MBD = Get-MailboxDatabase | where {$_.identity -eq “DB2″}
$MBD | Move-ActiveMailboxDatabase -ActivateOnServer MBX2 -Confirm:$false
Das Skript lädt die Exchange Befehle, aktiviert alle Datenbanken auf dem Server MBX1 und führt dann die Sicherung auf diesem Server aus. Anschließend wird die Datenbank DB2 wieder auf den Server MBX2 zurückgeschoben.
Im nächsten Schritt wird eine geplante Aufgabe erzeugt,die dieses Script im Kontext der Exchange Shell ausführt.
Die geplante Aufgabe wird auf MBX1 erstellt.
Schtasks /Create /TN Exchange-Sicherung /TR “powershell.exe c:\backup\backup.ps1″ /sc Daily /ST 22:00 /RU backup /RP password /RL HIGHEST
Diese Aufgabe führt zum angegebenen Zeitpunkt das Script backup.ps1 durch die PowerShell aus. Mit dem folgenden Befehl kann die Aufgabe wieder manuell angestoßen werden:
schtasks /run /tn “Exchange-Sicherung”
Der Status wird so überprüft:
schtasks /query /tn “Exchange-Sicherung”
„Ausfallsichere“ Datensicherung
Im vorangegangenem Beispiel haben wir eine Sicherung immer nur von einem aktiven Knoten gestartet.
Um die Sicherung ausfallsicher zu gestalten, kann man das Sicherungsskript durch den Failover-Clusterdienst ausführen lassen.
Dazu passen wir das Script so an, dass auf einem beliebigen Mailboxserver ausgeführt werden kann. Ferner werden cmdlets des Failover-Clusterdienstes geladen da wir auf dessen Funktionen zugreifen müssen.
Das Script läuft lokal auf jedem Mailboxserver und prüft, ob der Server der Inhaber der Cluster-Gruppe „Clustergruppe“ ist. Ist die Antwort positiv, wird die Sicherung gestartet. Da zu jedem Zeitpunkt nur ein Besitzer einer Clusterressource existieren kann, kommt es nicht zu Überschneidungen bei der Sicherung. Achtung: Auf allen beteiligten Servern wird das Skript zur gleichen Zeit gestartet.
if ( (Get-PSSnapin -Name Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction SilentlyContinue) -eq $null )
{ RemoteExchange.ps1
add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010
}
Import-Module FailoverClusters
$MBXServer = hostname
$activenode = Get-ClusterGroup clustergruppe | where {$_.OwnerNode -like $MBXServer}if ( ($activenode) -ne $null)
{
Get-MailboxDatabase | where {$_.Server -ne $MBXServer} | Move-ActiveMailboxDatabase -ActivateOnServer $MBXServer -Confirm:$false
$datafiles = “E:\DATABASE,F:\TLOGS”
$BackupTarget = \\mbx2\Backup^
$p = [diagnostics.process]::Start(“cmd.exe”, “/c start /wait C:\Windows\System32\wbadmin.exe start backup -include:$datafiles -backupTarget:$BackupTarget -vssFull -quiet”)
$p.WaitForExit()
$MBD = Get-MailboxDatabase | where {$_.identity -eq “DB1″
$MBD | Move-ActiveMailboxDatabase -ActivateOnServer MBX1 -Confirm:$false -ErrorAction silentlycontinue
$MBD = Get-MailboxDatabase | where {$_.identity -eq “DB2″}
$MBD | Move-ActiveMailboxDatabase -ActivateOnServer MBX2 -Confirm:$false -ErrorAction silentlycontinue
}
Das Verzeichnis C:\backup ist auf jeden beteiligten Mailboxserver anzulegen, ebenso wie das Skript überall installiert werden muss,
Ferner erstellen wir auf beiden Knoten die folgende geplante Aufgabe
Schtasks /Create /TN Exchange-Sicherung /TR “powershell.exe c:\backup\backup.ps1″ /sc Daily /ST 22:00 /RU backup /RP password /RL HIGHEST
Im dritten Teil beschreiben wir die Widerherstellung der Exchange Datenbanken mit der Windows Server Sichrung besprochen.



















