120405-Header-v2.jpg
09-09-2011

Automatisieren Exchange Datensicherung mit der Windows Server Sicherung

Artikel bewerten
(3 Stimmen)

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.

grafik1

Der folgende Befehl zeigt den Status einer Aufgabe an:

schtasks /query /tn “Exchange-Sicherung”

grafik2 

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”

grafik3 

Der Status wird so überprüft:

 schtasks /query /tn “Exchange-Sicherung”

grafik4

„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.

trevedi-logo-weiss

transparent10

trevedi IT-Consulting GmbH
Gottfried-Hagen-Str. 30
51105 Köln

T +49 (0)221 - 3 55 88 88 - 0
E Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!

 

Impressum / Haftungsausschluss / Datenschutz

transparent10

transparent10

© trevedi IT-Consulting GmbH 2012

Login

Login