Przywracanie danych z bazy danych odzyskiwania na serwerze Exchange 2013/2016

Kopie baz danych serwera pocztowego Exchange można wykonać przy użyciu wbudowanego narzędzia Windows Backup lub aplikacji firm trzecich np. IBM Spectrum Protect. Datę ostatniej kopii bazy danych możemy odczytać przy użyciu cmdletu Get-MailboxDatabase z przełącznikiem -Status, jak poniżej:
Get-MailboxDatabase -Identity mdb1 -status | Format-Table Name,LastFullBackup
Podczas uruchamiania cmdletu należy pamiętać o użyciu przełącznika -Status, w przeciwnym razie wartość parametru LastFullBackup będzie pusta.

Sprawdzenie daty wykonania ostatniej pełnej kopii bazy danych. Zdjęcie 1. Sprawdzenie daty wykonania ostatniej pełnej kopii bazy danych.

W przypadku potrzeby odzyskania danych z uszkodzonej bazy danych, mamy do dyspozycji kilka sposobów, w zależności od tego, jak utworzona została kopia zapasowa oraz jak wdrożony został program Exchange. Idealna metoda to włączenie nadmiarowości. Polega ona na użyciu sieci DAG, która dokona replikacji baz danych skrzynek pocztowych do jednego lub kilku serwerów i w przypadku awarii zapewni automatyczne przejście do trybu pracy awaryjnej. Jednakże może zaistnieć konieczność pobrania dawnych danych z bazy danych, odzyskanej z kopii zapasowej. W takiej sytuacji pierwszym krokiem jest przywrócenie danej bazy danych z kopii zapasowej wykonanej za pomocą kroków wymaganych przez stosowane rozwiązanie do tworzenia kopii zapasowych. Załóżmy na przykład, że przywróciliśmy plik bazy danych mdb1 w katalogu E:\Recovery\mdb1, a baza danych została przeniesiona do stanu czystego zamknięcia. Za pomocą następujących kroków można utworzyć bazę danych odzyskiwania i przywrócić dane skrzynek pocztowych:
New-MailboxDatabase -Name RecoveryMDB1 -EdbFilePath E:\Recovery\mdb1\mdb1.edb -LogFolderPath E:\Recovery\mdb1 -Recovery -Server ex1
Użycie przełącznika -Recovery pozwala określić, że jest to specjalny typ bazy danych, która będzie wykorzystywana tylko do odzyskiwania danych i nie powinna być używana do przechowywania produkcyjnych skrzynek pocztowych. Wykonanie komendy spowoduje pojawienie się ostrzeżenia, że baza danych odzyskiwania została utworzona na podstawie pliku istniejącej bazy danych. W kolejnym kroku należy sprawdzić stan bazy danych przy urzyciu narzędzia eseutil.exe. Wykonanie polecenia eseutil.exe /mh E:\Recovery\mdb1\mdb1.edb a następnie eseutil.exe /R E:\Recovery\mdb1\E00 /D. Pierwsze polecenie pozwala sprawdzić stan bazy danych. Musi ona być w stanie czystego zamknięcia (State: Clean Shutdown). Jeżeli tak nie jest to do bazy danych należy wczystać wszystkie niezatwierdzone zmiany i doprowadzić ją do stanu czystego zamknięcia. To jest zadaniem drugiego polecenia.
Następnie baza danych musi zostać podmontowana. Wykonane to zostanie poleceniem: Mount-Database -Identity RecoveryMDB1.
Po zamontowaniu bazy danych można ją przeszukać pod kątem skrzynek pocztowych używając polecenia: Get-MailboxStatistics -Database RecoveryMDB1 | Format-Table DisplayName,MailboxGUID,LegacyDN -AutoSize. Odzyskanie danych z jednej lub kilku skrzynek pocztowych wykonać należy przy użyciu cmdletu New-MailboxRestoreRequest, który wprowadzony został w dodatku SP1 programu Exchange 2010.
Poniższe polecenie spowoduje przywrócenie danych ze skrzynki użytkownika "Joe Smith" znajdującej się w bazie RecoveryMDB1 do produkcyjnej skrzynki użytkownika "Joe Smith" znajdującej na serwerze Exchange. New-MailboxRestoreRequest -SourceDatabase RecoveryMDB1 -SourceStoreMailbox "Joe Smith" -TargetMailbox joe.smith.
Dodatkowe przełączniki można wykorzystać, aby szczegółowo kontrolować przywracanie danych ze skrzynki pocztowej. Za pomocą następujących parametrów można dostosować zachowanie przywracania:
- ConflictResolutionOption: ten parametr określa, jakie działania należy podjąć, jeśli w docelowej skrzynce pocztowej znajduje się kilka pasujących wiadomości. Parametr ten może przyjmować następujące wartości: KeepSourceltem, KeepLatestltem lub KeepAll. Jeśli nie podamy żadnej wartości, domyślnie zostanie wykorzystana KeepSourceltem.
- ExcludeDumpster: za pomocą tego przełącznika można określić, że podczas przywracania nie należy uwzględnić kosza.
- SourceRootFolder: za pomocą tego parametru można przywrócić tylko dane z głównego foldera skrzynki pocztowej.
- TargetlsArchive: za pomocą tego przełącznika można wykonać odzyskiwanie skrzynki pocztowej do archiwalnej skrzynki pocztowej.
- TargetRootFolder: za pomocą tego parametru możemy przywrócić dane do określonego foldera w głównym folderze docelowej skrzynki pocztowej. Jeśli nie podamy żadnej wartości, dane zostaną przywrócone i umieszczone w istniejących folderach, a jeśli foldery te nie istnieją, zostaną utworzone w docelowej skrzynce pocztowej.

Oprócz cmdletu New-MailboxRestoreRequest, mamy do dyspozycji cały zestaw cmdletów, służących do obsługi żądań przywracania skrzynek pocztowych. Oto pozostałe dostępne cmdlety:
Get-MailboxRestoreRequest: zwraca szczegółowe dane o stanie żądań przy cania skrzynek pocztowych.
Remove-MailboxRestoreRequest: usuwa całkowicie lub częściowo zakończone żądania przywracania.
Resume-MailboxRestoreRequest: wznawia żądanie przywracania, które zostało wstrzymane lub zawiodło.
Set-MailboxRestoreRequest: za jego pomocą można zmienić opcje żądania przywracania po utworzeniu żądania.
Suspend-MailboxRestoreRequest: wstrzymuje żądanie przywracania w danym momencie po utworzeniu żądania, ale zanim żądanie osiągnie stan Complete.

Jeżeli zajdzie potrzeba odzyskania wszystkich skrzynek pocztowych z kopii zapasowej i umieścić je w odpowiednich docelowych skrzynkach pocztowych, które są obecnie online, należy skorzystać z poniższego skryptu:

$Mailboxes=Get-MailboxStatistics -Database RecoveryMDB1
ForEach ($i in $Mailboxes) {
New-MailboxRestoreRequest -SourceDatabase RecoveryMDB1 -SourceStoreMailbox $mailbox.DisplayName -TargetMailbox $mailbox.DisplayName
Start-Sleep -Second 100
}


Dodatkowe informacje:
- CodeTwo: How to use ESEUTIL tool?
- MegaBite: Using ESEUTIL to recover and repair exchange database.