вторник, 22 октября 2013 г.

Резервное копирование и восстановление MS Exchange 2013

Доброго времени суток, коллеги.
Ни для кого не секрет, что корпоративная почта — неотъемлемая часть бизнес-процесса современной компании. Чаще всего для организации корпоративной почты многие компании используют свои почтовые сервера. Одним из самых популярных почтовых решений в мире является решение от компании Microsoft – Exchange Server, т.к. это не просто корпоративная почта, это так же и адресная книга с мощным поиском, совместные календари, списки событий, помощь в организации встреч и многое другое.
В данной статье будет рассмотрено резервное копирование и восстановление сервера MS Exchange 2013 стандартными средствами.
Статья будет состоять из следующих пунктов:

1. Резервное копирование Exchange 2013
1.1.Полное резервное копирование сервера
1.2.Резервное копирование базы данных
2. Восстановление Exchange 2013
2.1.Полное восстановление Exchange 2013
2.2.Восстановление базы данных Exchange 2013
2.3.Восстановление почтового ящика пользователя
2.3.1.      Восстановление обратимо удаленного почтового ящика (Soft-Deleted)
2.3.2.      Восстановление отключенного почтового ящика (Disabled)
2.4.Восстановление отдельного письма

1.1.Полное резервное копирование сервера.

Добавляем роль «Windows Server Backup»
Заходим в «Server Manager > Under Configure this Server > Select Add Roles > Features» и выбираем «Windows Server Backup», нажимаем «Next>»
Начнется установка роли «Windows Server Backup» на сервер Exchange 2013.
После установки перезапускаем сервер и заходим в консоль управления «wbadmin».
Создадим полную резервную копию данного сервера и поместим ее на сетевую папку «\\backup.test.local\Backup_mail»
Нажимаем на «Backup Once», далее «Next>»
Выбираем «Full Backup», далее «Next>»
Далее «Remote shared folder»
Прописываем путь до сетевой папки, в нашем случае «\\backup.test.local\Backup_mail», нажимаем «Next»
Далее нажимаем «Backup», начнется полное резервное копирование.

1.2.Резервное копирование базы данных.

Создадим резервную копию базы данных почтовых ящиков Exchange и поместим ее на сетевую папку «\\backup.test.local\Backup_mail\mailbox». Заходим в консоль управления «wbadmin».
Нажимаем на «Backup Once», далее «Next>». Выбираем «Custom», далее «Next>».
Нажимаем “Add Items” и выбираем папку с базой данных Exchange. В нашем случае: «C:\»
Далее «Advanced Settings», выбираем «VSS Settings», нажимаем «Ок».
Выбираем «Remote shared folder»
В поле «Location» вводим путь до сетевой папки, в нашем случае «\\backup.test.local\Backup_mail\mailbox»
Запускаем резервное копирование базы данных.
2.1. Полное восстановление Exchange 2013.
Загружаем компьютер с установочного диска Windows. Попадаем в консоль установки Windows «Windows Setup».

Нажимаем «Next», в следующем окне нажимаем на «Repair your computer»
Выбираем «Troubleshoot»
Далее «Command Prompt»
Присвоим сетевому интерфейсу «Ethernet» IP адрес 10.0.1.95/24, основной шлюз 10.0.1.1 и DNS 10.0.1.6, для этого в командной строке водим:
>wpeinit
>netsh interface ipv4 set address name=”Ethernet” static 10.0.1.95 255.255.255.0 10.0.1.1
>netsh interface ipv4 add dns “Ethernet” 10.0.1.6
Далее просматриваем атрибуты и версию резервной копии:
>wbadmin get versions –BackupTarget:\\backup.test.local\Backup_mail
Запускаем процесс полного восстановления из резервной копии:
>wbadmin start sysrecovery –version:10/08/2013-13:08 –BackupTarget:\\backup.test.local\Backup_mail restoreallvolumes -recreatedisks
Соглашаемся, нажав «Y».
После завершения процесса восстановления, перезагружаем компьютер.
Сервер полностью восстановится. Можно продолжать работы.

2.2. Восстановление базы данных Exchange 2013

Для восстановления базы данных можно воспользоваться как полной резервной копией Windows 2012, так и резервной копией базы данных Exchange 2013.
Для примера воспользуемся резервной копией базы данных Exchange 2013.
Заходим в консоль управления «wbadmin» и нажимаем на «Recover»
Выбираем «A backup stored on another location», нажимаем «Next»
Выбираем «Remote shared folder», нажимаем «Next»
Указываем путь с резервной копией базы данных почтовых ящиков, в нашем случае «\\backup.test.local\Backup_mail\mailbox», нажимаем «Next»
Выбираем версию резервной копии, нажимаем «Next»
Выбираем пункт «Applications», нажимаем «Next»
Выбираем «Exchange», нажимаем «Next»
Выбираем «Recover to original location», нажимаем «Next»
База восстановлена.

Восстановление базы данных в другую локацию.

Заходим в консоль управления «wbadmin» и нажимаем на «Recover»
Выбираем «A backup stored on another location», нажимаем «Next»
Выбираем «Remote shared folder», нажимаем «Next»
Указываем путь «\\backup.test.local\Backup_mail\mailbox», нажимаем «Next»
Выбираем версию резервной копии, нажимаем «Next»
Выбираем пункт «Applications», нажимаем «Next»
Выбираем «Exchange», нажимаем «Next»
Выбираем «Recover to another location» и указываем папку, в которую следует восстановить базу. В нашем случае «C:\Recover_Database», нажимаем «Next»
Дождемся восстановлении базы.
По истечению некоторого времени база данных восстановится в папку «C:\Recover_Database».
При помощи утилиты «ESEUtil» проверим состояние базы данных.
esesutil /mh "C:\Recover_Database\8e66db9f-29b4-4bb9-8cc5-c4164ff6e3bb\c_\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1189887284\Mailbox Database 1189887284.edb"
Как мы видим в командной консоли, база данных находится в состоянии некорректного завершения:
State: Dirty shutdown
Это состояние не означает, что база повреждена. Оно показывает, что не все данные из логов были записаны в базу данных.
Для возможности работы с данной базой данных, базу необходимо перевести в состояние корректного отключения «Clean Shutdown», путем записи требуемых файлов журналов транзакций в базу данных.
Для проверки целостности логов транзакций выполним:
esesutil /ml "C:\Recover_Database\8e66db9f-29b4-4bb9-8cc5-c4164ff6e3bb\C_\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1189887284\E00"
Видим, что ошибок в логах нет, приступим к мягкому восстановлению базы данных (Soft recovery). Мягкое восстановление записывает все данные из логов транзакции в базу данных.
Выполним:
esesutil /r E00 /i /l "C:\Recover_Database\8e66db9f-29b4-4bb9-8cc5-c4164ff6e3bb\C_\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1189887284\" /d "C:\Recover_Database\8e66db9f-29b4-4bb9-8cc5-c4164ff6e3bb\c_\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1189887284\Mailbox Database 1189887284.edb"
После мягкого восстановления, проверим состояние базы:
esesutil /mh "C:\Recover_Database\8e66db9f-29b4-4bb9-8cc5-c4164ff6e3bb\c_\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1189887284\Mailbox Database 1189887284.edb"
Если состояние не изменилось, не нужно отчаиваться, базу можно восстановить методом жесткого восстановления (Hard recovery).
Жесткое восстановление удаляет все логи транзакций и переводит базу в состояние корректного отключения «Clean Shutdown»
Выполним:
esesutil /p "C:\Recover_Database\8e66db9f-29b4-4bb9-8cc5-c4164ff6e3bb\c_\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1189887284\Mailbox Database 1189887284.edb"
Проверяем состояние базы:
esesutil /mh "C:\Recover_Database\8e66db9f-29b4-4bb9-8cc5-c4164ff6e3bb\c_\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1189887284\Mailbox Database 1189887284.edb"
Видим, что база перешла в состояние корректного отключения «Clean Shutdown».
Создаем базу данных восстановления (RDB, Recovery Database):
New-MailboxDatabase RecoveryDatabase –Server MAIL Recovery:$trye –EdbFilePath "C:\Recover_Database\8e66db9f-29b4-4bb9-8cc5-c4164ff6e3bb\c_\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1189887284\Mailbox Database 1189887284.edb" –LogFolderPath "C:\Recover_Database\8e66db9f-29b4-4bb9-8cc5-c4164ff6e3bb\c_\Program Files\Microsoft\Exchange Server\V15\Mailbox"
где «MAIL» – почтовый сервер Exchange,
а «RecoveryDatabase» произвольное имя базы данных.
Игнорируем предупреждение, так как база данных находится уже в состоянии корректного отключения.
Монтируем базу данных:
Mount-Database RecoveryDatabase
После чего можно восстановить содержимое почтового ящика из базы восстановления в исходный почтовый ящик.
Воспользуемся командлетом «New-MailboxRestoreRequest».
New-MailboxRestoreRequest –SourceDatabase RecoveryDatabase –SourceStoreMailbox “Ларин Алексей” –TargetMailbox larin –TargetRootFolder Old_Mailbox -AllowLegacyDNMismatch
Здесь восстанавливается почтовый ящик с DisplayName равным «Ларин Алексей» из базы данных «RecoveryDatabase» в папку «Old_Mailbox» почтового ящика с псевдонимом «Larin» существующей базы.
Видим, что почтовый ящик из базы данных «RecoveryDatabase» успешно восстановился:

2.3.Восстановление почтового ящика пользователя

В следующей главе рассмотрим варианты восстановления удаленного или отключенного почтового ящика.
MS Exchange по умолчанию хранит удаленные почтовые ящики в течение 30 дней, после чего они удаляются безвозвратно. Интервал хранения можно изменить (в примере до 60 дней):
Set-MailboxDatabase -Identity MBX01 -MailboxRetention 60
Если Вам понадобится почтовый ящик, который был удален более 30 дней, то Вам следует восстановить базу данных почтовых ящиков и уже оттуда восстановить почтовый ящик.
В данном примере рассмотрим случаи, когда почтовый ящик был удален не позднее срока хранения почтовых ящиков.
Почтовые ящики статуса «Disconnected» делятся на два типа:
Disabled mailboxes – отключённые почтовые ящики, когда очищаются атрибуты Exchange из соответствующей учетной записи пользователя AD. Сама учетная запись пользователя в Active Directory сохраняется, а почтовый ящик принимает состояние «Disabled».
Soft-deleted mailboxes – удаленные почтовые ящики, в следствие чего почтовый ящик принимает состояние «Soft-deleted», а соответствующая учетная запись пользователя удаляется из Active Directory.
Подробнее тут.

2.3.1.      Восстановление отключенного почтового ящика (Disabled)

Как было написано выше, отключенные почтовые ящики очищают атрибуты учетной записи пользователя, а сама учетная запись сохраняется.
Перед восстановлением, необходимо убедиться, что учетная запись, к которой мы ходим подключить почтовый ящик, не связана с другим почтовым ящиком. Также нужно проверить, что почтовый ящик, который необходимо подключить, существует в базе.
Допустим мы отключили почтовый ящик test_d@test.local, которому соответствует учетная запись Test Deleted в базе данных «Mailbox Database 1189887284»
Для подключения воспользуемся командлетом «Connect-Mailbox»
Connect-Mailbox –Identity “Test Deleted” –Database “Mailbox Database 1189887284” –User “Test Deleted”
Видим, что почтовый ящик появился в центре администрирования, а соответственно доступен и пользователю.

2.3.1.      Восстановление обратимо удаленного почтового ящика (Soft-Deleted)

Допустим мы удалили почтовый ящик test_d@test.local, которому соответствует учетная запись Test Deleted, которая в следствие чего удалилась из базы Active Directory.
Создадим новую учетную запись в AD, например Test Soft. Создадим соответствует почтовый ящик test_s@test.local, туда и будем восстанавливать удаленный почтовый ящик test_d@test.local.
Воспользуемся командлетом «New-MailboxRestoreRequest»:
New-MailboxRestoreRequest –SourceStoreMailbox “test deleted” –SourceDatabase “Mailbox Database 1189887284” –TargetMailbox “Test Soft” -AllowLegacyDNMismatch
Проверить статус выполнения можно командлетом «Get-MailboxRestoreRequest»

2.3.Восстановление отдельного письма

Когда пользователь удаляет элементы из папки «Удаленные» в Microsoft Outlook и Outlook Web App, эти элементы перемещаются в папку "Элементы с возможностью восстановления" и во вложенную папку с именем "Удаления". Продолжительность хранения удаленных элементов в этой папке зависит от срока хранения удаленных элементов, заданного для почтового ящика. По умолчанию почтовый ящик настроен таким образом, чтобы хранить удаленные элементы в течение 14 дней. Увеличить срок хранения удаленных элементов можно командлетом «Set-Mailbox».
Для восстановление отдельного письма (элемента), можно воспользоваться командлетом «Search-Mailbox»
Чтобы найти и восстановить удаленные элементы, нужно указать исходный ящик, в котором выполняется поиск, и целевой ящик, куда будут восстанавливаться элементы.
Используя командлет «Search-Mailbox» нельзя указать один и тот же ящик в качестве исходного и целевого.
Будем использовать два почтовых ящика:
Исходный ящик test@test.local, а целевой test_r@test.local
Ниже приведу несколько примеров:

1.      Пользователь удалил письмо присланное 18.10.2013 и очистил корзину.
Восстановим письмо отвечающее следующим требованиям:
Search-Mailbox –Identity “test” –SearchQuery “sent:18/10/2013” –TargetMailbox “test_r” –TargetFolder “Recover_1” –LogLevel Full
Данные команды восстанавлювают письма присланные 18.10.2013г. в папку “Recover_1” почтового ящика test_r@test.local.
Заходим на test_r@test.local и проверяем восстановленные письма:

1.      Пользователь удалил письмо со словом «Munserat» в нем и очистил корзину. Восстанавливаем:
Search-Mailbox –Identity “test” –SearchQuery “Munserat” –TargetMailbox “test_r” –TargetFolder “Recover_2” –LogLevel Full
Заходим на test_r@test.local и проверяем восстановленное письмо:

1.      Пользователь удалил письмо с темой «Fine» и очистил корзину.
Восстанавливаем:
Search-Mailbox –Identity “test” –SearchQuery “Subject: Fine” –TargetMailbox “test_r” –TargetFolder “Recover_3” –LogLevel Full
Заходим на test_r@test.local и проверяем восстановленное письмо:

Таким образом используя в качестве почтового сервера продукт MS Exchange, можно восстановить практически любой удаленный, либо поврежденный элемент.
На этом предлагаю закончить.
Вопросы, замечания и предложения пишите в комментариях или на почту.
Удачного тестирования!