Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Методы восстановления БД: восстановление с резервной копии, метод «redo», метод теневых страниц



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

В этом случае БД восстанавливается с резервной копии. После этого в ней выполняются все транзакции, присутствующие в журнале. Такой подход предусматривает, что журнал должен остаться не поврежденным, то есть находиться на другом физическом носителе. /*физическое размещение резервных копий и журналов транзакций производиться на этапе физического проектирования БД. */

Второй метод применяется в случае, если БДоказалась в несогласованном состоянии в результате сбоя. /*То есть результаты выполнения некоторых транзакций записались на диск частично */

Протокол, который обеспечивает восстановление после сбоя на основе журнала, называется «redo», так как осуществляетперезапуск некоторых транзакций. Этот протокол является расширением двухфазного протокола. Если транзакция следует этому протоколу, то после точки завершения она должна выполнить следующие действия:

1 Для каждого элемента, значение которого транзакция записывает, в журнал записываются соответствующие строки. 2 Для шага commit записывается необходимая строка в журнал. 3 Журнал записывается на диск. Только после этого транзакция считается завершенной. /*Запись на диск, так как журнал или отельный его блок находится в оперативной памяти */. 4 Для каждого элемента, который был изменен транзакцией, осуществляется запись в БД.

Пример транзакции, работающей по протоколу «redo».

    (T, begin)
  lock A  
  lock B  
    (T, A, v)
    (T, B, v)
    (T, commit)
  write A  
  write B  
  Unlock A  
  Unlock B  

/*Пояснить, что write – фактически запись на диск. Что после шага 6 транзакция считается завершенной. */

Если транзакция следует этому протоколу, то при системном сбое используется алгоритм восстановления, который приводит систему в корректное (непротиворечивое) состояние. /*Пример. Сбойная транзакция переводила деньги с одного счета на другой. Информация об удалении суммы перевода с одного счета зафиксировалась в БД, а о появлении тай же суммы на другом счете – еще нет. */

Прежде всего, этот алгоритм проверяет оставшиеся транзакции. Если транзакция успешно завершена, но ее блокировки не были сняты до сбоя, то это необходимо выполнить, чтобы получить возможность использовать блокированные элементы. /*Транзакция дошла до write, но не дошла до unlock */. Если транзакция не завершилась, то ее блокировки так же нужно снять, так как перезапуск транзакции приведет к требованию установить те же блокировки.

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

Если в рассмотренной ранее транзакции сбой произошел до шага 6, то алгоритм пропустит в журнале все записи об изменении элементов этой транзакцией, то есть действия 7 и 8 не будут выполнены. Если сбой произошел после шага 6, то данные могли записаться или не записаться на диск. Поэтому алгоритм проверит все записи в журнале, относящиеся к этой транзакции и восстановит все ее изменения. В любом случае алгоритм снимет все блокировки этой транзакции, то есть шаги 9, 10 выполняться в любом случае.

Чтение журнала выполняется до последней контрольной точки.

Этот метод является альтернативой методу ведения журнала транзакций..

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





Дата публикования: 2015-02-18; Прочитано: 458 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...