Принципы построения БД Тема 81 Принципы построения и работы баз данных Тема 08: Восстановление при сбоях.

Презентация:



Advertisements
Похожие презентации
Модели транзакций Журнализация и буферизация. Зачем нужна буферизация Если бы запись об изменении базы данных, которая должна поступить в журнал при выполнении.
Advertisements

Модели транзакций Свойства транзакций. Способы завершения транзакций.
Транзакции Транзакция - это последовательность операций, производимых над базой данных и переводящих базу данных из одного непротиворечивого (согласованного)
Лекция 25 Лекция 25 Понятие целостности базы данных. Условия целостности. Транзакции. Обработка транзакций. Свойства транзакций. Модель ANSI/ISO. Назначение.
Введение. Цели и задачи. Основные понятия и определения. Требования к базам данных.
Выполнила студентка группы ТУ-501 Полозова Ю.О. База данных (БД) представляет собой совокупность структурированных данных, хранимых в памяти вычислительной.
Основные виды ресурсов и возможности их разделения.
Защита данных в базах данных: обеспечение целостности и безопасности данных "Стыдно не уметь защищать себя рукою, но ещё более стыдно не уметь защищать.
1 Программирование на языке Паскаль Тема 1. Введение.
Возобновление счета для объектов, сохраненных в файле объектов. Научный руководитель: Илюшин А.И. Чугунов Арсений.
Администрирование информационных систем Администрирование баз данных Восстановление данных.
Модели транзакций Уровни изолированности пользователей.
Тема 11 Принципы построения и работы баз данных Тема 01: Введение.
Файловый тип данных Файл – это область памяти на внешнем носителе, в которой хранится некоторая информация. В языке Паскаль файл представляет собой последовательность.
Лекция 8 2 апреля 2002 г. Закраска Гуро и Фонга Удаление невидимых линий и поверхностей.
1 Программирование на языке Паскаль Тема 1. Введение.
Лекция 12 Файловые системы NTFS - продолжение. ТТХ.
Основы программирования. 2 Циклы Цикл – это многократное выполнение одинаковой последовательности действий. цикл с известным числом шагов цикл с неизвестным.
Числовые промежутки. Алгебра 8 класс Цели урока: Ввести понятие числового промежутка; Научится изображать и записывать числовые промежутки; Рассмотреть.
1 Программирование на языке Паскаль Тема 1. Введение Кулебякин В.В.
Транксрипт:

Принципы построения БД Тема 81 Принципы построения и работы баз данных Тема 08: Восстановление при сбоях

Принципы построения БД Тема 82 Часть 2 Восстановление при сбоях Гл.17 Управление параллельным доступом Гл.18 Обработка транзакций Гл.19

Принципы построения БД Тема 83 Целостность и корректность данных Хотели бы вы, чтобы данные были правильными постоянно EMP Name White Green Gray Age

Принципы построения БД Тема 84 Ограничения целостности Условия, которым должны удовлетворять данные Примеры: - x является ключом отношения R - выполняется функциональная зависимость x y для всех кортежей из R - Domain(x) = {Red, Blue, Green} - никто из служащих не должен иметь зарплату, превышающую среднюю более чем в 2 раза

Принципы построения БД Тема 85 Определения: Согласованное состояние: состояние, в котором выполняются все ограничения целостности Согласованная БД: База данных в согласованном состоянии

Принципы построения БД Тема 86 Ограничения целостности (как мы их знаем ) могут не обеспечивать «полную корректность» Пример 1 Условия на транзакции Когда зарплата обновляется, новая зарплата > старая зарплата Кода удаляется запись счета в банке, остаток = 0 можно имитировать простым ограничением Acct #….balancedeleted?

Принципы построения БД Тема 87 Пример 2 База данных должна отражать реальный мир БД Реальность Ограничения целостности (как мы их знаем ) могут не обеспечивать «полную корректность»

Принципы построения БД Тема 88 Наблюдение: БД не может быть согласована постоянно из-за необходимости изменений! Пример: a1 + a2 +…. an = Итог (ограничение) Добавить $100 к a2: a2 a Итог Итог а 2 Итог

Принципы построения БД Тема 89 Транзакция: совокупность действий, сохраняющая согласованность БД Согласов.БД T Важное предположение Если T начинается в согласованном состоянии и выполняется изолированно (т.е.без конкуренции с другими действиями над БД), то после ее завершения БД остается в согласованном состоянии

Принципы построения БД Тема 810 Как могут быть нарушены ограничения целостности? Ошибка в алгоритме транзакции Ошибка в СУБД Сбой оборудования, например, сбой диска, в результате которого изменяется о статора счете Общие данные T1: увеличить на 10% зарплату программистам из списка T2: изменить программистов из списка на системных аналитиков

Принципы построения БД Тема 811 Как можно предотвратить/исправить нарушения? Глава 17: только при сбоях системы Chapter 18: только из-за общих данных Chapter 19: при сбоях системы и общих данных Не будем рассматривать: Как писать правильные транзакции Как писать правильные СУБД Проверку и восстановление ограничений Рассматриваемые здесь решения не знают об ограничениях

Принципы построения БД Тема 812 Восстановление при сбоях Первое, что нужно сделать – описать модель сбоя События Желательные Нежелательные Ожидаемые Неожидаемые Процессор Память Диск CPU M D

Принципы построения БД Тема 813 Желательные события: то, что программа должна делать в соответствии с ее руководством. Нежелательные ожидаемые события - зависание или сбой системы, - потеря памяти, - остановка процессора, сброс Нежелательные неожидаемые события - все остальное ( необъяснимая потеря данных, землетрясение, нападение террористов)

Принципы построения БД Тема 814 Является ли эта модель приемлемой? Подход: Добавить низко уровневые проверки + избыточность для увеличения вероятности, что система выживет при сбое Например, поддержка точной копии диска или дискового массива Проверка четности при обращении к памяти Проверки процессора

Принципы построения БД Тема 815 Второй важный момент после выбора модели: Иерархия памяти Операции Input (x): блок с элементом БД x память Output (x): блок с элементом БД x диск Read (x,t): если нужно выполнить input(x), копировать в переменную t значение x из блока Write (x,t): если нужно выполнить input(x), значение x в блоке t Память Диск x x

Принципы построения БД Тема 816 Ключевая проблема Незавершенная транзакция Пример Ограничение: A=B T1: A A 2 B B 2 Память Диск T1:Read (A,t); t t 2 Write (A,t); Read (B,t); t t 2 Write (B,t); Output (A); Output (B); - сбой A: 8 B: 8 16 A: 8 B: 8 16 Необходима (А)атомарность (неделимость) транзакции – выполнение либо всех действий транзакции либо никаких.

Принципы построения БД Тема 817 Файл протокола (журнал регистрации) Протокол – последовательность записей о том что происходит с каждой транзакцией. Эти последовательности для разных транзакций могут перекрываться. При сбое системы происходит просмотр протокола, незавершенные по протоколу транзакции должны быть либо повторены, либо полностью отменены (каждое действие, отмеченное в ппротоколе). Типы записей: START, COMMIT, ABORT

Принципы построения БД Тема 818 T1:Read (A,t); t t 2 A=B Write (A,t); Read (B,t); t t 2 Write (B,t); Output (A); Output (B); A:8 B:8 A:8 B:8 память диск протокол Одно из решений - протокол-возврата (немедленная модификация)

Принципы построения БД Тема 819 Одно осложнение Протокол сначала заносится в память, а потом уже на диск (для эффективной буферизации) Не записывается на диск при каждом действии память БД Протокол A: 8 16 B: 8 16 Log: A: 8 B: 8 16 Плохое сост.# 1

Принципы построения БД Тема 820 Протокол сначала заносится в память, а потом уже на диск (для эффективной буферизации) Не записывается на диск при каждом действии память БД Протокол A: 8 16 B: 8 16 Log: A: 8 B: 8 16 Плохое сост.# 2...

Принципы построения БД Тема 821 Правила протокола-возврата (Undo logging rules) (1) Для каждого действия создать запись в ппротоколе- возврата (содержащую старое значение) (2) Перед изменением x на диске, запись, содержащая старое значение x должна быть уже записана в файл протокола-возврата (3) Перед записью в файл протокола все операции записи действий транзакции на диск должны быть уже завершены

Принципы построения БД Тема 822 Правила восстановления: протокол-возврата Для каждой транзакции Ti, для которой в ппротоколе имеется запись : -Если для нее в протоколе имеется также запись или, то ничего не делать -Иначе для всех записей в ппротоколе: write (X, v) output (X ) записать в протокол

Принципы построения БД Тема 823 Правила восстановления: протокол-возврата (1)Пусть S = множество транзакций с записями в ппротоколе, но без записей (или ) (2)Для каждой записи в ппротоколе в обратном порядке (более поздние обрабатываются раньше) выполнить: - если Ti S то - write (X, v) - output (X) (3)Для каждой транзакции Ti S записать в протокол Что если произойдет сбой во время восстановления? Нет проблем! Восстановления с использованием протокола возврата – идемпотентно (т.е.X * X = X)

Принципы построения БД Тема 824 Дальнешее обсуждение: Протокол-восстановления(повтора) Протокол-возврата-повтора, почему оба? Действия в реальности Контрольные точки Сбои физических носителей информации

Принципы построения БД Тема 825 Протокол-повтора (отложенная модификация) T 1: Read(A,t); t t 2; write (A,t); Read(B,t); t t 2; write (B,t); Output(A); Output(B) A: 8 B: 8 A: 8 B: 8 память БД протокол 16 вывод 16

Принципы построения БД Тема 826 Правила протокола-повтора (Redo logging rules) (1) Для каждого действия создать запись в ппротоколе-повтора (содержащую новое значение) (2) Перед модификацией X на диске (БД), все записи транзакции, модифицирующие X (включая commit) должны быть записаны на диск (3) Очистить буфер протокола (записать его содержимое на диск) при завершении (commit) транзакции

Принципы построения БД Тема 827 Для каждой транзакции Ti, для которой в ппротоколе имеется запись : –Для всех записейl этой транзакции : Write(X, v) Output(X) Правила восстановления: протокол-повтора

Принципы построения БД Тема 828 (1) Пусть S = множество транзакций, для которых в ппротоколе-повтора имеется запись (2) Для каждой записи в порядке от начала к концу протокола выполнить: - если Ti S то Write(X, v) Output(X) (3) Для каждой незавершенной транзакции (Ti S) записать в протокол Правила восстановления: протокол-повтора

Принципы построения БД Тема 829 Восстановление очень медленное ! Протокол-повтора: ПерваяT1 записала A,BПослед. запись Завершена год назад Запись (1 год назад) --> Тем не менее, нужно повторить после сбоя!!... Сбой

Принципы построения БД Тема 830 Решение: Использование контрольных точек (простая версия) Периодически, создавать контрольную точку: (1) Прервать прием новых транзакций (2) Подождать завершения всех текущих транзакций (3) Очистить буферы протокола (записать на диск) (4) Записать буферы БД на диск (не очищая буферы) (5) Записать информацию о контрольной точке (checkpoint) в протокол и на диск (6) Возобновить обработку транзакций

Принципы построения БД Тема 831 Пример: Что делать при восстановлении? Протокол-повтора (на диске): Checkpoint Сбой...

Принципы построения БД Тема 832 Основные недостатки: Протокол-возврата: не может восстановить копию текущего состояния БД Протокол-повтора: необходимо держать в памяти все модифицированные блоки до завершения транзакции Решение: протокол-возврата-повтора! Запись протокола

Принципы построения БД Тема 833 Правила Перед изменением на диске элемента Х БД, вызываемого транзакцией Т, необходимо записать на диск соответствующую запись протокола

Принципы построения БД Тема 834 «Не останавливающие» контрольные точки L O G для возврата измененные буферы памяти записываются на диск Start-ckpt Актив. TR: Ti,T2,... end ckpt...

Принципы построения БД Тема 835 Примеры:что делать при восстановлении? нет T1 commit L O G T 1,- a... Ckpt T 1... Ckpt end... T1-bT1-b отменить T1 (возвратить a,b) LOGLOG... T1aT1a T1bT1b T1cT1c T 1 cmt... ckpt- end ckpt-s T 1 Повторить T1: (повторить b,c)

Принципы построения БД Тема 836 Процесс восстановления: Обратный проход (с конца протокола до места начала последней контрольной точки) –Построить множество S завершенных транзакций –Отменить действия транзакций, не вошедших в S Отменить активные транзакции контр.точки –Пройти по цепочке возврата для транзакций из (список активных транзакций контр.точки) - S Прямой проход ( от начала последней контрольной точки до конца протокола ) –Повторить действия транзакций из S Обратный проход Прямой проход начать контр.- точку

Принципы построения БД Тема 837 Действия в реальном мире Например, выдача денег в банкомате Ti = a1 a2 …... aj …... an $ Решение (1)Выполнять реальнве действия после завершения транзакции (2) Желательно, чтобы транзакция была идемпотентной

Принципы построения БД Тема 838 банкомат Выдать $$ (сумма, Tid, время) $ выдать(сумма) посл.Tid: время:

Принципы построения БД Тема 839 Сбои внешних носителей A: 16 Решение: Иметь несколько копий данных

Принципы построения БД Тема 840 Пример 1 Тройная избыточность Поддерживать 3 копии на различных дисках Output(X) --> 3 операции вывода Input(X) --> 3 операции ввода + голосование X1X2 X3

Принципы построения БД Тема 841 Пример #2 Избыточная запись, единственное чтение Поддерживать N копий на различных дисках Output(X) --> N операций вывода Input(X) --> чтение 1 копии - если шибок нет- принять - иначе читать копию Предполагается, что можно определить, являются ли прочитаннве данные ошибочными

Принципы построения БД Тема 842 Пример #3: Резервная копия БД + протокол резервная копия БД текущая БД протокол если текущая БД потеряна, – восстановить резервную копию – восстановить текущее состояние, использую протокол

Принципы построения БД Тема 843 Когда протокол (или его часть) становится ненужным? Контр. точка Копия БД Посл. запись для возвр. Не нужен для восстановления диска Не нужен для возврата при сбоях системы Не нужен для повтора при сбоях системы log время

Принципы построения БД Тема 844 Итог Согласованность данных Один источник проблем - сбои: - Использование протоколов - Избыточность Другой источник проблем – совместное использование данных: -> следующая тема