Восстановление почтовых ящиков в Exchange 2013

MapiExceptionNetworkError: Unable to mount database

www.microsoft.com

Восстановление почтовых ящиков для кого-то может являться весьма редкой задачей, а кто-то этим занимается чуть ли не ежедневно. Кому-то может потребоваться выполнить эту задачу для восстановления пары случайно удаленных генеральным директором писем, а кому-то придется поднимать целые ящики многих юзеров. В любом случае «прелюдией»  к этой задаче должен быть грамотно поставленный процесс резервного копирования баз данных Exchange 2013.


Найти больше информации по настройке и администрированию Exchange 2013 на моем блоге вы сможете в основной статье тематики — Exchange 2013 — Установка, настройка, администрирование.


Восстановление почтовых ящиков

Весь процесс восстановления подразумевает два этапа — подготовка базы данных с необходимой вам информацией и непосредственно этап вытягивания данных из этой БД. Для выполнения последней задачи воспользуемся особым типом баз данных Exchange 2013 — базой данных восстановления.

Подготовка базы

Сценарий восстановления данных предполагает, что у вас имеется исправная копия БД, из которой необходимо извлечь нужную вам информацию — папки с письмами или целые почтовые ящики пользователей. В моем случае на руках был архив диска с необходимой базой, сделанный штатными средствами резервного копирования и восстановления Windows Server 2012 R2 — Windows Server Backup.

Про резервное копирование баз с помощью WSB читайте в статье Резервное копирование баз данных Exchange 2013.

Восстановление из архива

Процесс восстановления достаточно простой, тем не менее пройдемся по основным шагам. Напоминаю, что в вашем случае сценарий восстановления может отличаться вплоть до того, что WSB не будет использоваться вообще (если у вас внедрены средства резервного копирования сторонних производителей).

vosstanovlenie-pochtovyh-yashhikov-01

vosstanovlenie-pochtovyh-yashhikov-02

Поскольку базу мы восстановили в другое расположение, то перед тем как будет возможность её смонтировать, необходимо произвести некоторые манипуляции.

Приведение к согласованному состоянию

Открываем Powershell и переходит в каталог, в который только что была восстановлена база:

Set-Location E:\DB\restored

Проверяем её состояние командой:

eseutil.exe /mh UserDatabase05.edb

Проверяем статус:

vosstanovlenie-pochtovyh-yashhikov-03

Имея базу в состоянии Dirty Shutdown (читайте Хранилище Exchange 2013), мы не сможем её смонтировать, а значит нужно начать с мягкого восстановления, которое в общем плане выглядит следующим образом:

eseutil.exe /r E01

Однако в нашем случае этот процесс будет немного отличаться, ведь мы восстановили базу в другое расположение, в то время как файлы «помнят» где они должны лежать. Чтобы в этом убедиться, достаточно проверить заголовок любого журнала:

vosstanovlenie-pochtovyh-yashhikov-04

Именно поэтому пути нужно перезаписать, указав их в явном виде ключами /D /L /S:

eseutil.exe /r E01 /D E:\DB\restored /L E:\DB\restored /S E:\DB\restored

vosstanovlenie-pochtovyh-yashhikov-05

Примечание: если у вас полный путь до файла БД содержит пробелы, не забудьте взять его в кавычки.

Снова проверяем состояние:

vosstanovlenie-baz-dannyh-exchange-2013-22

На этот раз с базой все в порядке, можно приступать к восстановлению ящиков/писем, предварительно удалив все лишние файлы из каталога восстанавливаемой базы, кроме файла самой БД.

Примечание: база приведена в согласованное состояние, а значит в журналах транзакций и других файлах больше нет необходимости и они будут только мешать монтированию базы.

Переходим к подключения базы.

Подключение

Для подключения только что восстановленного файла необходимо создать базу данных восстановления 1:

New-MailboxDatabase -Name recovery -Recovery -Server exch02 -EdbFilePath E:\DB\restored\UserDatabase05.edb -LogFolderPath E:\DB\restored

vosstanovlenie-pochtovyh-yashhikov-06

Примечание: обратите внимание на параметр -Recovery — он говорит о создании особого типа БД — базы данных восстановления. У неё есть некоторые особенности:

  • она не входит в ограничения 5 БД для версии Standard и 100 — для Enterprise;
  • такую базу на сервере можно создать лишь одну;
  • клиенты не могут к ней подключаться;
  • управлять базой можно только через Powershell, в EAC вы её не увидите.

и многие другие. Подробнее читайте в официальной документации 2.

Перезапускаем службу банка данных:

Restart-Service MSExchangeIS

Монтируем базу командой:

Mount-Database recovery

Видим базу восстановления среди других:

Get-MailboxDatabase | ft -AutoSize

vosstanovlenie-pochtovyh-yashhikov-07

На этом этапе мы имеем восстановленную и смонтированную базу в исправном состоянии и самое время перейти к восстановлению нужной информации.

Восстановление данных

Проверим содержимое восстановленной базы:

Get-MailboxStatistics -Database recovery | ft DisplayName,MailboxGUID,ItemCount -AutoSize

vosstanovlenie-pochtovyh-yashhikov-09

Для восстановления данных будет использоваться командлет New-MailboxRestoreRequest.

Восстановление папок

Для восстановления какой-либо папки необходимо ввести её имя после параметра -IncludeFolders командлета New-MailboxRestoreRequest:

New-MailboxRestoreRequest -SourceDatabase recovery -SourceStoreMailbox 09d90070-0338-48f3-a699-1f7890cf7354 -TargetMailbox lena@corp.bissquit.com -IncludeFolders Входящие -TargetRootFolder Recovered

vosstanovlenie-pochtovyh-yashhikov-10

Примечание: допускается использование личных имен папок, которые вы им дали при создании, а также использование общеизвестных стандартных имен, не зависящих от языка (например папка inbox). Во втором случае необходимо использовать специальные символы, подробнее читайте в документации к командлету 3.

Просматривать объемные запросы на восстановление можно командлетом Get-MailboxRestoreRequest 4:

Get-MailboxRestoreRequest

vosstanovlenie-pochtovyh-yashhikov-12

После запроса на восстановление перезапустите аутлук или обновите страничку OWA (в зависимости от того что используете):

vosstanovlenie-pochtovyh-yashhikov-11

В некоторых случаях восстановления единичных папок недостаточно, тогда подойдет функционал восстановления ящиков целиком, о чем ниже.

Восстановление почтовых ящиков

Для восстановления ящика пользователя целиком выполните команду:

New-MailboxRestoreRequest -SourceDatabase recovery -SourceStoreMailbox 09d90070-0338-48f3-a699-1f7890cf7354 -TargetMailbox lena@corp.bissquit.com

vosstanovlenie-pochtovyh-yashhikov-13

Стоит отметить, что если в текущем ящике пользователя будут присутствовать какие-либо другие почтовые элементы (папки, письма и пр.), то во время восстановления данных они не будут утеряны. По сути восстанавливаемое содержимое ляжет поверх существующего.

Примечание: используйте ключ -AllowLegacyDNMismatch, если значения legacyExchangeDN для исходного и целевого почтовых ящиков не совпадают. Такая ситуация может наблюдаться при восстановлении данных в ящик другого пользователя, либо если ящик пользователя был отключен и включен снова.

Get-MailboxRestoreRequest -Name MailboxRestore1

vosstanovlenie-pochtovyh-yashhikov-14

Если у вас есть несколько запросов на восстановления, указывайте имя необходимого вам запроса как на примере выше.

Как только процесс извлечения полезных данных завершен, не поленитесь подчистить за собой оставшиеся запросы на восстановление:

Get-MailboxRestoreRequest -Status Completed | Remove-MailboxRestoreRequest

На этом небольшая статья-памятка по использованию функционала баз данных восстановления завершена. За более подробной информацией обращайтесь к официальной документации 5.

comments powered by HyperComments