Представим, что у нас есть 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), за что ему огромное спасибо! Без него данный материал не появился бы на страницах этого блога, да и задача, на основе которой написана статья, была бы решена другим, менее рациональным способом.
В основном с крупными фирмами вы можете проводить тестирование аварийного восстановления, а также тестирование восстановлений для ваших серверов Exchange. С небольшими компаниями это так, но не так часто. При восстановлении базы данных почтовых ящиков Exchange Server вы должны быть осторожны, так как у вас могут возникнуть проблемы с целостностью и фактическая база данных не сможет подключиться.
В этом сценарии группа хотела восстановить почтовый ящик Exchange 2010 в группу хранилища для восстановления. Когда мы попытались смонтировать базу данных почтовых ящиков, мы не смонтировали. Это было на Exchange Server 2010 с пакетом обновления 1 (SP1) с настройкой DAG для восстановления после отказа. Появится сообщение об ошибке, в котором говорится, что база данных не смогла подключиться из-за ошибки (hr = 800004005, ec = 1011).
Ошибка Microsoft Exchange
Не удалось смонтировать базу данных «db01».
mail2FailedError:
Не удалось подключить указанную вами базу данных. Указанная база данных: db01;
Код ошибки: сбой операции Active Manager. Ошибка: действие базы данных не выполнено. Ошибка: операция завершилась с сообщением: MapiExceptionCallFailed: невозможно смонтировать базу данных. (час = 0x80004005, ec = 1011)
(База данных: db01, Сервер: srv-exc-001.mydomain.lan)
Операция Active Manager не удалась. Ошибка: действие базы данных не выполнено.
Ошибка: операция завершилась с сообщением: MapiExceptionCallFailed: невозможно смонтировать базу данных. (час = 0x80004005, ec = 1011)
(База данных: db01, Сервер: srv-exc-001.mydomain.lan)
Операция Active Manager не удалась. Ошибка: операция завершилась с сообщением:
MapiExceptionCallFailed: невозможно смонтировать базу данных. (час = 0x80004005, ec = 1011)
(Сервер: srv-exc-001.mydomain.lan)
MapiExceptionCallFailed: невозможно смонтировать базу данных. (час = 0x80004005, ec = 1011)
Эти сообщения будут также отображать средство просмотра событий вместе с MSExchangeIS и хранилищем почтовых ящиков MSExchangeIS с кодами 9519, 1087, 9518, 9519 и 1087. Проверка целостности базы данных не будет выполнена, и база данных не будет подключена при попытке подключить базу данных обмена на репликации сервера вручную при восстановлении в группу хранения для восстановления. В этом случае база данных не будет подключена, если при синхронизации возникли проблемы, связанные с подключением базы данных на сервере-реплике, когда репликация DAG все еще выполняется. Вы можете остановить сценарий до завершения полной синхронизации, но это приведет к повреждению базы данных в реальном времени и реплике.
В таких случаях вы можете остановить репликацию для действующей базы данных, удалить реплику и проверить базу данных на наличие повреждений, используя EseUtil с параметром / mh. Если состояние базы данных показывает «Грязное завершение работы», вам может потребоваться выполнить мягкое восстановление базы данных с помощью параметра / r. Если после выполнения этой операции ваша база данных по-прежнему отображается как «Грязное завершение работы», вам необходимо запустить очистительное восстановление, что будет означать, что поврежденные данные будут удалены из базы данных, чтобы попытаться изменить состояние базы данных на «Чистое отключение» с помощью Параметр / P оставь эту опцию в качестве крайней меры. В зависимости от уровня повреждения или количества почтовых ящиков, это может занять некоторое время, и нет гарантии, что база данных будет подключена. После этого вам нужно будет выполнить дефрагментацию базы данных, которая займет значительное время, и процесс не может быть остановлен.
Прежде чем делать это радикально, вы, если после программного восстановления ваша база данных будет в чистом состоянии, вам, возможно, придется попробовать выполнить следующее, чтобы иметь возможность монтировать базу данных.
- Откройте консоль управления Exchange
- Нажмите на организацию и почтовый ящик
- Откройте свойства базы данных почтовых ящиков
- Нажмите на вкладку обслуживания
- Отметьте галочкой «Эта база данных может быть перезаписана при восстановлении» и нажмите «ОК».
- Смонтировать базу данных снова
Если это не сработает, вам нужно попытаться выполнить полное восстановление с помощью EseUtil и посмотреть, изменит ли база данных состояние на исправное. Если это не сработает, не отчаивайтесь, так как есть альтернатива начать все с нуля и попытаться убедить клиента в том, что все его данные потеряны, или вам придется обратиться к специалисту Microsoft, чтобы выручить вас, что займет больше времени. и ресурсы. Альтернативой является приложение под названием Stellar Repair for Exchange.
Программное обеспечение Exchange Server Recovery позволит вам либо найти, либо открыть одну или несколько баз данных в приложении, а после сканирования файла EDB представит вам все дерево базы данных почтовых ящиков. Затем вы сможете создать новый файл EDB в ваш сервер Exchange и, кроме экспорта в PST и другие форматы, вы можете экспортировать почтовые ящики непосредственно в работающий сервер Exchange. Здесь вы можете выбрать создание или сопоставление с почтовым ящиком, уже созданным на сервере Exchange. Та же концепция применяется, если вы хотите экспортировать напрямую в клиент Office 365. Вы можете выполнить детальный поиск в базе данных и экспортировать несколько почтовых ящиков из разных файлов EDB. Приложение – лучший инструмент, который может иметь администратор Exchange, который, безусловно, сделает все, что нужно, в таких случаях и сократит время на устранение аварии.
«С каждым бывает…» «С каждым случается…» И даже если у вас есть ИБП (как это было и в нашем случае) — никто не гарантирует, что при резком выключении электричества — ваша почтовая база данных выживет. А точнее: захочет ли она с вами дальше работать?
Один из таких случаев нас привел к печальным последствиям, которые все-же удалось решить с наименьшими потерями.
Помогли различные ресурсы, а один даже удалось найти на русском языке
Поэтому статья не будет ничем новым, кроме как копией, с целью гарантированной сохранности этой ценной информации
Ошибка Microsoft Exchange
--------------------------------------------------------
Не удалось подключить базу данных 'Managers'.
Managers
Ошибка
Ошибка:
Не удалось подключить указанную базу данных. Указанная база данных: Managers; код ошибки: Сбой операции Active Manager. Ошибка: Сбой действия базы данных. Ошибка: Сбой операции с сообщением: MapiExceptionCallFailed: Unable to mount database. (hr=0x80004005, ec=-550)
При этом остальные базы успешно подключились и работают, все службы запущены.Как исправлять почтовую базу Exchange:
На всякий случай делаем копию базы и всех логов.
Проведем диагностику:
1. Запускаем Exchange Manager
2. Проверяем базу. Выполняем команду:
eseutil /mh d:ExBasesMybaseMybase.edb
3. Ищем сообщение как на скриншоте. Это означает, что наша база некорректно выключилась и часть информации не перенесена из лога в базу. Если у нас есть логи и они не испорчены, то мы сможем все восстановить. Если логов нет или они испорчены, то часть данных будет потерена.
4. Проверяем логи :
eseutil /ml d:ExBasesMyBase
Восстанавливаем базу Exchange
5. Если тест логов не выдал ошибку, то восстанавливаем базу:
eseutil /r «E02» /l d:ExBasesMyBase /d d:ExBasesMybaseMybase.edb
E02 — имя лога
Если восстановление прошло успешно пробуем подключить почтовую базу. Иначе смотрим п.6
6. Если с логами что-то не так, можно попробовать восстановить базу игнорируя ошибку в логах:
eseutil /r «E02» /a /i /l d:ExBasesMyBase /d d:ExBasesMybaseMybase.edb
Если восстановление прошло успешно пробуем подключить почтовую базу. Иначе смотрим п.7
7. Если логи содержат ошибки и база не восстановилась по п.5,6, то восстанавливаем базу без логов
eseutil /p d:ExBasesMybaseMybase.edb
8. После этого пробуем подключить базу
Важно! Команды очень чувствительны к синтаксису. Будьте внимательны.
В нашем случае, удалось восстановить БД с «откатом» на 1.5 часа. Но все-же удалось
Так же в помощь: это