Восстановление базы данных MS Exchange 2019

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

Прежде, чем начинать восстановление, необходимо разобраться, как устроена БД и как она работает на сервере MS Exchange 2019 (все ниже сказанное, так же актуально и для версий 2016).

Информация о состоянии почтовых ящиков пользователей хранится в файле *.EDB, т.е. в файле самой БД, а так же лог-файлах. При этом лог-файлов есть несколько видов:

– E02.log – лог-файл используемый БД в настоящее время.

– E02tmp.log – новый лог-файл, который создается в настоящий момент.

– E0200007EDB.log, E0200007EDC.log, E0200007EDD.log – лог-файлы, хранящиеся на диске, которые можно использовать для восстановления.

– E02res00001.jrs, E02res00002.jrs, E02res00003.jrs – предварительно созданные лог файлы, используемые, когда диск, содержащий лог файлы, заполнен.

– E02.chk – файл контрольной точки, показывающий отношение между лог-файлом и файлом БД.

Принцип работы базы данных MS Exchange 2019:

– Почтовые данные сначала обрабатываются в памяти и разделяются на страницы.

– Страницы, образующие транзакцию, записываются в лог файл – E02.log.

– Если страницы больше не требуются, они записываются в файл *.EDB (базу данных).

– Файл контрольной точки E02.chk обновляется и отображает новое место контрольной точки.

  Файл E02.log переименовывается в следующий E0200000…log, а на его место приходит E02tmp.log.

В пределах одного сервера у каждой базы данных должен быть свой префикс.

В данном примере это “E02”. Для всех новых созданных баз данных будет создаваться новый префикс “E03”, “E04” и т.д.

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

но еще не записана в файл базы данных.

Если в этот момент сервер аварийно выключится, то информация о таких письмах останется только в лог-файлах,

а статус БД перейдет в состояние “Dirty Shutdown” (неправильного отключения).

При корректном отключении БД (например при выполнении команды Unmount-Database) –

вся информация из лог-файлов переносится в файл БД, после чего происходит ее размонтирование,

а статус переходит в “Clean Shutdown” (правильного отключения). После этого лог-файлы можно удалять.

Для того, что бы смонтировать БД на сервер MS Exchange необходимо, перевести ее статус в “Clean Shutdown”.

Все манипуляции необходимо производить из командной строки при помощи утилиты “ESEUTIL”.

  1. Запустите командную строку от имени администратора и выполните следующую команду:

Eseutil /MH D:\DataBase_1\db\DataBase_1.edb

В выводе команды мы получим достаточно много информации о самой БД и о её состоянии.

Обратить внимание стоит на следующие строки:

– State – Dirty Shutdown – БД отключена некорректно.

– Log Required и Log Committed – информация о связанных лог-файлах.

 

2. Для анализа информации о состоянии лог-файла, введите команду:

Eseutil /ML D:\DataBase_1\db\E02.log

Вывод команды будет примерно следующим:

 

Красным выделен путь, где должны находиться лог-файлы.

3. Для проверки консистентности всех лог-файлов, необходимо ввести команду:

Eseutil /ML D:\DataBase_1\db\E01

Вывод команды при этом должен быть примерно следующим:

4. Проведя анализ состояния БД и её лог-файлов, можно переходить к её восстановлению.

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

Начать стоит с мягкого восстановления (soft recovery), для этого положите файл БД и лог-файлы в одну папку и введите команду:

cd D:\DataBase_1\db

Где:

cd –  команда смены рабочей директории

D:\DataBase_1\db – путь до папки, в которой лежат файлы БД и логи.

Введите команду:

Eseutil /R E02 /D

Где:

/R – ключ Recovery, указывающий на процедуру восстановления.

/D – Совместно с ключом “R” указывает на перезапись путей, а не на дефрагментацию, если бы он был один.

В данном примере, после ключа “D” ничего нет, соответственно пути будут перезаписаны текущей папкой.

В случае, если системные и log-файлы все же находятся в разных местах, то можно добавить параметры:

Eseutil /R E02 /D /Ld:\temp\logs /Sd:\temp\logs

Где:

/R – ключ Recovery, указывающий на процедуру восстановления.

E02 – префикс БД, которую восстанавливаем.

/D – Совместно с ключом “R” указывает на перезапись путей, а не на дефрагментацию, если бы он был один.

В данном примере, после ключа “D” ничего нет, соответственно пути будут перезаписаны текущей папкой.

/L – указывает на местоположение файлов логов. Записывается без пробелов.

/S – указывает на местоположение системных файлов. Записывается без пробелов.

Вывод команды Esutil должен быть примерно следующим:

5. На этом этапе БД прошла Soft Recovery (мягкое восстановление) и должна была перейти в статус “Clear Shutdown”.

Если все прошло успешно, БД можно смонтировать в Exchange ECP, в противном случае необходимо прибегнуть в варианту с исправлением БД.

6. Перед началом процесса исправления БД стоит отметить несколько моментов.

а) В процессе исправления, с вероятностью 100% будет потеряно какое-то кол-во информации,

т.к. БД MS Exchange 2019 не реляционная, а состоит из множества деревьев с указателями на страницы с данными.

В ходе исправления эти указатели будут проверяться и в случае несоответствия они будут удалены.

б) Процесс исправления запускается в отношении самого файла *.EDB, а не лог-файлов, как при “soft-recovery”,

соответственно вся информация, содержащаяся в лог-файлах будет утеряна.

7. Для начала процесса исправления БД, перейдите в папку с БД и введите команду:

Esutil /P DataBase_1.edb

Где:

Esutil /P – запуск утилиты в режиме “Repair” – исправления.

DataBase_1.edb – имя файла БД.

Окно вывода должно выглядеть примерно следующим образом:

8. Появится окно с предупреждением, о потере информации, содержащейся в лог-файлах, а так же возможной потерей информации из файла сомой БД.

Если последствия запуска данной процедуры вас устраивают, нажмите “ОК”.

После завершения работы утилиты окно вывода будет выглядеть примерно следующим образом:

9. На этом восстановление БД завершено и ее можно смонтировать в Exchange ECP.

Scroll to Top