Automatisieren Exchange Datensicherung mit der Windows Server Sicherung

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.

Backup Exchange mit Windows Server Sicherung

von Arno Hohenschuh

Im ersten Teil wird beschrieben, wie mit der Windows Server Sicherung ein Backup von Exchangedatenbanken durchgeführt werden kann. Der zweite Teil beschreibt, wie das Backup automatisiert werden kann. In dritten Teil wird beschrieben, wie die Wiederherstellung mit dem Sicherungsfeature von Windows Server 2010 R2 durchgeführt 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.

Nach der Installation stehen zwei Möglichkeiten zur Verfügung, die Datensicherung zu starten:

  1. GUI
  2. Kommandozeile (wbAdmin.exe)

Die GUI von Windows Server Backup lässt nur eine sehr einfache Verwaltung der Backups zu. Zum Beispiel lassen sich geplante Sicherungsaufgaben nur sehr eingeschränkt durch die GUI planen. Die Kommandozeile stellt ebenfalls nur ein paar Features zur Verfügung. Aber in Verbindung mit einer Batchdatei oder einem PowerShell-Script und der Möglichkeit, durch die Aufgabenplanung diese flexibel ausführen zu lassen empfehlen, wird die Kommandozeile interessant.

Sicherung mit der GUI

Starten Sie das Programm Windows Server-Sicherung:

 

 

Nun Sicherungszeitplan auswählen:

Benutzerdefinierte Sicherung auswählen. Dadurch haben wir die Möglichkeit zu bestimmen, welche Daten gesichert werden sollen.

In diesem Beispiel liegen die Datenbanken in dem Verzeichnis e:\datenbanken und die Transaktionsprotokolle in dem Verzeichnis f:\tlogs.

Die erweitern Einstellungen anklicken. Dadurch kann ein vollständiges VSS-Backup ausgewählt werden.

Eine vollständige VSS-Sicherung erlaubt es ESE (Extensible Storage Engine, die Exchange Datenbank-Engine) nach erfolgreicher Sicherung die Transaktionsprotokolle abzuschneiden.

Hier zeigen sich die Schwächen der GUI. Es ist nur möglich eine tägliche Sicherung zu planen, zur feineren Granulierung muss die Aufgabenplanung verwendet werden.

Windows Server Backup unterstützt keine Bandlaufwerke!  Das Windows Server Backup kann verwendet werden, um ein Backup-to-File durchzuführen und um die gesicherten Daten dann anschließend  mit geeigneter Software als Filebackup zu sichern.

Achtung: Bei Einer Sicherung in eine Freigabe werden vorhergehende Sicherungen überschrieben. Es wird also keine Sicherungshistorie geführt sondern es existiert IMMER NUR EINE alte Sicherung! Daher sollte in solch einem Szenario die Exchange-Datensicherung immer ausgelagert werden. Die Sicherung wird in diesem Beispiel in \\mbx2\backup abgelegt.

Bei dem Benutzer „Backup“ handelt es sich um ein Mitglied in der Gruppe Sicherungs-Operatoren.

Nachdem der der Sicherungsauftrag erstellt wurde, diesen testen. Dazu unter Aktionen den Auftrag einmal ausführen:

Dort wählen wir „Optionen für geplante Sicherung“ aus. Damit wird der soeben erstelle Sicherungsauftrag ausgeführt.

Zuerst wird nun eine Schattenkopie der ausgewählten Datenbanken und Logdateien erzeugt. Anschließend wird eine Konsistenzprüfung der Datenbanken durchgeführt. Nach Bestehen der Konsistenzprüfung werden die Daten an den angegebenen Zielort in eine VHD-Datei kopiert.

Ob die Datensicherung erfolgreich war kann auch anhand des Ereignisprotokolls überprüft werden. So sieht die Meldung über eine erfolgreiche Datenbanksicherung aus.

Beispiel: Event für DB1

MSExchangeIS ID 9780 wird protokolliert, wenn Transaktionsprotokolle erfolgreich abgeschnitten worden sind. MSExchangeIS ID 9827 wird protokolliert, wenn keine Transaktionsprotokolle abgeschnitten worden sind.

Sicherung per Kommandozeile (wbAdmin.exe)

Die Sicherung per Kommandozeile ist bei weitem nicht so aufwendig wie die Sicherung per GUI.

In folgendem Beispiel wird eine Sicherung angestoßen, die die Datenbanken im Verzeichnis e:\Database und die Transaktionsprotokolle im Verzeichnis f:\tlogs sichert. Nach erfolgreicher Sicherung sollen die Transaktionsprotokolle abgeschnitten werden.

 wbadmin.exe start backup -include:”E:\DATABASE,F:\TLOGS” -backupTarget:\\mbx2\Backup -vssFull –quiet

Auch hier kann abschließend das Ereignisprotokoll nach MSExchangeIS ID 9780 oder ID 9827 abgesucht werden.

Das nächste [Dokument]  zeigt auf, wie mit einem Script eine automatisierte Sicherung durchgeführt werden kann (Veröffentlichung folgt).

Probleme mit der Kalenderfreigabe in OWA 2010

Von: Klaus Brockerhoff

Nach einer Migration von Exchange 2003 auf Exchange 2010 stießen wir in OWA auf folgendes Problem:

Benutzer A erstellt mit OWA eine Kalenderfreigabe für den Benutzer B. Als Benutzer B die Mail mit der Freigabe öffnet und auf den dort angegebenen Link klickt, erhält er folgende Fehlermeldung:

Fehlermeldung bei Öffnen einer Freigabemail in OWA
Fehlermeldung bei Öffnen einer Freigabemail in OWA

Wir konnten folgendes feststellen:

Der legacyExchangeDN des Benutzers A (Benutzer der den Kalender freigegebenen hat), war der legacyExchangeDN aus der Exchange 2003 Administrativen Gruppen, aus der das Postfach vor der Migration stammte:
 
/O=firma.de/OU=Erste Administrative Gruppe/cn=Recipients/cn=BenutzerA
 
Nach Änderung des legacyExchangeDN in den legacyExchangeDN der administrativen Gruppe von Exchange 2010 konnte Benutzer B die dann neu erstellte Kalenderfreigabe annehmen:
 
/o=firma.de/ou=Exchange Administrative Group(FYDIBOHF23SPDLT)/cn=Recipients/cn=BenutzerA
 
Nun gibt es freilich ein neues Problem:
 
Jeder, der nun BenutzerA eine Mail schickt und dabei im AN-Feld in Outlook den Nickname Cache verwendet oder einen eigenen Kontakt wählt, erhält eine Unzustellbarkeitsbericht mit etwa folgender Diagnoseinformation:
 
Diagnostic information for administrators:
….
IMCEAEX-_O=Firma+2EDE_OU=Erste+20Administrative+20 Gruppe_cn=Recipients_cn=BenutzerA@firma.de
 
#550 5.1.1 RESOLVER.ADR.ExRecipNotFound; not found ##
….
 
Benutzer A konnte sich mit seinen MAPI-Profil auch nicht mehr über Outlook mit Exchange verbinden. Das Profil hätte neu erstellt werden müssen.
 
Lösung
Der alte legacyExchangeDN wird als X500 Adresse des Benutzers eingerichtet.
Wir haben das mit der Exchange Shell mit folgenden Befehlen gelöst:
 
$MailBox = get-Mailbox BenutzerA
$mailBox.EmailAddresses+=”X500:
/O=firma.de/OU=Erste Administrative Gruppe/cn=Recipients/cn=BenutzerA

set-mailbox BenutzerA -EmailAddresses $m.EmailAddresses
 
Die X500-Adresse wird aus den Diagnoseinformationen des Unzustellbarkeitsbereichts ermittelt: Aus
 
_O=Firma+2EDE_OU=Erste+20Administrative+20 Gruppe_cn=Recipients_cn=BenutzerA@firma.de
 
wird
 
/O=Firma.de/ou=Erste Administrative Gruppe/cn=Recipients/cn=BenutzerA
 
Wobei die HEX-Angaben nach “+” in Zeichen übersetzt werden müssen:
_ = /
+2E = . (Punkt)
+20 = Leerzeichen
 
 Mit einem Skript haben wir anschließend für alle Postfächer die hier beschriebenen Änderung durchgeführt.
 
Nach Rücksprache (info@trevedi.de) stellen wir das Skript gerne zur Verfügung.