Классика баз данных - статьи



         

Схема восстановления


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

Опишем схему восстановления ARIES более детально. Для этого приведем псевдокод, описывающий процесс восстановления в виде процедуры.

restart (masteraddr)
{
restartanalysis (masteraddr, transtable, dirtypages, redoLSN);
restartredo (redoLSN, transtable, dirtypages);
Инициализировать системную таблицу грязных страниц данными из таблицы dirtypages, созданной на двух первых этапах;
Удалить из этой таблицы все записи, соответствующие тем страницам, которые были сброшены на диск;
restartundo (transtable);
Восстановить блокировки для транзакций, находившихся в состоянии prepared;
checkpoint ();
}

Сначала следует стадия анализа. На этой стадии, на основе записей последней контрольной точки воссоздаются таблицы транзакций и грязных страниц. Еще одно значение, получаемое на этой стадии, - redoLSN. Это номер записи журнала, начиная с которой будут повторяться действия над базой данных во время следующего этапа восстановления. Единственный тип записей, которые добавляются в журнал во время стадии анализа, - это записи о завершении откатов транзакций, которые уже завершили откат к моменту сбоя, но не успели зафиксировать этот факт в журнале.




Содержание  Назад  Вперед