(Microsoft PowerPoint - 16-odtwarzanie [tryb zgodno\234ci])

Transkrypt

(Microsoft PowerPoint - 16-odtwarzanie [tryb zgodno\234ci])
Problem odtwarzania bazy danych
Odtwarzanie bazy danych
(recovery)
• System bazy danych musi być w stanie odtworzyć swój
poprawny stan w sposób automatyczny, a więc bez
interwencji człowieka.
• Operacja odtwarzania powinna być automatycznie
inicjowana w chwili restartu systemu.
• Organizacja systemu bazy danych i organizacja procesów
jej przetwarzania musi być tak pomyślana, aby
odtwarzanie takie było możliwe.
Tadeusz Pankowski
www.put.poznan.pl/~tadeusz.pankowski
(c) T. Pankowski, Odtwarzanie
bazy danych
(c) T. Pankowski, Odtwarzanie
bazy danych
1
Problem odtwarzania bazy danych
2
Architektura systemu bazy danych
(c.d.)
T1
T2
...
Tn
Read, Write, Abort, Commit
• Odtwarzanie realizuje postulat trwałości ze zbioru
postulatów ACID.
• Odtwarzanie dotyczy awarii bazy danych wywołanych
nieoczekiwanym przerwaniem przetwarzania transakcji
(np. w wyniku awarii zasilania), a nie awarii krytycznych
wywołanych np. uszkodzeniem pamięci dyskowej.
• Omawianego w dalszym ciągu odtwarzania (recovery) nie
należy mylić z odtwarzaniem z archiwum (restoring).
Menedżer transakcji
(MT)
Read, Write, Abort, Commit
Restart
Read, Write, Abort, Commit
Menedżer
odtwarzania (MO)
Baza danych
Dziennik
transakcji
(c) T. Pankowski, Odtwarzanie
bazy danych
3
Planista
Read, Write
Fetch, Flush
Read,
Write
Menedżer pamięci
chwilowej (MPCh)
Read,
Write
Pamięć
chwilowa
(PCh)
Menedżer danych (MD)
4
Postępowanie z transakcjami w przypadku
awarii
Odtwarzanie bazy danych
Zarządzanie danymi w procesie
odtwarzania – struktury danych
Działanie
1
• Baza danych – strony stałej wielkości
• Pamięć chwilowa (PCh) (cache) – bufory o
wielkości stron
• Dziennik transakcji (log)
• Listy transakcji: aktywnych,
zatwierdzonych, odrzuconych
Nic
2
3
4
5
Checkpoint
Roll forward
(Redo)
Roll back
(Undo)
Roll forward
(Redo)
Roll back
(Undo)
Awaria systemu
5
6
Struktury danych - PCh
Struktury danych – baza danych
• Baza danych – znajduje się w pamięci stałej.
Przyjmujemy, że jej zawartość podzielona jest (fizycznie)
na jednostki zwane stronami (blokami). Pojemność strony
jest równa pojemności bufora.
• Niekiedy zakłada się, że zarówno w bazie danych, jak i w
systemie buforów znajdują się pule stron/buforów różnej
wielkości (np. pula o wielkości 8kB i pula o wielkości 32
kB).
(c) T. Pankowski, Odtwarzanie
bazy danych
(c) T. Pankowski, Odtwarzanie
bazy danych
7
• Pamięć chwilowa (podręczna) – jest to system buforów
przechowywanych w pamięci operacyjnej.
• W jednym buforze może być umieszczona jedna strona
(blok) bazy danych.
• Liczba buforów jest niewielka w porównaniu z całą bazą
danych stąd często przy próbie sprowadzenia kolejnego
fragmentu bazy danych do PCh należy podjąć decyzję,
który z buforów należy wykorzystać (proces ten nazywany
jest wymianą stron). Wówczas zawartość tego bufora
należy zapamiętać (ang. flash, write) w bazie danych.
(c) T. Pankowski, Odtwarzanie
bazy danych
8
Struktury danych – PCh (c.d.)
Struktury danych – PCh (c.d.)
• Istotne jest kto zarządza wymianą stron.
• Możliwe są dwa rozwiązania:
• menedżer odtwarzania – wówczas przy wymianie stron
może być brana pod uwagę wiedza o stanie procesu
przetwarzania/odtwarzania;
• menedżer pamięci chwilowej – proces wymiany stron
sterowany jest jakimś przyjętym algorytmem biorącym
pod uwagę na przykład czas ostatniego dostępu do
bufora (np. przy stosowaniu algorytmu LRU, Last
Recently Used – używany najdawniej – zwalniany jest
ten bufor, do którego ostatnie odwołanie miało miejsce
najdawniej).
(c) T. Pankowski, Odtwarzanie
bazy danych
• Wszelkie operacje na bazie danych (odczytywanie,
zapisywanie) odbywa się za pośrednictwem PCh.
• Oznacza to, że strona (blok) danych bazy danych, do
którego się odwołujemy, musi przed wykonaniem operacji
znajdować się w PCh – albo już tam jest, albo musi być
tam sprowadzony.
• Zauważmy, że w przypadku awarii (na przykład zaniku
zasilania) zawartość PCh jest tracona.
(c) T. Pankowski, Odtwarzanie
bazy danych
9
Struktury danych – dziennik
transakcji (log)
10
Struktury danych – listy transakcji
• Dziennik transakcji, DzT, (ang. log) – znajduje się w pamięci stałej.
• Zakładamy, że w dzienniku transakcji zapamiętane są wszystkie
ostatnio zatwierdzona wartości wszystkich danych bazy danych (w
praktyce stosuje się różne zabiegi optymalizacyjne).
• Dzięki DzT możliwe jest określenie ostatnio zatwierdzonych danych
(należy w tym celu przeglądać dziennik z dołu do góry).
• Zawartość dziennika transakcji może być traktowana jako 3-kolumnowa
tabela o następującej strukturze:
•
•
•
Listy transakcji:
LTA - lista transakcji aktywnych,
LTZ - lista transakcji zatwierdzonych,
LTO - lista transakcji odrzuconych.
gdzie (t, x, v) ∈ DzT oznacza, że transakcja t nadała danej x wartość v.
(c) T. Pankowski, Odtwarzanie
bazy danych
11
(c) T. Pankowski, Odtwarzanie
bazy danych
12
Algorytm UNDO/REDO (c.d.)
Algorytm UNDO/REDO
Algorytm UNDO/REDO opisuje proces przetwarzania
transakcji z uwzględnieniem możliwości odtworzenia bazy
danych w przypadku awarii.
Odtwarzanie bazy danych następuje w chwili restartu
systemu po jego awarii.
Algorytm UNDO/REDO jest stosowany wówczas, gdy w
procesie odtwarzania konieczne jest wykonanie operacji
UNDO dotyczącej przerwanych transakcji oraz operacji
REDO dotyczącej zatwierdzonych transakcji.
(c) T. Pankowski, Odtwarzanie
bazy danych
UNDO oznacza przywrócenie poprzednich
(zatwierdzonych) wartości tym danym, które były
zmieniane przez transakcje przerwane przed ich
zatwierdzeniem.
Operacja jest konieczna wtedy, gdy strategia wymiany
stron w PCh prowadzona jest przez MPCh niezależnie
od MO.
Może więc się zdarzyć, że blok danych z PCh został
zapamiętany w bazie danych w momencie, gdy
transakcja zapisująca w nim dane nie została jeszcze
zatwierdzona. W przypadku awarii należy więc te zmiany
wycofać.
(c) T. Pankowski, Odtwarzanie
bazy danych
13
Algorytm UNDO/REDO (c.d.)
Architektura systemu bazy danych
T1
REDO oznacza ponowne wykonanie operacji aktualizacji
danych wykonanych przez transakcje zatwierdzone.
Operacja ta jest konieczna wtedy, gdy MPCh prowadzi
własną strategię wymiany stron.
Może więc się zdarzyć, że mimo iż transakcja została
zatwierdzona, to wykonane przez nią zmiany nie zostały
jeszcze zrzucone z PCh do bazy danych. W przypadku
awarii nastąpi utrata efektów pracy transakcji.
...
Tn
Menedżer transakcji
(MT)
Read, Write, Abort, Commit
Planista
Restart
Read, Write, Abort, Commit
Menedżer
odtwarzania (MO)
Dziennik
transakcji
15
T2
Read, Write, Abort, Commit
Baza danych
(c) T. Pankowski, Odtwarzanie
bazy danych
14
Read, Write
Fetch, Flush
Read,
Write
Menedżer pamięci
chwilowej (MPCh)
Read,
Write
Pamięć
chwilowa
(PCh)
Menedżer danych (MD)
16
Algorytm UNDO/REDO – Write(
Write(T,
T, x, v)
v)
1.
2.
3.
4.
5.
Algorytm UNDO/REDO – Commit
Commit((T)
Dołącz transakcję T do listy transakcji aktywnych
(LTA), jeśli jeszcze na niej nie występuje.
Jeśli x nie znajduje się w PCh, to sprowadź do PCh
stronę zawierającą x.
Dołącz (T, x, v) do dziennika transakcji (DzT).
Przypisz danej x w PCh wartość v.
Zawiadom planistę o zakończeniu operacji.
(c) T. Pankowski, Odtwarzanie
bazy danych
1.
2.
3.
(c) T. Pankowski, Odtwarzanie
bazy danych
17
2.
3.
4.
Dla każdej danej x zapisywanej przez T:
• jeśli x nie znajduje się w PCh, to sprowadź tam
stronę zawierającą x,
• przypisz w PCh danej x uprzednią wartość x
względem T (before image).
Dołącz T do listy transakcji odrzuconych.
Powiadom planistę o odrzuceniu transakcji T.
Usuń T z listy transakcji aktywnych.
(c) T. Pankowski, Odtwarzanie
bazy danych
18
Algorytm UNDO/REDO – Restart
Algorytm UNDO/REDO – Abort
Abort((T)
1.
Dałącz T do listy transakcji zatwierdzonych (LTZ).
Powiadom planistę o zatwierdzeniu transakcji T.
Usuń T z listy transakcji aktywnych (LTA).
1.
2.
3.
19
Wyczyść wszystkie bufory w PCh, REDONE := ∅ i UNDONE := ∅.
Rozpocznij od ostatniego zapisu w DzT i przesuwaj się do jego
początku. Dopóki nie przeanalizowano wszystkich zapisów w DzT,
wykonuj:
Dla każdego zapisu (T, x, v), takiego że x ∉ REDONE ∪ UNDONE:
• jeśli x nie znajduje się w PCh, to sprowadź tam stronę
zawierającą x;
• jeśli T jest na liście transakcji zatwierdzonych, przypisz danej x
w PCh wartość v i przyjmij REDONE := REDONE ∪ {x};
• jeśli T nie jest na liście transakcji zatwierdzonych, przypisz w
PCh danej x uprzednią wartość x względem T i przyjmij
UNDONE := UNDONE ∪ {x}.
Dla każdej transakcji T z listy transakcji zatwierdzonych, usuń T z
listy transakcji aktywnych.
Powiadom planistę o zakończeniu operacji Restart.
20