- •Лекция №10 – Восстановление данных
- •Синхронная репликация
- •Асинхронная репликация
- •Проблемы согласованности
- •Резервное копирование
- •Восстановление базы данных
- •Необходимость восстановления
- •Транзакции и восстановление
- •Функции восстановления
- •Механизм резервного копирования
- •Файл журнала
- •Создание контрольных точек
- •Методы восстановления
- •Метод восстановления с использованием отложенного обновления
- •Метод восстановления с использованием немедленного обновления
- •Метод теневого страничного обмена
Механизм резервного копирования
Любая СУБД должна предоставлять механизм, позволяющий создавать резервные копии базы данных и ее файла журнала через установленные интервалы и без необходимости останавливать систему.
Резервная копия базы данных используется в случае повреждения или разрушения файлов базы данных во вторичной памяти. Резервное копирование может выполняться для всей базы данных в целом или для изменившейся ее части (т.е. инкрементно). В последнем случае в копию помещаются сведения только об изменениях, накопившихся с момента создания предыдущей полной или инкрементной резервной копии системы. Как правило, резервные копии создаются на автономных носителях.
Файл журнала
Для фиксации хода выполнения транзакций в базе данных СУБД использует специальный файл, который называют журналом. Он содержит сведения обо всех обновлениях, выполненных в базе данных. В файл журнала может помещаться следующая информация.
Записи о транзакциях, включающие идентификатор транзакции;
тип записи журнала (начало транзакции, операции вставки, обновления или удаления, отмена или фиксация транзакции);
идентификатор элемента данных, вовлеченного в операцию обработки базы данных (операции вставки, удаления и обновления);
копию элемента данных до операции, т.е. его значение до изменения (только операции обновления и удаления);
копию элемента данных после операции, т.е. его значение после изменения (только для операций обновления и вставки);
служебную информацию файла журнала, включающую указатели на предыдущую и следующую записи журнала для этой транзакции (все операции).
Записи контрольных точек.
Очень часто файл журнала используется и для других целей, отличных от задач восстановления (например, для сбора сведений о текущей производительности, для аудита и т.д.). В этом случае в файл журнала может помещаться множество дополнительной информации (например, сведения об операциях чтения, о регистрации пользователей, завершении сеансов пользователей и т.д.).
Поскольку файл журнала транзакций имеет большое значение для процессов восстановления, он может создаваться в двух и даже в трех экземплярах, которые автоматически поддерживаются системой. В случае повреждения одной копии при восстановлении будет использоваться другая.
Один из подходов к автономной обработке файла журнала состоит в разделении оперативного файла журнала на две независимые части, организованные в виде файлов с произвольным доступом. Записи журнала помещаются в первый файл до тех пор, пока он не будет заполнен до установленного уровня (например, на 70%). Затем открывается второй файл, и все записи журнала для новых транзакций записываются уже в него. Сведения о старых транзакциях продолжают записывать в первый файл до тех пор, пока обработка всех старых транзакций не будет завершена. В этот момент первый файл закрывается и переводится в автономное состояние. Подобный подход упрощает восстановление отдельных транзакций, поскольку записи о каждой отдельной транзакции всегда содержатся в одном фрагменте файла журнала — либо в оперативном, либо в автономном. Следует отметить, что файл журнала потенциально является узким местом с точки зрения производительности любых систем, поэтому скорость записи информации в файл журнала может оказаться одним из важнейших факторов, определяющих общую производительность системы с базой данных.