Rozproszony DBMS - Odzyskiwanie bazy danych
Aby odzyskać sprawność po awarii bazy danych, systemy zarządzania bazami danych stosują szereg technik zarządzania odtwarzaniem. W tym rozdziale przeanalizujemy różne podejścia do odzyskiwania baz danych.
Typowe strategie odzyskiwania bazy danych to:
W przypadku awarii miękkich, które skutkują niespójnością bazy danych, strategia odzyskiwania obejmuje cofnięcie lub wycofanie transakcji. Jednak czasami można również zastosować ponowienie transakcji, aby przywrócić jej spójny stan.
W przypadku poważnych awarii skutkujących rozległymi uszkodzeniami bazy danych, strategie odzyskiwania obejmują przywrócenie wcześniejszej kopii bazy danych z archiwalnej kopii zapasowej. Bardziej aktualny stan bazy danych uzyskuje się poprzez ponowne wykonanie operacji zatwierdzonych transakcji z dziennika transakcji.
Przywracanie po awarii zasilania
Awaria zasilania powoduje utratę informacji w pamięci nietrwałej. Po przywróceniu zasilania następuje ponowne uruchomienie systemu operacyjnego i systemu zarządzania bazą danych. Menedżer odzyskiwania inicjuje odzyskiwanie z dzienników transakcji.
W przypadku trybu natychmiastowej aktualizacji menedżer odzyskiwania podejmuje następujące działania -
Transakcje znajdujące się na liście aktywnej i liście zakończonej niepowodzeniem są cofane i zapisywane na liście przerwanych.
Transakcje znajdujące się na liście przed zatwierdzeniem są ponownie wykonywane.
Żadne działanie nie jest podejmowane dla transakcji na listach zatwierdzania lub przerywania.
W przypadku odroczonej aktualizacji menedżer odzyskiwania podejmuje następujące działania -
Transakcje, które znajdują się na liście aktywnej i liście zakończonej niepowodzeniem, są zapisywane na liście przerwanych. Nie są wymagane żadne operacje cofania, ponieważ zmiany nie zostały jeszcze zapisane na dysku.
Transakcje znajdujące się na liście przed zatwierdzeniem są ponownie wykonywane.
Żadne działanie nie jest podejmowane dla transakcji na listach zatwierdzania lub przerywania.
Odzyskiwanie po awarii dysku
Awaria dysku lub twarda awaria powoduje całkowitą utratę bazy danych. Aby odzyskać dane po tej twardej awarii, przygotowywany jest nowy dysk, następnie przywracany jest system operacyjny, a na koniec odzyskiwana jest baza danych przy użyciu kopii zapasowej bazy danych i dziennika transakcji. Metoda odzyskiwania jest taka sama dla trybu aktualizacji natychmiastowej i odroczonej.
Menedżer odzyskiwania podejmuje następujące działania -
Transakcje na liście zatwierdzeń i liście przed zatwierdzeniem są ponownie wykonywane i zapisywane na liście zatwierdzeń w dzienniku transakcji.
Transakcje na liście aktywnej i liście zakończonej niepowodzeniem są cofane i zapisywane na liście przerwania w dzienniku transakcji.
Punkty kontrolne
Checkpointjest momentem, w którym rekord jest zapisywany w bazie danych z buforów. W konsekwencji, w przypadku awarii systemu, menedżer odzyskiwania nie musi powtarzać transakcji, które zostały zatwierdzone przed punktem kontrolnym. Okresowe sprawdzanie punktów kontrolnych skraca proces odzyskiwania.
Dwa rodzaje technik punktowania to:
- Spójne punkty kontrolne
- Rozmyte punkty kontrolne
Spójne punkty kontrolne
Spójne punkty kontrolne tworzą spójny obraz bazy danych w punkcie kontrolnym. Podczas odzyskiwania tylko te transakcje, które znajdują się po prawej stronie ostatniego punktu kontrolnego, są cofane lub ponownie wykonywane. Transakcje po lewej stronie ostatniego spójnego punktu kontrolnego są już zatwierdzone i nie muszą być ponownie przetwarzane. Działania podjęte w celu uzyskania punktów kontrolnych to -
- Aktywne transakcje są tymczasowo zawieszone.
- Wszystkie zmiany w buforach pamięci głównej są zapisywane na dysku.
- Rekord „punktu kontrolnego” jest zapisywany w dzienniku transakcji.
- Dziennik transakcji jest zapisywany na dysku.
- Zawieszone transakcje są wznawiane.
Jeśli w kroku 4 dziennik transakcji również zostanie zarchiwizowany, to punkt kontrolny pomaga w odzyskiwaniu po awariach dysków i awariach zasilania, w przeciwnym razie wspomaga odzyskiwanie tylko po awariach zasilania.
Rozmyte punkty kontrolne
W rozmytych punktach kontrolnych w momencie punktu kontrolnego wszystkie aktywne transakcje są zapisywane w dzienniku. W przypadku awarii zasilania menedżer odzyskiwania przetwarza tylko te transakcje, które były aktywne podczas punktu kontrolnego i później. Transakcje, które zostały zatwierdzone przed punktem kontrolnym, są zapisywane na dysku i dlatego nie muszą być ponownie wykonywane.
Przykład punktów kontrolnych
Weźmy pod uwagę, że w systemie czas sprawdzania punktów kontrolnych jest zaznaczony, a czas awarii systemu to błąd. Niech będą cztery transakcje T a , T b , T c i T d takie, że -
T popełnia przed checkpoint.
T b rozpoczyna się przed punktem kontrolnym i zatwierdza przed awarią systemu.
T c rozpoczyna się po punkcie kontrolnym i zatwierdza przed awarią systemu.
T d rozpoczyna się po punkcie kontrolnym i był aktywny w momencie awarii systemu.
Sytuację przedstawia poniższy diagram -
Działania podejmowane przez menedżera odzyskiwania to:
- Nic się nie dzieje z T a .
- Ponowienie transakcji jest wykonywane dla T b i T c .
- Cofnięcie transakcji jest wykonywane dla T d .
Odzyskiwanie transakcji przy użyciu Cofnij / Ponów
Odzyskiwanie transakcji ma na celu raczej wyeliminowanie niekorzystnych skutków wadliwych transakcji niż przywrócenie sprawności po awarii. Wadliwe transakcje obejmują wszystkie transakcje, które zmieniły bazę danych w niepożądany stan, oraz transakcje, w których zastosowano wartości zapisane przez błędne transakcje.
W takich przypadkach odzyskanie transakcji jest procesem dwuetapowym -
Cofnij wszystkie błędne transakcje i transakcje, na które mogą mieć wpływ błędne transakcje.
REDO wszystkie transakcje, które nie są błędne, ale zostały cofnięte z powodu wadliwych transakcji.
Kroki operacji COFNIJ to -
Jeśli wadliwa transakcja zakończyła INSERT, menedżer odzyskiwania usuwa wstawione elementy danych.
Jeśli wadliwa transakcja wykonała USUNIĘCIE, menedżer odzyskiwania wstawia usunięte elementy danych z dziennika.
Jeśli błędna transakcja wykonała UPDATE, menedżer odzyskiwania eliminuje tę wartość, zapisując w dzienniku wartość sprzed aktualizacji.
Kroki operacji REDO to -
Jeśli transakcja wykonała INSERT, menedżer odzyskiwania generuje wstawkę z dziennika.
Jeśli transakcja wykonała DELETE, menedżer odzyskiwania generuje usunięcie z dziennika.
Jeśli transakcja zakończyła AKTUALIZACJĘ, menedżer odzyskiwania generuje aktualizację z dziennika.