Zagadnienia Typy awarii na jakie naraŝona jest baza ASA Opis mechanizmów automatycznego odzyskiwania danych po awariach systemu Utrata danych po awarii dysku Opis zabezpieczenia systemu przed awariami poszczególnych plików (plik bazy, dziennik transakcji, lustro dziennika) 8-1
Typy awarii MODULE MAP Ochrona przed awarią systemu Ochrona przed awarią dysku Sprawdzanie spójności baz Bekapy Odzyskiwanie bazy 8-2
Typy awarii System Zachodzi wtedy gdy komputer lub system operacyjny nagle ulega awarii w trakcie przetwarzania transakcji Wyłączenie prądu Awarie systemu operacyjnego Fluktuacje napięcia Baza staje się niedostępna ale nie jest uszkodzona Nie wymaga Ŝadnej interwencji System odzyskuje bazę automatycznie podczas startu Operacja odzyskiwania (recovery) moŝe trwać długo 8-3
Typy awarii Dyski Zdarza się, gdy system lub jego komponent powoduje uszkodzenie pliku bazy System plików ulega uszkodzeniu Fizyczny dysk ulega uszkodzeniu Plik ulega uszkodzeniu Plik bazy lub dziennika transakcji ulega uszkodzeniu 8-4
Typy awarii MODULE MAP Ochrona przed awarią systemu Ochrona przed awarią dysku Sprawdzanie spójności baz Bekapy Odzyskiwanie bazy 8-5
Ochrona przed awarią systemu Spójność bazy ASA jest zabezpieczona przez trzy dzienniki Dziennik transakcji (Transaction Log) Zapis wszystkich zmian w bazie w kolejności ich wykonywania na bazie Dziennik punktu kontrolnego (Checkpoint Log) Zawiera obrazy stron bazy sprzed modyfikacji dla modyfikacje które nastąpiły od ostatniego punktu kontrolnego (dirty pages) Dziennik wycofywania (Rollback Log) Zawiera przepis wycofania transakacji znajdujących się w toku 8-6
Osobny plik Dziennik transakcji Zapis wszystkich operacji insert, delete, update, commit, rollback i zmiany schematu bazy danych Najlepiej utworzyć na osobnym dysku sterowanym przez osobny kontroler Zapewnia wyŝsze bezpieczeństwo i odporność na awarie w przypadku awarii dysku 8-7
Dziennik punktu kontrolnego Znajduje się na końcu pliku bazy danych Strony dziennika punktów kontrolnych dodawane są stopniowo w trakcie sesji Strony dziennika punktu kontrolnego są zwalniane po punkcie kontrolnym Zanim serwer podmieni zawartości stron w bazie Odczytuje zawartość strony do bufora Tworzy kopię obrazu strony i zapisuje ją do dziennika punktu kontrolnego Modyfikuje zawartość strony w buforze Punkt kontrolny (checkpoint) Zrzuca wszystkie brudne strony z bufora na plik bazy 8-8
Punkt kontrolny następuje gdy Motor bazy jest zamykany Czas od ostatniego punktu kontrolnego > CHECKPOINT_TIME Szacowany czas potrzebny do operacji odzyskiwania > RECOVERY_TIME Motor bazy był bezczynny przez pewien dłuŝszy czas Wykonano polecenie CHECKPOINT Nastąpiło zakończenie transakcji na bazie uruchomionej bez dziennika transakcji 8-9
Jak działa dziennik punktu kontrolnego 8-10
Znajduje się w buforze Dziennik wycofywania W trakcie punktu kontrolnego, dzienniki wycofywania są zapisywane do pliku bazy Zawierają przepisy na wycofanie zmian dokonanych w ramach bieŝącej transakcji Jeden na aktywną transakcję Kasowany gdy transakcja zostaje zatwierdzona lub wycofana 8-11
Odzyskiwanie systemowe a dzienniki Po awarii systemu Serwer bazy automatycznie wykonuje następujące kroki 1. Odzyskaj do ostatniego punktu kontrolnego z pomocą istniejącego dziennika punktu kontrolnego 2. Nanieś zmiany od ostatniego punktu kontrolnego zapisane w dzienniku transakcji 3. Wycofaj zmiany wykonane we wszystkich niezatwierdzonych transakcjach korzystając z dzienników wycofywania (utworzonych w p.2) 8-12
Odzyskiwanie systemowe I. 02/10 22:35:34. Starting database "test" (C:\test.db) at Mon Feb 10 2003 22:35 I. 02/10 22:35:34. Database recovery in progress I. 02/10 22:35:34. Last checkpoint at Mon Feb 10 2003 22:30 I. 02/10 22:35:34. Checkpoint log... I. 02/10 22:35:35. Database file "C:\test.db" consists of 9 disk fragments I. 02/10 22:35:35. Note: The size of 'C:\test.db' is larger than expected I. 02/10 22:35:35. Transaction log: test.log... I. 02/10 22:35:35. Rollback log... I. 02/10 22:35:35. Checkpointing... I. 02/10 22:35:35. Starting checkpoint of "test" (test.db) at Mon Feb 10 2003 22:35 I. 02/10 22:35:35. Finished checkpoint of "test" (test.db) at Mon Feb 10 2003 22:35 I. 02/10 22:35:35. Recovery complete I. 02/10 22:35:35. Database "test" (test.db) started at Mon Feb 10 2003 22:35 8-13
Typy awarii MODULE MAP Ochrona przed awarią systemu Ochrona przed awarią dysków Sprawdzanie spójności baz Bekapy Odzyskiwanie bazy 8-14
Ochrona przed uszkodzeniem dysku Miejsca składowania danych Główne plik bazy danych (Włączając dbspace y ) Dziennik transakcji Lustro dziennika 8-15
MoŜliwe scenariusze utraty plików z danymi Scenariusz 1 Główny plik bazy zostaje uszkodzony Dziennik transakcji jest poprawny Nie ma lustra Utrata danych Niezamknięte transakcje X Poprawny dziennik transakcji gwarantuje, Ŝe zatwierdzone transakcje zostaną naniesione na plik bazy 8-16
MoŜliwe scenariusze utraty plików z danymi Scenariusz 2 Dziennik transakcji uszkodzony Główny plik bazy poprawny Nie ma lustra dziennika Utrata danych Buforowane dane nie zapisane jeszcze do bazy Wszelkie zmiany od ostatniego punktu kontrolnego Niezakończone jeszcze transakcje X 8-17
MoŜliwe scenariusze utraty plików z danymi Scenariusz 3 Lustro dziennika uszkodzone Główny plik bazy poprawny Dziennik transakcji poprawny Utrata danych Niezakończone jeszcze transakcje Jako Ŝe jest dostępna kopia dziennika pełne odzyskiwanie bazy moŝe zostać wykonane X 8-18
MoŜliwe scenariusze utraty plików z danymi Podstawowe strategie zabezpieczeń na wypadek awarii dysków Umieść dziennik transakcji na osobnym dysku na osobnym kontrolerze RozwaŜ umieszczenie lustra dziennika no jeszcze jednym dysku z osobnym kontrolerem Wykonuj regularne bekapy Posiadanie bekapu bazy oraz zestawu bekapów przyrostowych jest kluczowym elementem w sytuacjach awarii dysków 8-19
Typy awarii MODULE MAP Ochrona przed awarią systemu Ochrona przed awarią dysku Sprawdzanie spójności baz Bekapy Odzyskiwanie bazy 8-20
Walidacja baz WaŜny element administracji bazą Uszkodzenie moŝe być niewidoczne acz do momentu gdy serwer spróbuje odczytać uszkodzony fragment Walidacja bazy obejmuje sprawdzenie kaŝdego wiersza danych i kaŝdego indeksu Wymaga wyłącznego dostępu 8-21
Walidacja baz z uŝyciem Sybase Central Uruchom Sybase Central 1 Kliknij prawym przyciskiem nazwę bazy 2 Kliknij Validate 3 8-22
Walidacja baz z uŝyciem Sybase Central 4 Kliknij Next 8-23
Walidacja baz z uŝyciem Sybase Central 5 Kliknij Next 8-24
Walidacja baz z uŝyciem Sybase Central 7 Kliknij Finish Zaznacz zarówno walidacje danych jak i indeksów 6 8-25
Walidacja baz z uŝyciem Sybase Central Poprawna baza spowoduje wyświetlenie tego komunikatu 8-26
walidacja tabel z uŝyciem Sybase Central Start Sybase Central 1 Kliknij prawym przyciskiem na nazwie tabeli 3 Otwórz folder Tables 2 Kliknij Validate 4 8-27
Validating Tables with Sybase Central Poprawna tabela spowoduje wyświetlenie tego komunikatu 8-28
Typy awarii MODULE MAP Ochrona przed awarią systemu Ochrona przed awarią dysku Sprawdzanie spójności baz Bekapy Odzyskiwanie bazy 8-29
Bekapy Online vs Offline Bekap online Wykonywany bez zatrzymywania silnika bazy Wykonuje zdjęcie spójnego obrazu bazy Przydatny dla środowisk z wymaganiem wysokiej dostępności bazy Mogą być pełne i przyrostowe Bekap offline Wykonuje kopię plików bazy na dysk lub tasiemkę Wykonywany po zatrzymaniu silnika bazy Wygodny jeśli silnik bazy moŝe być bez problemu zatrzymany co jakiś czas UŜywany w połączeniu z bekapami przyrostowymi 8-30
Bekap online z uŝyciem Sybase Central Uruchom Sybase Central 1 Otwórz folder Utilities 2 Dwukliknij Create Backup Images 3 8-31
Bekap online z uŝyciem Sybase Central 4 Kliknij Next 8-32
Bekap online z uŝyciem Sybase Central 6 Kliknij Next Wybierz bazę którą chcesz zbekapować 5 8-33
Bekap online z uŝyciem Sybase Central Wpisz połoŝenie pliku z bekapem 7 9 Kliknij Next Wybierz jakie pliki chcesz zbekapować 8 8-34
Bekap online z uŝyciem Sybase Central Wybierz co chcesz zrobić z plikiem dziennika transakcji 10 11 Kliknij Finish 8-35
Pełny bekap Wykonuje kopie bazy i dziennika Najprostsza strategia bekapu UŜyteczna dla małych baz Niepraktyczna dla duŝych systemów i baz 8-36
Bekap przyrostowy UŜywa cyklicznego powtarzania następujących operacji Pełny bekap bazy i dziennika Następujące bekapy przyrostowe samego dziennika Cykl powinien być co pewien czas restartowany DłuŜsze cykle zwiększają ryzyko utraty danych spowodowanego uszkodzeniem pliku z bekapem WaŜną rzeczą jest przechowywanie bekapów dzienników na pewnych nośnikach UŜyteczny w przypadku duŝych baz 8-37
Zarządzanie dziennikiem transakcji Waliduj dziennik transakcji regularnie z uŝyciem Sybase Central Przetłumacz dziennik transakcji na skrypt SQL To się nie powiedzie jeśli dziennik jest uszkodzony 8-38
Walidacja dziennika z uŝyciem Sybase Central Uruchom Sybase Central 1 Otwórz folder Utilities 2 Dwukliknij Translate Log 3 8-39
Walidacja dziennika z uŝyciem Sybase Central 4 Kliknij Next 8-40
Walidacja dziennika z uŝyciem Sybase Central Wprowadź ścieŝkę dostępu do pliku dziennika 5 7 Kliknij Next Wprowadź ścieŝkę dostępu do pliku z wygenerowanym plikiem poleceń SQL 6 8-41
Walidacja dziennika z uŝyciem Sybase Central 9 Zaznacz poŝądane Kliknij Next opcje translacji 8 8-42
Walidacja dziennika z uŝyciem Sybase Central 10 Kliknij Next 8-43
Walidacja dziennika z uŝyciem Sybase Central 11 Kliknij Finish 8-44
Walidacja dziennika z uŝyciem Sybase Central Komunikaty generowane w trakcie translacji pojawią się w tym okienku 8-45
Kontrola rozmiaru pliku dziennika transakcji Kontroluj szybkość przyrostu dziennika, między innymi zapewniając by kaŝda tabela miała zdefiniowany klucz główny Uaktualnienia i usunięcia na tabelach nie posiadających klucza głównego powodują logowanie pełnych obrazów wierszy w dzienniku UNIQUE NOT NULL indeks moŝe zostać uŝyty w przypadku braku klucza głównego Dziennik transakcji powinien być co pewien czas bekapowany i kasowany 8-46
Opcje bekapowania dziennika transakcji 1. Kontynuuj uŝywanie tego samego dziennika transakcji Najprostszy bekap UŜywana gdy posiadamy masę wolnego miejsca na dysku 2. Usuń oryginalny dziennik i rozpocznij nowy UŜywana gdy miejsce na dysku jest problemem Dziennik jest ucinany Wymaga posiadania nieuszkodzonych wszystkich plików z bekapami przyrostowymi przy odtwarzaniu systemu 3. Zmień nazwę oryginalnego pliku UŜywane w systemach z replikacją Dziennik transakcji jest zapisywany pod zmieniona nazwą Startowany jest nowy, pusty dziennik 8-47
Strategia bekapu Zaprojektuj fizyczny schemat bekapu Pliki bazy, pliki dziennika, lustra na osobnych urządzeniach? MoŜe kaŝdy dysk powinien uŝywać osobnego kontrolera od innego dostawcy!? 8-48
Strategia bekapu Zaprojektuj procedury wykonywania bekapu Jak często powinno się wykonywać walidację bazy? Jak często powinno się wykonywać pełny bekap? Jak często powinno się wykonywać bekap przyrostowy? Jak często bekapy powinno się przewozić do innego budynku? (!) Jak często powinno się testować procedurę odtwarzania bekapu? 8-49
Typy awarii MODULE MAP Ochrona przed awarią systemu Ochrona przed awarią dysku Sprawdzanie spójności baz Bekapy Odzyskiwanie 8-50
Odzyskiwanie po awarii dysku Napraw/wymień uszkodzony dysk Napraw bazę Metoda zaleŝy od tego, czy utracono urządzenie z bazą czy z dziennikiem 8-51
Uszkodzenie dysku z bazą Jeden dziennik transakcji Dziennik nie był bekapowany od czasu ostatniego pełnego bekapu bazy Wiele dzienników transakcji Dziennik był bekapowany od czasu ostatniego pełnego bekapu bazy 8-52
Odzyskiwanie z jednym bekapem dziennika Utwórz kopię bieŝącego dziennika Odtwórz ostatni pełny bekap bazy Wystartuj silnik z opcją -a i nazwą dziennika by nanieść transakcje zapisane w dzienniku na bazę Wykonaj bekap odtworzonej bazy Uruchom silnik i bazę z nowym dziennikiem transakcji Przykład dbeng9 mydata.db -a mydata.log 8-53
Odzyskiwanie z kilkoma bekapami przyrostowymi Utwórz kopię bieŝącego dziennika transakcji Odtwórz ostatni pełny bekap bazy Nanoś transakcje z plików poprzez wystartowanie silnika z opcją -a i nazwami plików dziennika po kolei Wykonaj bekap odtworzonej bazy Uruchom silnik bazy z nowym dziennikiem transakcji Zamiast nanosić ostatni plik z dziennikiem zmień jego nazwę na aktualną nazwę dziennika i uruchom bazę po prostu 8-54
Odzyskiwanie przy wielu plikach z bekapami przyrostowymi Przykład dbeng9 sales.db -a d:\oldlogs\mon.log dbeng9 sales.db -a d:\oldlogs\tue.log dbeng9 sales.db -a d:\oldlogs\wed.log dbeng9 sales.db -a d:\backup\sales.log 8-55
Uszkodzenie dysku z dziennikiem Wysokie ryzyko utraty danych Awaria dysku z dziennikiem powoduje niechybnie utrate transakcji UŜywaj lustra dziennika na osobnym urządzeniu 8-56
Uszkodzenie dysku z dziennikiem Zrób kopię pliku z bazą Przenieś albo usuń uszkodzony dziennik Uruchom plik bazy z opcja -f ( no log ) Uruchamia bazę odtwarzając do ostatniego punktu kontrolnego Wycofuje wszystkie transakcje niezatwierdzone do punktu kontrolnego Uruchamia nowy dziennik transakcji Wykonaj bekap bazy Przestartuj serwer normalnie 8-57
Uszkodzenie dysku z lustrem dziennika transakcji Wykonaj kopię pliku bazy ( na wszelki wypadek ) Zidentyfikuj uszkodzony plik dziennika Uruchom Narzędzie translacji dziennika na obu Nieuszkodzony dziennik zostanie poprawnie przetłumaczony na ciąg poleceń SQL, uszkodzony powinien zgłosić błąd przy próbie konwersji Skopiuj nieuszkodzoną kopię dziennika na uszkodzoną Zrestartuj serwer normalnie 8-58
Podsumowanie Awaria systemu ma miejsce gdy komputer lub system operacyjny przerywa pracę a ASA znajduje się w trakcie przetwarzania transakcji Awaria dysków ma miejsce gdy plik lub liki bazy danych ulęgają fizycznemu uszkodzeniu Spójność bazy ASA jest zabezpieczona dziennikiem transakcji, dziennikiem punktu kontrolnego oraz dziennikami wycofywania W ASA dane przechowywane są fizycznie w trzech miejscach: główne pliki bazy, dziennik transakcji i opcjonalnie lustro dziennika 8-59
Podsumowanie Aby zabezpieczyć dane przed awarią dysków, wykonuj bekap bazy i dzienników regularnie, umieść plik dziennika na osobnym dysku i utwórz lustro dziennika Walidacja bazy jest waŝna jako Ŝe uszkodzenie moŝe nie ujawniać się długo, zanim serwer nie odczyta uszkodzonego fragmentu bazy Pełny bekap jest najprostsza metodą bekapu i jest wygodny w przypadku nieduŝych baz. Bekap przyrostowy jest znacznie bardziej efektywny i zalecany w przypadku duŝych baz. 8-60
Laboratorium 7-1 projektowanie strategii bekapu Zagadnienia: Zaprojektowanie strategii bekapu przy zadanych wymaganiach co do bezpieczeństwa Opis: Scenariusz 1: Główny plik bazy nigdy nie przekroczy 500 mb Nie ma plików dbspace Serwer ma dysk 40 gb na którym jest 50% miejsca wolnego Baza jest potrzebna jedynie w godzinach (9:00 17:00) Nie ma replikacji 8-61
Opis: Laboratorium 7-1 projektowanie strategii bekapu Scenariusz 2: Główny plik bazy ma 10 gb 2 pliki dbspace (kaŝdy po 20 gb) Serwer ma dwa dyski po 80 gb kaŝdy na pierwszym jest 10% wolnego miejsca, na drugim 20% wolnego miejsca Baza działa w trybie 23 x 7 (1 h okienka ) Nie ma replikacji 8-62
Laboratorium 7-2 Ćwiczenie z bekapów i odzyskiwania Zagadnienia: Wykonanie pełnego i przyrostowego bekapu a potem skasowanie oryginalnego pliku bazy i odtworzenie z bekapu Opis: Wykonaj pełny i przyrostowy bekap bazy newsales Usuń plik dbspace Odtwórz z uŝyciem wykonanej kopii 8-63
Pytania podsumowujące 1. Z jakich rodzajów ASA potrafi automatycznie odzyskać dane? 2. Opisz znaczenie kaŝdego z dzienników uŝywanych przez ASA: Dziennik transakcji, Dziennik punktu kontrolnego, Dziennik wycofywania. 3. Opisz jak odzyskać bazę po awarii systemu 4. Jaki scenariusz bekapu zaproponowałbyś dla duŝej bazy z wymaganiem wysokiej dostępności? 8-64