Для восстановления после сбоя базы данных системы управления базами данных используют ряд методов управления восстановлением. В этой главе мы рассмотрим различные подходы к восстановлению базы данных.
Типичные стратегии восстановления базы данных:
-
В случае мягких сбоев, которые приводят к несогласованности базы данных, стратегия восстановления включает в себя отмену транзакции или откат. Однако иногда повторное выполнение транзакции также может быть принято для восстановления согласованного состояния транзакции.
-
В случае серьезных сбоев, приводящих к серьезному повреждению базы данных, стратегии восстановления включают восстановление предыдущей копии базы данных из архивной резервной копии. Более актуальное состояние базы данных достигается путем повторного выполнения операций зафиксированных транзакций из журнала транзакций.
В случае мягких сбоев, которые приводят к несогласованности базы данных, стратегия восстановления включает в себя отмену транзакции или откат. Однако иногда повторное выполнение транзакции также может быть принято для восстановления согласованного состояния транзакции.
В случае серьезных сбоев, приводящих к серьезному повреждению базы данных, стратегии восстановления включают восстановление предыдущей копии базы данных из архивной резервной копии. Более актуальное состояние базы данных достигается путем повторного выполнения операций зафиксированных транзакций из журнала транзакций.
Восстановление после сбоя питания
Сбой питания приводит к потере информации в непостоянной памяти. После восстановления питания операционная система и система управления базами данных перезагружаются. Менеджер восстановления инициирует восстановление из журналов транзакций.
В случае режима немедленного обновления менеджер восстановления выполняет следующие действия:
-
Транзакции, которые находятся в активном и неудачном списке, отменяются и записываются в список отмены.
-
Транзакции, находящиеся в списке перед фиксацией, переделываются.
-
Никаких действий не предпринимается для транзакций в списках фиксации или отмены.
Транзакции, которые находятся в активном и неудачном списке, отменяются и записываются в список отмены.
Транзакции, находящиеся в списке перед фиксацией, переделываются.
Никаких действий не предпринимается для транзакций в списках фиксации или отмены.
В случае отложенного режима обновления менеджер восстановления выполняет следующие действия:
-
Транзакции, которые находятся в активном списке и в списке с ошибками, записываются в список отмены. Операции отмены не требуются, поскольку изменения еще не записаны на диск.
-
Транзакции, находящиеся в списке перед фиксацией, переделываются.
-
Никаких действий не предпринимается для транзакций в списках фиксации или отмены.
Транзакции, которые находятся в активном списке и в списке с ошибками, записываются в список отмены. Операции отмены не требуются, поскольку изменения еще не записаны на диск.
Транзакции, находящиеся в списке перед фиксацией, переделываются.
Никаких действий не предпринимается для транзакций в списках фиксации или отмены.
Восстановление после сбоя диска
Сбой диска или жесткий сбой приводят к полной потере базы данных. Для восстановления после этого аварийного сбоя подготовлен новый диск, затем восстановлена операционная система и, наконец, база данных восстановлена с использованием резервного копирования базы данных и журнала транзакций. Метод восстановления одинаков для режимов немедленного и отложенного обновления.
Менеджер восстановления выполняет следующие действия:
-
Транзакции в списке фиксации и перед фиксацией переделываются и записываются в список фиксации в журнале транзакций.
-
Транзакции в активном и неудачном списках отменяются и записываются в список прерываний в журнале транзакций.
Транзакции в списке фиксации и перед фиксацией переделываются и записываются в список фиксации в журнале транзакций.
Транзакции в активном и неудачном списках отменяются и записываются в список прерываний в журнале транзакций.
Checkpointing
Контрольная точка — это момент времени, когда запись записывается в базу данных из буферов. Как следствие, в случае сбоя системы диспетчеру восстановления не нужно повторять транзакции, которые были зафиксированы до контрольной точки. Периодическая проверка сокращает процесс восстановления.
Два типа техники контрольных точек —
- Последовательная проверка
- Нечеткая контрольная точка
Последовательная проверка
Последовательная контрольная точка создает непротиворечивое изображение базы данных в контрольной точке. Во время восстановления отменяются или переделываются только те транзакции, которые находятся справа от последней контрольной точки. Транзакции с левой стороны последней непротиворечивой контрольной точки уже зафиксированы и не нуждаются в повторной обработке. Действия, предпринятые для контрольно-пропускного пункта:
- Активные транзакции временно приостановлены.
- Все изменения в буферах основной памяти записываются на диск.
- Запись «контрольная точка» записывается в журнал транзакций.
- Журнал транзакций записывается на диск.
- Приостановленные транзакции возобновляются.
Если на шаге 4 журнал транзакций также архивируется, то эта контрольная точка помогает восстановлению после сбоев диска и сбоев питания, в противном случае это помогает восстановлению только после сбоев питания.
Нечеткая проверка
В нечеткой контрольной точке во время контрольной точки все активные транзакции записываются в журнал. В случае сбоя питания менеджер восстановления обрабатывает только те транзакции, которые были активны во время контрольной точки и позже. Транзакции, которые были зафиксированы до контрольной точки, записываются на диск и, следовательно, не требуют повторного выполнения.
Пример контрольной точки
Давайте рассмотрим, что в системе время контрольной точки tcheck, а время сбоя системы — tfail. Пусть будет четыре транзакции T a , T b , T c и T d, такие что —
-
T a совершает перед контрольной точкой.
-
T b запускается до контрольной точки и фиксируется до сбоя системы.
-
T c запускается после контрольной точки и фиксируется до сбоя системы.
-
T d запускается после контрольной точки и был активен во время сбоя системы.
T a совершает перед контрольной точкой.
T b запускается до контрольной точки и фиксируется до сбоя системы.
T c запускается после контрольной точки и фиксируется до сбоя системы.
T d запускается после контрольной точки и был активен во время сбоя системы.
Ситуация изображена на следующей диаграмме —
Действия, которые выполняет менеджер восстановления, —
- С Т а ничего не делается.
- Повтор транзакции выполняется для T b и T c .
- Отмена транзакции выполняется для T d .
Восстановление транзакции с использованием UNDO / REDO
Восстановление транзакции выполняется для устранения неблагоприятных последствий ошибочных транзакций, а не для восстановления после сбоя. К ошибочным транзакциям относятся все транзакции, которые изменили базу данных в нежелательное состояние, и транзакции, которые использовали значения, записанные ошибочными транзакциями.
Восстановление транзакции в этих случаях является двухэтапным процессом —
-
Отмените все ошибочные транзакции и транзакции, на которые могут повлиять ошибочные транзакции.
-
Удалите все транзакции, которые не являются неисправными, но были отменены из-за ошибочных транзакций.
Отмените все ошибочные транзакции и транзакции, на которые могут повлиять ошибочные транзакции.
Удалите все транзакции, которые не являются неисправными, но были отменены из-за ошибочных транзакций.
Шаги для операции UNDO —
-
Если ошибочная транзакция выполнила INSERT, менеджер восстановления удаляет вставленные элементы данных.
-
Если ошибочная транзакция выполнила DELETE, менеджер восстановления вставляет удаленные элементы данных из журнала.
-
Если ошибочная транзакция выполнила ОБНОВЛЕНИЕ, диспетчер восстановления удаляет это значение, записывая значение перед обновлением из журнала.
Если ошибочная транзакция выполнила INSERT, менеджер восстановления удаляет вставленные элементы данных.
Если ошибочная транзакция выполнила DELETE, менеджер восстановления вставляет удаленные элементы данных из журнала.
Если ошибочная транзакция выполнила ОБНОВЛЕНИЕ, диспетчер восстановления удаляет это значение, записывая значение перед обновлением из журнала.
Шаги для операции REDO —
Если транзакция выполнила INSERT, менеджер восстановления создает вставку из журнала.
Если транзакция выполнила DELETE, менеджер восстановления создает удаление из журнала.
Если транзакция выполнила ОБНОВЛЕНИЕ, менеджер восстановления создает обновление из журнала.