Представим, что у нас есть Exchange сервер в организации и внезапно железо, на котором он крутится, умирает. Причем умирает так, что восстановить ни чего уже нельзя, а актуальных бэкапов самого сервера (с System State) нет. Есть только бэкап баз данных.
Ситуация не приятная, но не критичная и из неё есть по крайней мере два выхода:
- Переустановить сервер в режиме восстановления – setup.com /m:RecoverServer. Подобный подход я уже описывал ранее в статье «Аварийное восстановление сервера Exchange 2010» и даже записал пару веб-кастов;
- Иногда бывает так, что не удается сбросить учетку сервера в Active Directory, чтобы его переустановить. В этом случае первый вариант не подходит, и сейчас мы поговорим о втором.
Потеряв сам сервер, но имея актуальный бэкап баз данных, мы достаточно быстро можем вернуть систему в рабочее состояние. Фактически, мы можем поднять совершенно новый сервер Exchange с теми же ролями, назвать сервер другим именем, но подключить старые базы данных, после чего переключить на новый сервер старых пользователей. Далее по пунктам:
Поднимаем новый сервер и подключаем базы данных:
В установке сервера ни чего сложного нет, напомню только, что мы его поднимаем на новом железе, на свежеустановленной и обновленной операционке с новым именем. Далее надо подключить к нему базы данных, предварительно восстановив их из бэкапа.
Дело в том, что восстановленные из бэкапа базы данных находятся в состоянии Dirty Shutdown, прежде чем их смонтировать, нужно перевести базы в состояние Clean Shutdown. Для этого придется вооружиться утилитой ESEUTIL, о том, как ей пользоваться я писал ранее в статьях «Восстановление баз данных при помощи ESEUTIL» и «Исправление базы данных почтовых ящиков в Exchange» (желательно использовать первый вариант).
После того, как базы данных готовы, можно монтировать их на новый сервер под новыми именами. Для того, чтобы смонтировать базу с другого сервера поступим следующим образом:
- Создадим новую базу и во время создания снимем галку «Подключить эту базу данных»;
- Откроем свойства базы и на вкладке Обслуживание установим галку «База данных может быть перезаписана при восстановлении»;
- Переместим восстановленный из бэкапа и переведенный в состояние Clean Shutdown EDB-файл в папку новой базы данных;
- Смонтируем базу.
Теперь можно сказать, что почтовые ящики пользователей возвращены в организацию, но сами пользователи об этом пока ни чего не знают.
Переключение пользователей на работу с новым сервером и новой базой данных:
Пользователи узнают о том к какой базе и к какому серверу почтовых ящиков они подключены, читая атрибуты своей учетной записи в Active Directory. Т.е. для того, чтобы перенацелить пользователей на новый сервер и новую базу, нужно изменить всего 3 атрибута:
- homeMDB
- homeMTA
- msExchHomeServerName
Рис.1: Атрибуты, указывающие на сервер и базу данных.
Сделать это можно руками, через программу ADModify всем сразу, либо через PowerShell (EMS). Команда в EMC будет выглядеть следующим образом:
Get-Mailbox –Database <old_DB> | Set-Mailbox –Database <New_DB>
Рис.2: Перенацеливаем пользователей на другую базу данных.
Теперь, открывая Outlook пользователь и не заметит, что его почтовый ящик переехал на новый сервер.
Примечание: В Exchange 2007 это команда работать не будет, нужно использовать командлет Move-Mailbox с параметром –ConfigurationOnly.
Восстановление параметров сервера:
Восстановив доступ пользователей к своим почтовым ящикам, мы решили только половину задачи. Т.к. мы поднимали новый сервер, а не восстанавливали его в режиме Восстановления, то теперь осталось самое трудное – перенести все настройки со старого сервера на новый. В большинстве своем сделать это придется руками.
Облегчить задачу может ситуация, если мы ещё не удалили сервер из Active Directory. В этом случае в консолях управления сервером мы можем прочитать большинство параметров со старого сервера и установить аналогичные на новом.
Конкретные рекомендации тут дать трудно, подскажу только, что надо не забыть сменить сервер, отвечающий за генерацию ОАВ (см. рис.3)
Рис.3: Изменение параметров ОАВ.
После того, как все параметры будут перенесены, и вы убедитесь, что новый сервер работает не хуже старого, можно почистить все упоминания о старом сервере, т.е. удалить его совсем из организации. Для этого необходимо удалить учетную запись в Active Directory и удалить объект сервера в разделе Конфигурация базы данных AD, через оснастку ADSIEdit.
Для этого откроем ADSIEdit, подключимся к разделу
Configuration развернем CN=Services -> CN=Microsoft Exchange -> <Имя организации> -> CN=Administrative Group -> CN=Exchange Administrative Group -> CN=Servers -> удалим объект старого сервера
(см.рис.4)
Рис.4: Объект сервера Exchange в базе данных Active Directory.
Заключение
Берегите свои сервера, делайте регулярные бэкапы и не ставьте Exchange на контроллер домена! К сожалению, команда metadata cleanup не всегда отрабатывает так, как должна, а сбросить учетку контроллера, не сделав его рядовым сервером, мы не можем.
Во время подготовки данной статьи, в роли технического эксперта выступал Александр Станкевич (Stanky), за что ему огромное спасибо! Без него данный материал не появился бы на страницах этого блога, да и задача, на основе которой написана статья, была бы решена другим, менее рациональным способом.
19 комментариев:
"Иногда бывает так, что не удается сбросить учетку сервера в Active Directory"
Можно подробней об этом ? В каких случаях такое происходит ?
Спасибо .
Случаи разные бывают. У меня например не отработал процесс metadata cleanup и я не смог понизить контроллер домена, чтобы потом сбросить у него учетку.
у меня вот никак не получается подключит EDB базу на новом сервере, хотя база в состоянии Clean Shutdown и все делаю по шагово как в этой статье но все время выдает ошибку: "Не удалось подключить указанную базу данных. Указанная база данных: test; код ошибки: Сбой операции Active Manager. Ошибка Сбой действия базы данных. Ошибка: Сбой операции с сообщением: MapiExceptionCallFailed: Unable to mount database. (hr=0x80004005, ec=1276)
"
может будут какие-то идеи как это побороть??
А вы поставили галку «База данных может быть перезаписана при восстановлении» в свойствах базы? Пути к EDB файлу и файлам логов точно правильные?
да поставил галку «База данных может быть перезаписана при восстановлении» ..и пути такие же как старые и логов и к EDB файлу!!
по поводу прозрачности для пользователей, а как насчет сертификата? через GPO его в любом случае нужно будет разливать ибо имя сменилось, и подскажите как быть с 2007 клиентами, на постоянку выскакивает окно логина и пароля подключение к серверу в окне оутлук?
Если у вас самоподписанный сертификат, тогда придется. Если нет, то все будет хорошо.
На тему логина пароля - надо смотреть у чему именно коннектится Outlook и запрашивает логин\пароль. Проверяйте настройки автоконфигурации.
на тему пароля посмотри control userpasswords2
Надо удалить все сохраненные пароли для почтовых серверов.
Такая проблема тоже, искал, но пока не нашел что делать: "Не удалось подключить указанную базу данных. Указанная база данных: test; код ошибки: Сбой операции Active Manager. Ошибка Сбой действия базы данных. Ошибка: Сбой операции с сообщением: MapiExceptionCallFailed: Unable to mount database. (hr=0x80004005, ec=1276)
gjm@rosklimat.com
я правильно понимаю, что Eseutil говорит что база в Clean Shutdown?
Да так и есть, всё делал как Вы написали. Но монтировать не могу. Прочитал на Techforum, пишут, что надо включить Microsoft Exchange System Attendant, что и делал. Потом произошла следующая ошибка: 1232 (или похожая точно не помню), ну о том, что файл занят. Ошибка «ушла», но теперь снова пришла моя ошибка 1276.
А галка в свойствах базы есть "This database can be overwritten by a restore"?
Да есть
RК сожалению у меня нет готового ответа. Я бы попробовал заново восстановить EDB из бэкапа и прогнать его ESUTIL-ем. Либо надо гуглить по ошибкам...
Подскажите пожалуйста, что делать в случае восстановления EDB, если домен - новый? Т.е. параметры HomeMTA и другие у пользователей не заполнены. Попробовал создать в восстановленной базе новый ящик и он оказался пустым.
Вам надо подключить базу как Recovery Database, после чего создать новые ящики (они будут пустуе) и восстановить данные из бузы в ящики штатным способом.
По поводу ошибки:
MapiExceptionCallFailed: Unable to mount database. (hr=0x80004005, ec=1276)
эта ошибка возникает если не совпадают имена организации Exchange старой и новой. Поставьте при установке название организации какое было и базы у вас примонтируются
В моем случае пришлось написать:
Get-MailBox | Set-Mailbox -Database
Потому что атрибут HomeMDB был пустой у проблемных ящиков, да и имя старой базы никому не известно.
Get-MailBox | Set-Mailbox -Database "Name DataBase"
Обрезал :-(
Отправить комментарий