В рассматриваемом примере имитируется удаление файла базы данных (файл с расширением MDF). Причина не важна. Главное, что файл уничтожен. В Enterprise Manager такая база выделяется словом Suspect:
Считаем, что каталог информационной базы восстанавливать не надо.
Определим краткий порядок наших действий:
- Подготовить самую свежую полную копию базы данных и все архивы файла транзакций, сделанные с момента этой полной копии базы данных;
- Восстановить базу данных из полной архивной копии;
- Восстановить данные из архивных копий файла транзакций, включая архив, сделанный в п.1;
- Проверить работоспособность программы 1C.
Давайте остановимся подробнее на каждом шаге.
Создание архивной копии файла транзакций из поврежденной базы
Основное назначение этой операции - подготовиться к восстановлению базы данных в состояние, в котором она была в момент непосредственно перед сбоем. Если следовать плану резервного копирования, реализованному в предыдущей статье, Вы рискуете потерять максимум 20 минут работы предприятия. Но будет гораздо лучше, если Вы вообще ничего не потеряете.
Поэтому следует попытаться сделать архивную копию файла транзакций из поврежденной базы. Для этого в Enterprise Manager установите курсор на название поврежденной базы и из контекстного меню вызовите последовательно пункты "Все задачи" - "Backup Database …":
В открывшемся окне выберите режим архивирования "Transaction log".
В поле "Destination" укажите, куда следует сохранить архивную копию файла транзакций. Для этого нажмите кнопку "Add ..". В открывшемся окне введите путь к файлу и нажмите кнопку "ОК":
Теперь перейдите на закладку "Options". Если галочка "Remove inactive entries from transaction log" установлена, снимите ее. В противном случае создание архивной копии скорее всего не будет выполнено.
На этом все приготовления завершены. Нажимайте кнопку "ОК". В результате у Вас должен сформироваться архив файла транзакций. Если по каким-либо причинам этого не произошло, значит, Вы не сможете восстановить базу данных на момент сбоя. Такое тоже может быть.
Теперь, после попытки сделать архивную копию файла транзакций из поврежденной базы (удачной или нет), следует подготовить все архивы, которые Вы будете использовать при восстановлении. Поместите эти файлы в одну папку. Вам понадобятся:
- Самая свежая полная копия базы данных. С нее будет начинаться процесс восстановления;
- Все архивы файла транзакций, сделанные с момента этой полной копии базы данных. Сюда же поместите архив файла транзакций, которые Вы сделали из поврежденной базы (если у Вас получилось сделать этот архив).
На этом подготовительный этап завершен.
Восстановление базы данных из архивных копий
В Enterprise Manager установите курсор на название поврежденной базы и из контекстного меню вызовите последовательно пункты "Все задачи" - "Restore Database …":
В открывшемся окне на закладке "General" в поле "Restore as database:" по умолчанию будет выбрана поврежденная база данных (на ней стоял курсор во время вызова пункта меню "Restore Database…"). Вы можете указать другое имя для восстанавливаемой базы данных. В нашем примере мы этого делать не будем.
В группе переключателей "Restore:" выберите "From device". Это, наверное, самый длительный путь восстановления, но таким образом Вы лучше поймете, что и как происходит при восстановлении.
В поле "Devices:" выберите файл полной архивной копии базы данных. Это делается через кнопку "Select Devices…". Процесс выбора файла для восстановления я описывать не буду - он достаточно прост и понятен.
Установите переключатели "Restore backup set" и "Database - complete". Этим мы указываем SQL серверу, что файл, выбранный в поле "Devices:", - это полная копия базы данных.
Перейдите на закладку "Options". В таблице "Restore database files as:" поля будут заполнены информацией из файла полной копии базы данных. Оставим их без изменений. Тем самым мы говорим, что база данных будет восстанавливаться на место поврежденной.
Обратите внимание на группу переключателей "Recovery completion state". Нас будут интересовать первые два значения:
1. Leave database operational. No additional transaction logs can be restored. (Оставить базу данных работающей. Архивы файла транзакций не могут быть восстановлены).
Этот режим выбирается в 2х случаях:
- Мы восстанавливаем базу данных из полной архивной копии, но архивы файла транзакций восстанавливать не будем;
- Мы восстанавливаем последний архив файла транзакций.
После восстановления в этом режиме база данных становится готовой к работе.
2. Leave database nonoperational but able to restore additional transaction logs. (Оставить базу данных в нерабочем состоянии, но с возможностью восстанавливать архивы файла транзакций).
Этот режим надо использовать, когда мы хотим восстановить базу данных из полной архивной копии и набора архивов файла транзакций (за исключением последнего).
По условиям нашей задачи у нас есть файл полной копии базы данных и архивы файла транзакций. Поэтому при восстановлении базы данных из полной копии выбираем режим 2 - после восстановления оставить базу в нерабочем состоянии для возможности восстановления данных из архивов файла транзакций.
Теперь можно нажать кнопку "ОК". После окончания процедуры восстановления статус базы данных поменяется на "Loading":
Следующий этап - восстановление данных из всех архивов файла транзакций. За исключением последнего файла, архивы файла транзакций должны восстанавливаться в режиме 2. Последний архив файла транзакций должен быть восстановлен в режиме 1 - оставить базу данных работающей, архивы файла транзакций не могут быть восстановлены. После выполнения этих действий база данных будет восстановлена и готова к работе.
Восстановление архива файла транзакций выполняется аналогично восстановлению из полной копии базы данных. Выберите из контекстного меню пункты "Все задачи" - "Restore Database …".
На этот раз в окне "Devices:" выберите архив файла транзакций, созданный первым после полной копии базы данных. Далее, при последующих операциях восстановления, выбирайте архивы файла транзакций в хронологическом порядке.
Укажите SQL серверу, что будет восстанавливаться файл транзакций. Для этого установите переключатель в положение "Transaction log". На закладке "Options" выберите восстановление в режиме 2.
Нажмите кнопку "ОК". Подобным образом восстановите данные из всех архивов файла транзакций, за исключением последнего. Для него выберите восстановление в режиме 1.
Все! Восстановление базы данных из архивных копий завершено. Запускайте программу 1С и проверяйте ее работоспособность.
Как можно ускорить процесс восстановления
Согласитесь, предложенный способ не из самых быстрых. Тем не менее, Вы на наглядном примере увидели, что же происходит в процессе восстановления.
Давайте попробуем ускорить этот процесс. Если системные базы данных не повреждены, мы можем воспользоваться режимом восстановления "Database":
В этом режиме в группе "Parameters" следует указать:
- для какой базы показывать архивные копии,
- начиная с какой архивной копии начинать восстановление. В выпадающем списке Вы можете выбрать полную архивную копию, начиная с которой пойдет процесс восстановления;
- в таблице выделить флажками те резервные копии, которые будет использоваться для восстановления.
Нам остается совсем немного. Расположить требуемые для восстановления файлы в соответствии с путями, указанными в столбце "Restore From". Это будут те самые файлы, которое Вы подготовили для восстановления.
На закладке "Options" выберите восстановление в режиме 1, ведь мы хотим получить полностью работающую базу.
На этом все приготовления завершены. Нажимайте "ОК" и восстанавливайте базу данных. SQL сервер в автоматическом режиме обработает все указанные файлы.
P.S. В заключение хочется сказать, чтобы Вы не только прочитали эту статью, но и на практике попробовали все сделать своими руками. Только в этом случае Вы будете уверены, что сумеете безошибочно действовать в критической ситуации.
Примечание: в статье отражено мое мнение по восстановлению базы данных из архива. Оно может не совпадать с Вашим мнением и / или мнением других специалистов.
По материалам книги "Немного теории для работы с 1С"
Комментарии
2