Восстановление базы данных после жесткого сбоя

Автор: Пользователь скрыл имя, 21 Мая 2013 в 10:02, курсовая работа

Краткое описание

Цель исследования – рассмотреть методы восстановления баз данных
Для достижения цели необходимо решить следующие задачи:
1. На основе анализа зарубежной и отечественной литературы, монографических источников изучить методы восстановления баз данных
2. Выявить причины при которых базу данных нужно восстанавливать
3. Провести анализ основных возможностей восстановления

Оглавление

Введение
1.Описание и структура организации.
1.1Характериска предприятия и его деятельности .
1.2 Структурно-функциональная диаграмма организации бизнеса.
2. Проектная часть.
2.1 Разработка и описание проекта СУБД, информационной безопасности и защиты информации в СУБД.
2.1.1 Характеристика базы данных и средств информационной безопасности
2.1.2 Характеристика результатной информации
Заключение
Список литературы

Файлы: 1 файл

Курсовая востановление баз.doc

— 346.00 Кб (Скачать)

RESTORE LOG db1 FROM DISK = 'D:\SQLBackups\BackupFile1.bak' WITH STOPATMARK = 'lsn:120';

From database (Из базы данных) — для обнаружения резервных копий будет использоваться история резервного копирования из таблиц базы данных msdb. В списке можно выбрать не только текущую базу данных, но и другие базы данных, которые есть на этом сервере;

From device (Из устройства) — вам потребуется указать местонахождение резервной копии явно. Эта возможность используется в тех ситуациях, когда вам нужно восстановить базу данных на другой сервер или местонахождение резервной копии изменилось. В любом случае вам потребуется выбрать логическое устройство резервного копирования, картридж стриммера или файл на диске. Еще одна возможность (доступная только в Enterprise Edition и только при полном восстановлении базы данных) — использовать в качестве источника снимок базы данных (database snapshot);

Select the backup sets to restore (Выбрать резервную копию для восстановления) — в этом списке вам потребуется установить флажки напротив тех резервных копий, которые вы планируете восстановить. Обратите внимание, что флажки можно поставить напротив нескольких резервных копий. В этом случае для каждой выбранной резервной копии будет выполнена отдельная команда RESTORE.

При помощи этого же списка можно  получить множество дополнительной информации о восстанавливаемых  резервных копиях (если прокрутить список вправо): о времени резервного копирования, о размере резервной копии, о пользователе, которые производил это копирование, и т.п.

Дополнительные и очень важные параметры восстановления представлены на вкладке Options окна восстановления базы данных Management Studio:

Overwrite the existing database (Перезаписывать существующую базу данных) — установленный флажок позволяет перезаписать существующую базу данных. Фактически он отменяет проверки, которые призваны не допустить потери данных в случае ошибочного восстановления. Таких проверок предусмотрено три:

  • запрещено восстанавливать резервную копию чужой базы данных на сервер, если под этим именем на сервере есть своя база данных;
  • запрещено перезаписывать файлы, которые относятся к базам данных, находящимся в автономном режиме (offline), и, кроме этого, вообще любые файлы, которые не относятся к SQL Server;
  • запрещено производить восстановление базы данных, если на ней осталась часть журнала транзакций, резервное копирование которой еще не производилось (tail-log). Это новая проверка, которая появилась только в SQL Server 2008.

Чтобы эти проверки отменить, нужно  установить указанный флажок или  использовать параметр WITH REPLACE в команде RESTORE;

Preserve the replication settings (Сохранить настройки репликации) — сохранить настройки репликации при восстановлении. Соответствует параметру KEEP_REPLICATION команды RESTORE. Обычно используется только тогда, когда база данных одновременно участвует и в репликации, и в автоматической доставке журналов (log shipping).

Prompt before restoring each backup (Выводить приглашение перед каждым восстановлением) — выводить приглашение перед восстановлением каждой следующей резервной копии из выбранного вами списка. Обычно этот параметр используется только тогда, когда каждая копия лежит на своем картридже стриммера, и вам нужно их менять. Этот параметр можно настроить только на графическом экране Management Studio, поскольку в коде Transact-SQL для восстановления каждой резервной копии вам придется использовать свою собственную команду RESTORE;

Restrict access to the restored database (Ограничить доступ к восстанавливаемой базе данных) — после восстановления доступ будет открыт только членам роли базы данных db_owner и членам серверных ролей dbcreator и sysadmin. Этот параметр обычно применяется в тех случаях, когда после восстановления базы данных вам необходимо произвести дополнительные проверки или внести исправления. Ему соответствует параметр команды RESTORE WITH RESTRICTED_USER;

Restore the database files as (Восстановить файлы базы данных как) — очень важный параметр, который позволяет определить новый путь для восстанавливаемых файлов баз данных. Без него не обойтись, например, в тех ситуациях, когда вы восстанавливаете базу данных на другой сервер, на котором конфигурация дисков выглядит по-другому. Этому флажку в команде RESTORE соответствует параметр MOVE, например:

RESTORE DATABASE db1 FROM DISK = 'D:\SQLbackups\BackupFile1.bak' WITH MOVE 'db1' TO 'D:\db1.mdf', MOVE 'db1_log' TO 'D:\db1_log.mdf';

Здесь db1 и db1_log — это логические названия файлов базы данных и журнала транзакций соответственно, а 'D:\db1.mdf' и 'D:\db1_log.mdf' — это новые места для файлов, которые будут восстановлены с резервной копии;

Recovery state (Состояние восстановления) — еще один важнейший параметр, который определяет, будет ли база данных открыта для пользователей после окончания восстановления с носителя. В вашем распоряжении три варианта:

  1. WITH RECOVERY — восстановление в обычном режиме. После окончания восстановления начнется процедура RECOVERY, все незавершенные транзакции будут отменены, и в итоге база данных будет открыта для пользователей. Этот параметр используется по умолчанию;
  2. WITH NORECOVERY — после окончания процесса восстановления с носителя процедура RECOVERY не начнется. Базы данных останется в нерабочем состоянии восстановления. Этот параметр используется тогда, когда после восстановления резервной копии вы хотите восстановить дополнительные копии, например, после восстановления полной резервной копии восстановить резервную копию журнала транзакций;
  3. WITH STANDBY — процедура RECOVERY начнется, но вся информация о всех отмененных незавершенных транзакциях будет записана в файл отмены (его нужно будет указать). В результате пользователи смогут обращаться к восстановленной базе данных для чтения (например, для создания отчетов), но в то же время сохраняется возможность применения следующих резервных копий журналов транзакций. Такое решение используется обычно только при применении автоматической доставки журналов на резервный сервер (log shipping).

Как и в случае с командой BACKUP, некоторые возможности команды RESTORE доступны только из кода Transact-SQL. Про некоторые из них (например, про возможность восстановления до метки транзакции или LSN) уже рассказано. Далее представлено еще несколько параметров, которые нельзя выбрать при помощи графического интерфейса:

PAGE — этот параметр позволяет указать определенные страницы в базе данных, которые будут восстанавливаться. Эта новая возможность SQL Server 2008, в предыдущих версиях ее не было.

CHECKSUM | NOCHECKSUM — позволяет включить или отключить проверку контрольных сумм при восстановлении. По умолчанию такая проверка производится, а в случае выявления расхождений восстановление прекращается и выдается сообщение об ошибке;

CONTINUE_AFTER_ERROR | STOP_ON_ERROR — будет ли остановлено восстановление в случае обнаружения ошибок в контрольной сумме. По умолчанию установлен параметр STOP_ON_ERROR;

MEDIANAME — позволяет указать имя носителя, с которого производится восстановление. Используется только для дополнительных проверок;

MEDIAPASSWORD и PASSWORD — при помощи этих параметров вам потребуется указать пароли для носителя и резервной копии соответственно, которые были использованы при резервном копировании. Эти параметры также следует отнести к категории дополнительных проверок. Если вы производите восстановление резервной копии на другой сервер (по отношению к тому, на котором была создана резервная копия), то пароль указывать не нужно;

PARTIAL — определяет, что в ходе данного сеанса восстановления будет производиться восстановление только одной файловой группы (если резервное копирование производилось по файловым группам). Процедура восстановления базы данных по частям (т. е. по файловым группам) называется piecemeal restore;

RESTART — позволяет продолжить операцию восстановления с того момента, когда она была прервана (например, необходимо вставить следующий картридж в стриммер);

REWIND | NOREWIND — производить ли после окончания восстановления перемотку ленты в картридже или нет. По умолчанию используется значение REWIND, т. е. производить;

STATS — так же, как и для команды BACKUP, этот параметр определяет частоту появления информационных сообщений. По умолчанию информация о ходе восстановления выводится после восстановления приблизительно каждых 10% резервной копии;

UNLOAD | NOUNLOAD — выгружать картридж из стриммера после окончания восстановления или нет. По умолчанию используется значение UNLOAD, т. е. выгружать. UNLOAD включает в себя также и перемотку ленты на начало, поэтому вместе с параметром REWIND использоваться не может.

2.2.2 Характеристика результатной информации

 

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

  1. Дефекты оборудования

Память. Самый частый дефект - сбои памяти (RAM). Очевидно, при использовании серверов "своей сборки" приобретается память подешевле, что приводит к соответствующим результатам. Желательно для сервера приобретать и материнскую плату и память с поддержкой ECC. Сбои памяти могут привести к достаточно тяжелым последствиям. Сервер не только "пропускает" страницы базы данных через память, но и кэширует их в памяти. Контрольные суммы страниц, даже если бы они и были, не помогут когда сервер будет записывать страницу на диск через сбойный участок памяти. В противном случае данные пришлось бы перечитывать, что весьма серьезно ухудшило бы производительность. Сбои памяти еще плохи тем, что в этом случае поврежденными как правило оказываются и база данных и ее копия, если копия используется в качестве "быстрой резервной копии" (т.к. запись на диск идет из одних и тех же участков памяти).

Диски. Выход из строя HDD.

Контроллеры. Здесь можно отметить только то, что при сбое в работе контроллера некорректная информация может быть записана на все носители, которые подключены к этому контроллеру. Именно поэтому при организации создания копии рекомендуется располагать ее на винчестере, подключенном к другому контроллеру.

Другие программы. Приложения в основном не работают с операционной системой на "внутреннем" уровне. Такие приложения никогда не смогут вызвать сбой типа известного "синего экрана" в Windows. Поэтому если подобный сбой ОС произошел, в этом скорее виноваты некорректно работающие драйверы или само оборудование (очень часто в "синем экране" виноваты драйвера видео).

  1. Сбои самого сервера

Разумеется, серверные программы, как и любое другое ПО, не являются идеальной программой. Идеальной, конечно, в смысле отсутствия ошибок. Если "железо" работает нормально, сервер может сам "сломаться" и либо просто перестать  работать, либо испортить базу данных.

В отношении файловых систем Windows известна следующая особенность: на FAT32 поддерживаются файлы размером не более 4 гигабайт (чаще всего указанное повреждение  БД и происходит при использовании  этой, фактически уже устаревшей, файловой системы). Допустим, размер вашей БД достиг 3-х гигабайт, и вы хотите перенести ее на NTFS, чтобы избежать ограничения в 4 Гб. Проблема в том, что с FAT32 на NTFS скопируется только 2 гигабайта из 3-х, из-за особенностей Windows. Это еще раз подчеркивает необходимость знания ограничений используемых файловых систем и их взаимодействия на одном компьютере.

  1. Остановка во время сборки мусора

Если во время принудительного  завершения работы сервера были активные подключения и сервер занимался  сборкой мусора, то база данных может быть повреждена (и чаще всего это так и происходит). Уменьшить вероятность таких повреждений можно только отключив автоматическую сборку мусора, а в случае принудительной сборки мусора предварительно делать "быстрый" backup, чтобы резервная копия базы данных оказалась самой свежей в случае сбоя и повреждения БД.

  1. Повреждения индексов

Повреждения индексов могут происходить  как по всем вышеперечисленным причинам, так и из-за ряда багов сервера  при работе с индексами. Поскольку  индексы не являются 100% необходимым видом объектов для функционирования базы данных, их повреждения обнаруживаются значительно позже, чем повреждения других объектов БД (например, данных таблиц). И клиентские приложения могут продолжать функционировать в такой ситуации как и прежде.

Однако, при повреждении индексов возможно искажение данных, получаемых приложениями. Если в индексе повреждено несколько ключей, и сервер не выдал  сообщения об ошибке при выполнении запроса, использующего такой индекс, в результат запроса не попадут записи, на которые ссылаются те самые поврежденные ключи. То есть, часть записей может "пропасть". Обнаружить разницу в выдаваемом количестве записей можно только используя запросы с полным перебором записей

SELECT * FROM TABLE

и с перебором по индексу

SELECT * FROM TABLE

WHERE FIELD > 0

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

Можно этого и не делать, а при  подозрении на "пропадание записей" сразу посмотреть в log-файл, и перестроить те индексы, о повреждениях которых там сообщается.

В log-файл пишутся только порядковые номера индексов (а не их имена) для  конкретных таблиц. Процесс backup поврежденные или неповрежденные индексы (за исключением  повреждений индексов по системным таблицам) не интересуют, т.к. индексы в backup хранятся только в виде описания в системных таблицах (restore создает индексы по этим описаниям в самом конце процесса restore). Backup считывает записи в натуральном порядке и индексы не использует, поэтому все существующие (committed) записи обязательно попадут в backup. Однако, если поврежден уникальный индекс, то в определенных условиях существует вероятность повторной вставки записи в таблицу с уже существующим (уникальным) значением столбца. Эта ситуация может привести к невосстановимому backup, т.е. процесс restore остановится в момент создания уникального индекса, обнаружив дубликат уникального значения в восстановленных записях. Но такая проблема также не является катастрофической - процесс создания индексов выполняется самым последним, т.е. после того как абсолютно все объекты БД уже восстановлены в базе данных процессом restore. Если вдруг обнаружена проблема неуникальных данных при создании индекса, можно попробовать найти такую запись (и затем удалить лишнюю) запросом

Информация о работе Восстановление базы данных после жесткого сбоя