Восстановление базы данных 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”.
- Запустите командную строку от имени администратора и выполните следующую команду:
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.