ADMIN

2024

12

2024-11-28T12:00:00

Backup und Archivierung

SCHWERPUNKT

062

Backup

Exchange

Exchange 2019 mit der Kommandozeile sichern

Doppelt hält besser

von Christian Schulenburg

Veröffentlicht in Ausgabe 12/2024 - SCHWERPUNKT

Microsoft setzt bei Exchange auf Database Availability Groups und verspricht damit backupfreie Umgebungen, sofern mehr als drei Server in einer DAG an verschiedenen Standorten vorhanden sind. Einem Desaster können Sie so in vielen Bereichen vorbeugen, doch gibt es zahlreiche Szenarien, bei denen auf ältere Daten zugegriffen werden muss. Unser Workshop spielt verschiedene Wege zur Sicherung und Wiederherstellung von Exchange 2019 durch und legt den Schwerpunkt auf den Einsatz der Kommandozeile.

Seit Exchange 2007 erfolgt dessen Sicherung über den Volume Shadowcopy Service (VSS). Dabei bringt der Groupware-Server einen eigenen Writer mit, der für eine konsistente Sicherung der Datenbank sorgt. Anzeigen lassen können Sie sich den Writer über den Befehl vssadmin list writers. Die Sicherung selbst übernimmt der Exchange Replication Service, was wie folgt abläuft:
1. VSS fordert den Exchange Writer zum Einfrieren der Umgebung auf.
2. VSS erstellt einen Snapshot der Daten.
Seit Exchange 2007 erfolgt dessen Sicherung über den Volume Shadowcopy Service (VSS). Dabei bringt der Groupware-Server einen eigenen Writer mit, der für eine konsistente Sicherung der Datenbank sorgt. Anzeigen lassen können Sie sich den Writer über den Befehl vssadmin list writers. Die Sicherung selbst übernimmt der Exchange Replication Service, was wie folgt abläuft:
1. VSS fordert den Exchange Writer zum Einfrieren der Umgebung auf.
2. VSS erstellt einen Snapshot der Daten.
3. VSS veranlasst den Exchange Writer zum Wiederanlaufen des Exchange-Servers.
4. VSS bestätigt den erfolgreichen Snapshot – wenn dieser weggeschrieben wurde, verfügen Sie über eine Sicherung.
Sofern Sie Exchange in einer virtuellen Umgebung sichern, achten Sie darauf, dass Sie virtuelle Maschinen (VM) nicht einfach über den Hypervisor wegsichern, sondern ein Agent in der VM ein VSS-Backup durchführt.
Den Backupstatus der Datenbank erhalten Sie über das Kommando Get-MailboxDatabase und den Parameter "LastFullBackup". Wichtig ist außerdem der Parameter "Status", damit Sie die Datenbankeigenschaften korrekt auf den Screen bringen – andernfalls bleiben die Einträge leer:
Get-MailboxDatabase -Status | fl Name,LastFullBackup
Wollen Sie prüfen, ob eine Datenbank gerade gesichert wird, dann werfen Sie einen Blick auf den Inhalt des Felds "BackupInProgress". Auch Informationen zur letzten differenziellen Sicherung lassen sich anzeigen:
Get-MailboxDatabase -Status | fl Name,*Backup*
Die Ausgabe zu allen Backupeigenschaften sehen Sie in Bild 1.
Bild 1: Den Sicherungsstatus der Datenbanken bringt Get-MailboxDatabase auf den Bildschirm.
Sicherung mit Windows Server Backup
Exchange 2019 bringt eine Erweiterung für Windows Server Backup (WSB) mit, damit sich VSS-basierte Sicherungen von Exchange mit den Bordmitteln von Windows durchführen lassen. Die Erweiterung hört auf den Namen "Microsoft Exchange Server Extension for Windows Server Backup" – kurz WSBExchange – und läuft als eigenständiger Dienst, der bei Aufforderung gestartet wird. Bei der Sicherung über WSB sollten Sie folgende Punkte beachten:
- Die Backups erfolgen auf Volume-Ebene – zum Sichern einer Datenbank und deren Protokollen muss also stets das komplette Volume gesichert werden, sodass sich keine einzelnen Daten auswählen lassen.
- Darüber hinaus muss das Backup lokal erfolgen und es ist keine Remotesicherung möglich.
- Sie sollten nur vollständige Sicherungen durchführen, damit nach einem erfolgreichen Durchlauf das Protokoll abgeschnitten wird.
- Bei der Wiederherstellung können Sie gezielt Exchange-Datenbanken auswählen. Diese lassen sich am ursprünglichen oder an einem temporären Speicherort ablegen.
- Das direkte Zurückspielen in eine Wiederherstellungsdatenbank (Recovery Database, RDB) ist nicht möglich und die wiederhergestellten Daten müssen an den Speicherort der RDB verschoben werden.
- Es lassen sich während eines Recovery-Vorgangs keine einzelnen Datenbanken wiederherstellen, sondern nur sämtliche gesicherten Datenbanken zusammen. Dabei spielt es keine Rolle, ob die Datenbanken auf einem oder verschiedenen Volumes lagen.
Um Ihren Exchange-Server mit den Bordmitteln von Windows zu sichern, spielen Sie zunächst über den PowerShell-Befehl Add-WindowsFeature Windows-Server-Backup die Windows-eigene Sicherungssoftware auf. Danach können Sie die GUI-Anwendung nutzen oder die Sicherung über die PowerShell konfigurieren. Weitere Details zu den Befehlen finden Sie in der entsprechenden Referenz [1].
Standardmäßig läuft ein Copy-Backup ab, bei dem die Transaktionsprotokolle nicht abgeschnitten werden. Um diese abzuschneiden und ein ungebremstes Wachstum von Protokolldateien zu verhindern, wählen Sie bei einem Backup in den erweiterten Einstellungen eine "Vollsicherung" aus. Die Art der Sicherung prüfen Sie wiederum über Get-MailboxDatabase und die Felder "LastCopyBackup" beziehungsweise "LastFullBackup" (Bild 1). Um die Sicherung von Exchange dann durchzuführen, starten Sie Windows Server Backup. Beginnen Sie mit einer Einmalsicherung und wählen Sie das Laufwerk mit den Datenbanken und dem Exchange-Programmverzeichnis aus. Dadurch sichern Sie die Exchange-Datenbanken samt den Exchange-Protokolldateien. Sicherheitshalber schließen Sie noch den System-State mit ein.
Wiederherstellung von Datenbanken
Über die Exchange-Wiederherstellungsdatenbank können Sie die Dateien aus einer zurückgesicherten Datenbank einbinden und Informationen extrahieren. Bei der Exchange-Wiederherstellungsdatenbank (Recovery Database, RDB) handelt es sich um eine spezielle Database, bei der die Verwaltung nur über die PowerShell erfolgt. Ein direkter Zugriff auf die Daten über Outlook ist nicht möglich. Auch kann ein Postfach nicht mit einem Benutzerkonto verbunden werden.
Starten Sie zunächst die Wiederherstellung der Exchange-Datenbank über Windows Server Backup und legen Sie die Datenbankdateien in einem temporären Verzeichnis ab. Achten Sie dabei darauf, die Applikationswiederherstellung auszuwählen. In den Details können Sie nachvollziehen, welche Datenbanken wiederhergestellt werden (Bild 2).
Bild 2: Der Restore von Exchange-Datenbanken erfolgt in Windows Server Backup über die Applikationswiederherstellung.
Legen Sie im nächsten Schritt eine Wiederherstellungsdatenbank an. Die RDB wird ähnlich einer neuen Datenbank erstellt und über den Parameter "Recovery" als RDB ausgewiesen. Bei der Erzeugung geben Sie den Server und den Ort für die Datenbankdateien an. Beim Benennen greifen Sie auf den Namen der zuvor wiederhergestellten Datenbankdatei zurück:
New-MailboxDatabase -Recovery -Name RDB1 -Server LABEX19 -EdbFilePath "E:\Recovery\RDB1\DB01.EDB" -LogFolderPath "E:\Recovery\RDB1"
Bevor sich die zurückgespielte Datenbank in der Wiederherstellungsdatenbank mounten lässt, kopieren Sie die Datenbankdatei in das Verzeichnis für die Wiederherstellungsdatenbank und stellen Sie sicher, dass die Database den Status "Clean Shutdown" aufweist. Prüfen Sie den Status von "DB01.edb" mit dem Befehl eseutil /mh .\DB01.edb (Bild 3). Befindet sich die Datenbank im Status "Dirty Shutdown", tippen Sie eseutil /r E00 ein, um ein erweitertes Soft Recovery zu starten und die fehlenden Logs einzuspielen. E00 entspricht dabei dem Präfix der Protokolle. Am besten starten Sie Eseutil in dem Verzeichnis für die Datenbank und den Logs, damit Sie die Pfade über die Parameter "/l" und "/d" nicht angeben müssen. Im Anschluss sollte sich die Datenbank im Status "Clean Shutdown" befinden. Der Start der Datenbank erfolgt über Mount-MailboxDatabase.
Bild 3: Eine Wiederherstellungsdatenbank legen Sie mit New-MailboxDatabase an. Vor dem Mounten muss sich die Datenbank im Status "Clean Shutdown" befinden.
Nachdem die Datenbank eingebunden ist, lassen Sie sich über Get-MailboxStatistics -Database RDB1 die enthaltenen Postfächer anzeigen. Hier sehen Sie auch weitere Informationen zu den Postfächern, etwa die Anzahl (ItemCount) und Größe (TotalItemSize) der E-Mails.
Vorsicht bei der Nutzung von Eseutil
Eseutil ist ein sehr mächtiges Tool, das Admins oft nutzen, um mit dem Parameter "/d" Speicherplatz in einer Datenbank wieder freizugeben. Da der Neuaufbau der Datenbanken sehr lange dauert und deren Größen deutlich zugenommen haben, empfiehlt es sich, hier auf Eseutil zu verzichten, parallel eine neue Datenbank anzulegen und Postfächer zu verschieben. Vorteil: Im Gegensatz zur Nutzung von Eseutil werden Mitarbeiter bei einer Verschiebeaktion während ihrer Arbeit nicht beeinflusst. Bei der Nutzung von Database Availability Groups führt die Defragmentierung der aktiven Datenbank zudem zu einem Reseed aller Datenbankkopien, was kein empfohlenes Vorgehen ist.
Wiederherstellen von E-Mails
Wiederherstellen können Sie E-Mails aus der RDB über den Befehl New-MailboxRestoreRequest. Bei dem Kommando müssen Sie die Quelle – das Postfach aus der RDB – und das Ziel angeben. Beim Ziel sichern Sie das Postfach in das aktuelle Postfach zurück, um die Daten zusammenführen, oder Sie geben einen anderen Zielordner an, in dem Sie die Struktur zurücksichern wollen. Alternativ können Sie die Daten mit dem Parameter "AllowLegacyDNMismatch" in ein alternatives Postfach wiederherstellen. Dieser Wert ist nötig, wenn der LegacyExchangeDN der Postfächer nicht übereinstimmt. Ein direkter Export in eine PST-Datei ist nicht möglich. Dies muss über den Befehl New-MailboxExportRequest erfolgen. Die Art der Wiederherstellung wird weiter über folgende Parameter gesteuert:
- ConflictResolutionOption: Standardmäßig werden alle Quell-E-Mails aus der Wiederherstellungsdatenbank behalten, sodass Sie vorhandene Daten überschreiben. Das Verhalten können Sie über "KeepSourceItem", "KeepLatestItem" und "KeepAll" genau steuern.
- ExcludeDumpster: Darüber regeln Sie die Wiederherstellung des Dumpsters, sodass sich auch vermeintlich gelöschte Objekte zurückholen lassen.
- SourceRootFolder: Hierüber erwirken Sie die Wiederherstellung einer Ordnerstruktur unterhalb dieses Ordners.
- IncludeFolders: Hiermit steuern Sie, welche Ordner Sie zurückholen wollen.
- TargetIsArchive: Die wiederherzustellenden Daten lassen sich mit diesem Parameter auch in das Archiv des Users wiederherstellen.
- TargetRootFolder: Damit geben Sie einen Zielordner an, in dem die E-Mail-Struktur wiederhergestellt werden soll. Ohne diesen Parameter werden die Nachrichten in der vorhandenen Struktur zusammengeführt. Damit es keine Probleme bei der Wiederherstellung gibt, sollte der Ordner bereits existieren.
Um sämtliche Daten des Postfachs in einem Unterordner-Restore wiederherzustellen, nutzen Sie den folgenden PowerShell-Befehl:
New-MailboxRestoreRequest -SourceDatabase RDB1 -SourceStoreMailbox Max -TargetMailbox Max -TargetRootFolder Restore
Die aktuellen Restore-Vorgänge mit dem genauen Status erhalten Sie mittels
Get-MailboxExportRequest | Get-MailboxExportRequestStatistics
Wollen Sie sämtliche Postfächer einer RDB zurückspielen, müssen Sie zunächst alle Postfächer abfragen. Das Ergebnis der Abfrage übergeben Sie dann an den Befehl New-MailboxRestoreRequest:
$mailboxes = Get-MailboxStatistics -Database RDB1
foreach($mailbox in $mailboxes) {New-MailboxRestoreRequest -SourceDatabase RDB1 -SourceStore  Mailbox $mailbox.DisplayName -TargetMailbox $mailbox.DisplayName}
Nach der Wiederherstellungsaktion sollten Sie gleich wieder aufräumen. Die RDB wird dafür über das Cmdlet Remove-MailboxDatabase gelöscht.
Bild 4: Über New-MailboxRestoreRequest holen Sie die E-Mails aus einer Wiederherstellungsdatenbank zurück, über Get-MailboxRestoreRequestStatistics prüfen Sie den aktuellen Status.
Ganzen Server wieder in Betrieb nehmen
Exchange kennt keinen Reparaturmodus, über den sich ein defekter Server reparieren lässt. Ein häufig genutzter Weg bei Problemen ist deshalb die Installation des neuesten kumulativen Updates, das alle Komponenten erneuert. Dieser Schritt kommt einer Neuinstallation gleich, wobei im Vergleich zu dieser die Konfiguration beibehalten wird und nicht erneut zu durchlaufen ist.
Im schlimmsten Fall, etwa einem Hardwaredefekt, kommen Sie mit dieser Option aber nicht weiter. Unter dieser Bedingung ist es angebracht, den Exchange-Server aus den Daten des Active Directory zu rekonstruieren. Mit der Installationsoption "/m:RecoverServer" richten Sie anhand der Informationen und Einstellungen aus dem AD einen Server mit dem gleichen Namen ein.
Zunächst installieren Sie einen Server mit gleichem Betriebssystem und gleichem Namen. Achten Sie auf die Übereinstimmung des Betriebssystems und der Exchange-Version, damit Sie im Anschluss eine von Microsoft supportete Umgebung haben. Auch setzen Sie bestenfalls eine Hardware ein, die mindestens die gleichen Leistungsmerkmale aufweist. Weiterhin muss dieselbe Festplattenkonfiguration vorliegen, damit es bei der Installation keine Probleme gibt.
Bevor Sie den Server in die Domain aufnehmen, setzen Sie zunächst das Computerkonto zurück oder löschen Sie das AD-Objekt. Im nächsten Schritt übernehmen Sie den neuen Server wieder in die Domain, Exchange muss dabei im gleichen Installationsverzeichnis liegen. Standardmäßig handelt es sich um das Verzeichnis "%Programme%\Microsoft\ Exchange Server\V15"".
Sollten Sie sich beim Verzeichnis nicht sicher sein, fragen Sie den Pfad über ADSI Edit im AD ab. Der Wert ist über das Attribut "msExchInstallPath" in den Eigenschaften des Servers im Pfad "CN=ExServerName,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=ExOrg Name,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=DomainName,CN=Com" zu finden. Einen abweichenden Pfad geben Sie während des Setups über die Option "/TargetDir" ein. Im Anschluss installieren Sie die weiteren Voraussetzungen für Exchange, etwa die Microsoft-Unified-Communications-Managed-API-4.0, nach. Die Voraussetzung richten sich nach dem Betriebssystem [2].
Ist alles vorbereitet, starten Sie die Installation von Exchange 2019. Nutzen Sie dabei die gleiche Version, die bisher installiert war. Prüfen können Sie die Build-Nummer ebenfalls über ADSI Edit und das Feld "SerialNumber". Sollten Sie noch eine Exchange Management Shell im Zugriff haben, lässt sich die Version auch über (Get-ExchangeServer).AdminDisplayVersion abfragen. Das Ergebnis prüfen Sie auf der Seite [3]. Der Befehl zur Installation lautet dann
Setup /m:RecoverServer /InstallWindowsComponents /IAcceptExchangeServerLicenseTerms.
Mit der Option "/InstallWindowsComponents" werden fehlende Windows-Voraussetzungen nachinstalliert und über "/IAcceptExchangeServerLicenseTerms" stimmen Sie automatisch den Lizenzbedingungen zu.
Im Anschluss sind alle Rollen installiert und Sie müssen nun die Datenbank wiederherstellen, sofern dies noch nicht geschehen ist. Handelt es sich bei dem wiederherzustellenden Server um das Mitglied einer Database Availability Group, müssen Sie ein paar weitere Schritte beachten. Entfernen Sie vor der Wiederherstellung über Remove-MailboxDatabaseCopy zunächst alle Datenbankkopien von dem Server. Im Anschluss löschen Sie den Server auch aus der DAG über den PowerShell-Befehl Remove-DatabaseAvailabilityGroupServer.
Danach können Sie den Server mit RecoverServer wiederherstellen. Zum Abschluss fügen Sie den Server der DAG mit den Befehlen Add-DatabaseAvailabilityGroupServer und Add-MailboxDatabaseCopy wieder hinzu.
Bild 5: Beim Recovery eines kompletten Servers müssen Sie Exchange ins gleiche Verzeichnis installieren. Den originalen Pfad lesen Sie aus dem Active Directory mittels ADSI Edit aus.
Flexibel: Datenbankportabilität
Mithilfe der Datenbankportabilität können Sie Datenbanken auf anderen Postfachservern der Organisation verschieben und einbinden. Wichtig ist dabei der Name der Exchange-Organisation. Haben Sie sich eine Testumgebung mit dem gleichen Namen erstellt, können Sie Datenbanken in dieser Umgebung mounten und zum Beispiel Wiederherstellungsaktionen durchführen. Es muss dabei stets die gleiche Exchange-Version zum Einsatz kommen. Dies gilt auch für kumulative Updates.
Erstellen Sie zunächst über New-MailboxDatabase eine leere Datenbank auf dem Zielserver mit der identischen Bezeichnung. Aktivieren Sie die Überschreibbarkeit der Datenbank mittels
Set-MailboxDatabase DB01 -AllowFileRestore $true
Heben Sie gegebenenfalls die Bereitstellung auf und kopieren Sie die Datenbankdateien (EDB-Datei, Protokolldateien und Exchange-Suchkatalog) an den Ort der neuen Datenbank. Im Anschluss mounten Sie die Datenbank über Mount-Database DB01. Damit die Benutzer den Weg zum Server finden, ändern Sie die Benutzerattribute mit dem folgenden Kommando:
Get-Mailbox -Database DB01 |where {$_.ObjectClass -NotMatch '(SystemAttendantMailbox|ExOleDbSystemMailbox)'}| Set-Mailbox -Database DB02
Die Anwender sollten nun wieder in der Lage sein, auf ihr Postfach zuzugreifen. Microsoft beschreibt das Vorgehen ebenfalls sehr ausführlich [4].
Fliegender Wechsel: Dial-Tone-Portabilität
Die Funktion der Portabilität können Sie sich für größere Wiederherstellungs-Szenarien zunutze machen, um die Restore-Zeiten zu reduzieren. Bei der sogenannten Dial-Tone-Portabilität erstellen Sie zunächst eine temporäre, leere Datenbank. Mit dieser ermöglichen Sie Mitarbeitern das Senden und Empfangen. In der Zwischenzeit lässt sich die originale Datenbank in eine RDB wiederherstellen oder reparieren. Im Anschluss tauschen Sie die Datenbankdatei aus und führen einen Abgleich der Datenbanken durch. Die Schritte sehen im Detail wie folgt aus – erstellen Sie zunächst die leere Datenbank und weisen Sie ihr den Benutzer zu:
New-MailboxDatabase DTDB1
Get-Mailbox -Database DB1 | Set-Mailbox -Database DTDB1
Alternativ verschieben Sie alle Datenbankdateien der Problemdatenbank an einen sicheren Ort. Während der Bereitstellung legt Exchange automatisch eine leere Datenbank an, die den Benutzern direkt zu Verfügung steht. Benutzer, die mit dem Cache-Mode arbeiten, erhalten einen Hinweis und können offline mit ihren alten E-Mail-Daten arbeiten. Das Senden und Empfangen ist dann aber nicht möglich.
Erzeugen Sie nun eine Wiederherstellungsdatenbank über New-MailboxDatabase -Recovery und führen Sie hier die Wiederherstellungsaktionen durch. Im Anschluss haben Sie eine leere temporäre Datenbank, die sich nach und nach mit Daten füllt, und eine Wiederherstellungsdatenbank mit den Bestandsdaten. Ein Exportieren aus der Wiederherstellungsdatenbank wäre aufgrund der Größe sehr zeitaufwendig. Einfacher ist es, die Datenbanken untereinander zu tauschen und nur die geänderten Daten zu exportieren und in dem Postfach zusammenzuführen.
Aus diesem Grund dismounten Sie als Nächstes die Dial-Tone- und die Wiederherstellungsdatenbank:
Dismount-Database DTDB1
Dismount-Database RDB1
Verschieben Sie die Datenbanken aus dem Ordner der Dial-Tone-Datenbank in den der Wiederherstellungsdatenbank und andersherum. Danach können Sie die Datenbanken wieder einbinden. Benutzer können nun wieder auf die ursprünglichen Postfachdaten zurückgreifen. Zum Abschluss überführen Sie die neuen Elemente aus der temporären in die wiedergeherstellte Datenbank. Diese Daten beziehen sich nur auf die Zeit der Wiederherstellung und sollten gering sein. Verwendung findet erneut der Befehl New-MailboxRestoreRequest:
Get-Mailbox -Database DTDB1 | %{ New-MailboxRestoreRequest -SourceStoreMailbox $_.Exchange   Guid -SourceDatabase RDB1 -TargetMailbox $_ }
Als letzte Aktion heben Sie mit diesen Befehlen die Bereitstellung auf und löschen die Wiederherstellungsdatenbank:
Dismount-Database RDB1
Remove-MailboxDatabase RDB1
Fazit
Exchange 2019 bringt alles mit, um Daten einfach zu sichern und bietet viel Flexibilität bei der Wiederherstellung. Microsoft weist zwar oft darauf hin, dass bei der Verwendung von mindestens drei Datenbankkopien keine Sicherung nötig ist. Ob das stimmt, hängt jedoch von vielen Faktoren ab, und Admins dürften ruhiger schlafen, wenn Wiederherstellungsszenarien getestet in der Schublade liegen und nicht erst im Fehlerfall über die nächsten Schritte nachgedacht werden muss.
(ln)
Link-Codes