Systemfeil og logging

Like dokumenter
Systemfeil og logging

Systemfeil og logging

Systemfeil og logging

Systemfeil og logging

Systemfeil og logging

Systemfeil og logging

Transaksjonsmodell. Samtidighet (1) ACID-transaksjoner. Samtidighet (2) Systemkræsj (1) Kapittel 17, Coping With System Failure

DBS22 Databasegjenopprettingsteknikker

INF1300 Introduksjon til databaser

Transaksjonshåndtering Del 2

INF1300 Introduksjon til databaser

Øving 5: Transaksjonshåndtering, logging og normalisering

Transaksjonshåndtering Del 2

DBMS Database Management System (repetisjon) Programmeringsgrensesnitt. Serialiserbarhet

Transaksjonshåndtering Del 2

INF3100 V2018 Obligatorisk oppgave nr. 2

Relasjonsdatabasedesign

Transaksjoner. transaksjon. når starter/slutter 1 trans.?

Repetisjonsforelesning, SQL og utover

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Relasjonsdatabasedesign

DBS20 - Introduksjon til transaksjonsprosessering og teori

Relasjonsdatabasedesign

Parallelle og distribuerte databaser del I

Transaksjonshåndtering og samtidighetskontroll

INF1300 Introduksjon til databaser

Andre sett obligatoriske oppgaver i INF3100 V2013

Parallelle og distribuerte databaser Del I

Transaksjonshåndtering Del 3

Transaksjonshåndtering og samtidighetskontroll

INF3100 Databasesystemer. Transaksjonshåndtering. ndtering Del 3. Ragnar Normann

Relasjonsdatabasedesign. Ekstramateriale: Normalformer utover 4NF (ikke pensum)

Normalformer utover 4NF (ikke pensum)

Relasjonsdatabasedesign

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

Parallelle og distribuerte databaser

ndtering og samtidighetskontroll

Transaksjonshåndtering Del 3

Relasjonsdatabasedesign

INF5030. Håndtering av virksomhetskritiske data

UNIVERSITETET. Relasjonsdatabasedesign

Andre sett obligatoriske oppgaver iinf3100v2011

Effektiv eksekvering av spørsmål

INF1300 Introduksjon til databaser

Oppdateringsanomalier Normalformer

Dagens tema: Oppdateringsanomalier Normalformer

INF1300 Introduksjon til databaser

Transaksjonshåndtering Del 3

Relasjonsdatabasedesign

Generelt om operativsystemer

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Transaksjonshåndtering Del 3

Oppgaver INF3100. Oversikt over innholdet

Andre sett obligatoriske oppgaver i INF3100 V2012

Effektiv eksekvering av spørsmål

Minnehåndtering i operativsystemer

INF1300 Introduksjon til databaser

Hva har vi gjort? SQL og Databasedesign

Parallelle og distribuerte databaser

UNIVERSITETET I OSLO

Transaksjonshåndtering Del 3

Effektiv eksekvering av spørsmål

Oppgave 1 Datamodellering 25 %

Generelt om permanent lagring og filsystemer

Characteristics of a good design

Relasjonsdatabasedesign

Minnehåndtering i operativsystemer

Relasjonsdatabasedesign

INF3100 Databasesystemer

Transaksjonshåndtering og samtidighetskontroll

INF1300 Introduksjon til databaser

Integritetsregler i SQL

Apache Derby som MMDB

Transaksjonshåndtering Del 3

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Normalisering. ER-modell

Oppsummering av digitalteknikkdelen

Relasjonsdatabasedesign

Databaser fra et logikkperspektiv

UNIVERSITETET I OSLO. Relasjonsmodellen. Relasjoner og funksjonelle avhengigheter. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

EKSAMENSOPPGAVE I TDT4145 DATAMODELLERING OG DATABASESYSTEMER. Faglig kontakt under eksamen: Svein Erik Bratsberg og Roger Midtstraum

Relasjonsdatabasedesign (forts.)

Relasjonsdatabasedesign

INF212 - Databaseteori. Kursinnhold

INF3100 Databasesystemer

Oppgaver INF3100. Oversikt over innholdet

Samtidighetsfenomener og anomalier i eksekveringsplaner. INF Ellen Munthe-Kaas 1

Løsning til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Relasjonsdatabasedesign

Fakultet for informasjonsteknologi,

Fakultet for informasjonsteknologi, Løsning på kontinuasjonseksamen i TDT4190 Distribuerte systemer 19. august 2006,

Dagens tema: Relasjonsmodellen (funksjonelle avhengigheter og nøkler, integritetsregler) Realisering: Fra ORM til relasjoner

DDBS. Distribuerte databasesystemer

Transaksjoner og flerbrukerproblematikk. Transaksjoner

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Transkript:

UNIVERSITETET I OSLO Systemfeil og logging For en stor del basert på lysark laget av Hector Garcia-Molina Bearbeidet av Ragnar Normann INF3100 3.3.2008 Ragnar Normann Institutt for Informatikk 1

Korrekthet av data Vi ønsker at data alltid skal være riktige og nøyaktige Eksempel på tvilsomme data: Ansatt Navn Alder Hansen Lie Olsen 56 2489 1 INF3100 3.3.2008 Ragnar Normann 2

Integritets- eller konsistensregler Dette er predikater som data må tilfredsstille Eksempler X er nøkkel i relasjonen R X Y holder i R Domain(farge) = {R(ød),G(rønn),B(lå)} Ingen ansatt får tjene mer enn det dobbelte av gjennomsnittslønnen Definisjon av konsistens: Konsistent tilstand: Tilfredsstiller alle (statiske) integritetsregler Konsistent database: Databasen er i en konsistent tilstand INF3100 3.3.2008 Ragnar Normann 3

Avvik fra 100%-prinsippet I 100%-prinsippet sier at datamodellen kan brukes som databaseskjema Det betyr at alle skranker i modellen blir til integritetsregler i skjemaet I teorien er dette bra, men i praksis kan det av og til være hensiktsmesig å tillate avvik Det betyr at integritetsreglene (de vi håndhever i databasen) ikke alltid trenger å uttrykke den fulle sannhet om UoD Merk: Integritetsreglene kan aldri være strengere enn skrankene i datamodellen INF3100 3.3.2008 Ragnar Normann 4

Avvik fra 100%-prinsippet II To eksempler på tvilsomme skranker: Hver gang lønnen oppdateres, gjelder at ny lønn > gammel lønn Hver gang en konto-forekomst fjernes, gjelder at kontoens saldo = 0 Det siste eksemplet kan vi «fikse» med enkle midler som å legge til et boolsk attributt: Konto Kto# saldo fjernet? Uansett: Fortsett å bruke integritetsregler!!! INF3100 3.3.2008 Ragnar Normann 5

Midlertidig inkonsistens I Observasjon: Databaser kan ikke alltid være konsistente Eksempel: a 1 + a 2 + + a n = total (integritetsregel) Sett inn 1000 kroner på konto a 2 : a 2 a 2 + 1000 total total + 1000 Integritetsregelen er midlertidig brutt INF3100 3.3.2008 Ragnar Normann 6

Midlertidig inkonsistens II Eksempel: a 1 + a 2 + + a n = total (integritetsregel) Sett inn 1000 kroner på a 2 : a 2 a 2 + 1000 total total + 1000 a2 total : 500 : 10000 : 1500 : 10000 : 1500 : 11000 INF3100 3.3.2008 Ragnar Normann 7

Transaksjoner I En transaksjon er en samling aksjoner som bevarer konsistens Konsistent DB T Konsistent DB INF3100 3.3.2008 Ragnar Normann 8

Transaksjoner II En viktig antagelse Hvis T starter i en konsistent tilstand, og T eksekverer alene, så vil T avslutte med å etterlate databasen i en konsistent tilstand Korrekthet (uformelt): Hvis vi stopper å utføre transaksjoner, etterlater vi DB i en konsistent tilstand Alle transaksjoner opplever en konsistent DB INF3100 3.3.2008 Ragnar Normann 9

Årsaker til inkonsistens og brudd på integritetsreglene Feil i en transaksjon Feil i DBMS Hardware-feil F.eks.: Et diskkræsj endrer saldo på en konto Deling av data F.eks.: T1: Øk lønnen til alle med tittel «programmerer» med 4,5% T2: Forandre Tove Hansens tittel fra «programmerer» til «systemerer» INF3100 3.3.2008 Ragnar Normann 10

Viktige ting INF3100 ikke omfatter Hvordan å skrive/programmere feilfrie transaksjoner Hvordan å skrive/programmere et feilfritt DBMS Hvordan å kontrollere integritetsreglene i databaseskjemaet og rette opp brudd på dem Det siste betyr at de løsningene som vi gir på håndtering av feilsituasjoner, ikke trenger å ta hensyn til hvilke integritetsregler som er definert i databaseskjemaet INF3100 3.3.2008 Ragnar Normann 11

Gjenoppretting (Recovery) Første punkt på agendaen: En modell for beskrivelse av feil Del 1: Konfigurasjonsmodellen: CPU prosessor primærminne M D disk INF3100 3.3.2008 Ragnar Normann 12

Klassifikasjon av hendelser Hendelser Ønskede Uønskede Forventede Ønskede hendelser: Se produkthåndbøkene Forventede uønskede hendelser: Systemkræsj: tap av primærminnet CPUen stopper eller må resettes det er det hele! Uventede Uventede uønskede hendelser: Alt annet! INF3100 3.3.2008 Ragnar Normann 13

Uventede uønskede hendelser: Eksempler: Diskdata går tapt Alt annet! Primærminnet går tapt uten at CPUen stopper CPUen tar kontroll over alle datamaskiner hos Hafslund, setter opp spenningen og brenner av alle strømledninger i Oslo og Akershus Kapittel 1 i «The Hitch Hiker s Guide to the Galaxy» viser seg å ikke være Science Fiction likevel. INF3100 3.3.2008 Ragnar Normann 14

Et forslag til løsning Strategi: Eksempler: Adder lavnivå kontroller og redundans for å øke sannsynligheten for at modellen holder Replikert disk (stable store) Paritetssjekk av minnet CPU-sjekker INF3100 3.3.2008 Ragnar Normann 15

Andre punkt på agendaen Lagringshierarkiet: X X Primærminne Disk INF3100 3.3.2008 Ragnar Normann 16

Primitive operasjoner i Input(x): transaksjoner diskblokk med x primærminnet Read(x,v): utfør, om nødvendig, input(x) v verdien av x i blokken Write(x,v): utfør, om nødvendig, input(x) verdien av x i blokken v Output(x): minneblokk med x disk INF3100 3.3.2008 Ragnar Normann 17

En viktig antakelse I beskrivelsen av de primitive operasjonene har vi implisitt antatt at hvert dataelement ligger inne i én diskblokk/minneblokk Dette er opplagt riktig hvis dataelementet er en blokk Hvis et dataelement er fordelt på flere fysiske blokker, skal vi håndtere hver av disse blokkene som egne dataelementer Dermed antar vi at hvert dataelement alltid ligger inne i en enkelt blokk INF3100 3.3.2008 Ragnar Normann 18

Ufullførte transaksjoner I Dette er hovedproblemet i transaksjonshåndtering Eksempel: Integritetsregel: A = B T1: A A 2 B B 2 INF3100 3.3.2008 Ragnar Normann 19

Ufullførte transaksjoner II T1: Read(A,t); t t 2; Write(A,t); Read(B,t); t t 2; Write(B,t); Output(A); feil! Output(B); A: 8 B: 8 16 16 A: 8 B: 8 16 primærminne disk INF3100 3.3.2008 Ragnar Normann 20

Atomisitet Transaksjoner må være atomære Dette gir oss bare to muligheter: 1) Å utføre alle operasjonene i transaksjonen eller 2) Å ikke utføre noen av operasjonene i transaksjonen INF3100 3.3.2008 Ragnar Normann 21

Logging Logging er den viktigste teknikken et DBMS har for å rette opp forventede uønskede hendelser Logging består i å skrive alle endringer gjort i databasen til en egen loggfil, en fil som aldri skal ligge på samme fysiske disk som databasen Det er to hovedtyper logging, undo og redo Upresist kan disse beskrives slik: Undo-logging lar oss rette opp alt som har gått galt Redo-logging lar oss gjenopprette alt som har gått riktig INF3100 3.3.2008 Ragnar Normann 22

Undo-logging I T1: Read(A,t); t t 2; Invariant: A = B Write(A,t); Read(B,t); t t 2; Write(B,t); Output(A); Output(B); <T1,start> <T1,A,8> A:8 B:8 16 16 primærminne A:8 B:8 16 16 disk <T1,B,8> <T1,commit> logg INF3100 3.3.2008 Ragnar Normann 23

En kompliserende faktor: Undo-logging II Loggen skrives i primærminnet før den skrives til disk Loggen skrives ikke til disk for hver enkeltoperasjon primærminne Buffer: A: 8 16 B: 8 16 Logg: <T1,start> <T1,A,8> <T1,B,8> database logg A: 8 B: 8 16 ULOVLIG TILSTAND # 1 INF3100 3.3.2008 Ragnar Normann 24

En kompliserende faktor: Undo-logging III Loggen skrives i primærminnet før den skrives til disk Loggen skrives ikke til disk for hver enkeltoperasjon primærminne Buffer: A: 8 16 B: 8 16 Logg: <T1,start> <T1,A,8> <T1,B,8> <T1,commit> database logg A: 8 B: 8 <T1,B,8> <T1,commit> 16 ULOVLIG TILSTAND # 2 INF3100 3.3.2008 Ragnar Normann 25

Undo-logging IV Regler for undo-logging: 1) For hver skriveoperasjon write(x,v): Skriv en linje i loggen som inneholder den gamle verdien av X 2) Før X endres på disken, må alle logglinjer som gjelder X, være skrevet til disk Strategi: Skriv først til logg, så til disk 1) Før commit kan skrives i loggen, må alle skriveoperasjonene i transaksjonen være overført til disken Strategi: Alt må oppdateres før commit INF3100 3.3.2008 Ragnar Normann 26

Undo/redo-logging V I praksis må X alltid være en hel blokk i en Undo-logg Begrunnelse: Anta at A og B ligger i samme blokk og blir oppdatert av hver sin (samtidige) transaksjon, T A og T B, og at T A blir ferdig først Da må blokken skrives til disk før T A kan committe Men blokken kan ikke skrives før vi vet at T B har loggført alle sine endringer i blokken Følgelig må T A vente på T B INF3100 3.3.2008 Ragnar Normann 27

Undo-logging VI Algoritme for gjenoppretting : 1) Sett S = mengden av transaksjoner T i hvor <T i, start>, men hverken <T i, commit> eller <T i, abort> finnes i loggen 2) Les loggen i bakvendt orden (fra sist til først). For hver <T i, X, v> i loggen: Hvis T i S så write(x,v) output(x) 3) For hver T i S: Skriv <T i, abort> i loggen INF3100 3.3.2008 Ragnar Normann 28

Undo-logging VII Hva hvis det skjer en feil under gjenoppretting? Ikke noe problem! Undo er idempotent (Det betyr at å gjøre undo mange ganger gir samme resultat som å gjøre undo én gang) INF3100 3.3.2008 Ragnar Normann 29

Redo-logging I T1: Read(A,t); t t 2; Invariant: A = B Write(A,t); Read(B,t); t t 2; Write(B,t); Output(A); Output(B); A:8 B:8 16 16 primærminne output A:8 B:8 16 disk <T1, start> <T1,A,16> <T1,B,16> <T1,commit> logg INF3100 3.3.2008 Ragnar Normann 30

Redo-logging II Regler for redo-logging: 1) For hver skriveoperasjon write(x,v): Skriv en linje i loggen som inneholder den nye verdien av X 2) Flush loggen (dvs. skriv loggen til disk) ved commit 3) Før X endres på disken, må alle logglinjer som gjelder X (inklusiv commit), være skrevet til disk Strategi: Skriv ikke til disk før loggen er ferdigskrevet INF3100 3.3.2008 Ragnar Normann 31

Redo-logging III Algoritme for gjenoppretting : 1) Sett S = mengden av transaksjoner T i hvor <T i, commit> finnes i loggen 2) Les loggen forlengs (fra først til sist). For hver <T i, X, v> i loggen: Hvis T i S så write(x,v) output(x) ikke nødvendig Her trenger ikke X være en hel blokk INF3100 3.3.2008 Ragnar Normann 32

Redo-logging IV Med tiden blir gjenoppretting en TREG prosess Redo-logg:......... Første T1 skrev A,B Siste loggpost Committed for et år siden loggpost (1 år gammel) må likevel gjøre redo etter kræsj!! Kræsj INF3100 3.3.2008 Ragnar Normann 33

Redo-logging V Løsning: Sjekkpunkt (enkel versjon) Utfør regelmessig: 1) Stans start av nye transaksjoner 2) Vent til alle transaksjoner har avsluttet 3) Skriv alle loggposter til disk (flush loggen) 4) Skriv alle buffere til disk (DB) (behold dem fortsatt i primærminnet) 5) Skriv en sjekkpunkt-post til disk (i loggen) 6) Gjenoppta transaksjonsbehandlingen INF3100 3.3.2008 Ragnar Normann 34

Redo-logging VI Eksempel: Hva må gjøres ved gjenoppretting? Redo-logg (disk): <T1,A,16> <T1,commit> Checkpoint <T2,B,17> <T2,commit>.................. <T3,C,21> Kræsj INF3100 3.3.2008 Ragnar Normann 35

Undo- vs redo-logging Hovedproblemene med de to strategiene er: Undo-logging: Vi kan ikke holde en backup-db oppdatert til enhver tid Dataelementene må være en hel blokk Redo-logging: Vi må holde alle oppdaterte blokker i minnet helt til commit (og litt til) INF3100 3.3.2008 Ragnar Normann 36

Undo/redo-logging I Løsningen på problemet er undo/redo-logging: For alle skriveoperasjoner skriver vi i loggen: <T i, X, gammel X-verdi, ny X-verdi> INF3100 3.3.2008 Ragnar Normann 37

Undo/redo-logging II Regler for undo/redo-logging: 1) Ingen skriveoperasjon write(x,v) får utføres før transaksjonen vet at den ikke må abortere 2) For hver write(x,v): Skriv en linje (post) i loggen som inneholder både den gamle og den nye verdien av X 3) Skriv loggposten til disk før X oppdateres i DB 4) Flush loggen ved commit De eneste kravene som må oppfylles før X skrives til disk, er punkt 1 og 3 ovenfor X kan skrives til disk både før og etter at transaksjonen committer Dette gjør at X ikke trenger å være en hel blokk INF3100 3.3.2008 Ragnar Normann 38

Ikke-passiviserende sjekkpunkt I Sjekkpunkt som ikke hindrer start av nye transaksjoner: L O G G... Start-sjkpt aktive T-er: T 1,T 2,...... slutt sjkpt...... for undo alle endrede bufferblokker flushes Sjekkpunktet er slutt når alle endrede bufferblokker er skrevet til disk. Loggen flushes både ved start og stopp INF3100 3.3.2008 Ragnar Normann 39

Ikke-passiviserende sjekkpunkt II Eksempel: Hva gjøres ved gjenoppretting? L O G G... T 1 a... sjkpt T 1... sjkpt slutt... T 1 b... kræsj T 1 har ikke gjort commit Undo T1 (undo a,b) Husk:Undo tas bakfra frem til starten av eldste ikke-committede transaksjon INF3100 3.3.2008 Ragnar Normann 40

Ikke-passiviserende sjekkpunkt III Eksempel: Hva gjøres ved gjenoppretting? (forts.) L O G G... T 1 a... sjkpt-s... T 1 b... sjkptslutt... T 1... c T 1 T 1 cmt... kræsj T 1 har gjort commit Redo T1 (redo b,c) Husk: Redo tas forfra fra siste sjekkpunktstart INF3100 3.3.2008 Ragnar Normann 41

Undo/redo-gjenopprettingsprosessen Bakoverløp (fra loggslutt til siste start sjekkpunkt): bygg opp en mengde S av committede transaksjoner gjør Undo på alle operasjoner gjort av transaksjoner som ikke er i S Oppryddingsfase (foran siste start sjekkpunkt): gjør Undo på resten av operasjonene gjort av de transaksjonene i sjekkpunktets aktiv-liste som ikke er i S Fremoverløp (fra siste start sjekkpunkt til loggslutt): gjør Redo på operasjonene gjort av transaksjonene i S start sjekkpunkt bakoverløp fremoverløp INF3100 3.3.2008 Ragnar Normann 42

Fysiske hendelser Eksempel: Uttak av penger i en bankautomat T i = a 1 a 2 a k a n kontantuttak Løsning: 1) Utfør fysiske operasjoner etter commit 2) Prøv å gjøre fysiske operasjoner idempotente INF3100 3.3.2008 Ragnar Normann 43

Håndtering av fysiske feil I Eksempel: Diskkræsj eller lignende ødeleggelse av et permanent datalagringsmedium A: 17 Løsning: Lag kopier av data! INF3100 3.3.2008 Ragnar Normann 44

Håndtering av fysiske feil II Forslag 1: Fysisk trippel-lagring av alle data Ha tre kopier på hver sin disk Output(X) tre fysiske output(x) Input(X) tre fysiske input(x) + votering X1 X2 X3 INF3100 3.3.2008 Ragnar Normann 45

Håndtering av fysiske feil III Forslag 2: Redundant skriving, enkel lesning Ha N kopier på hver sin disk Output(X) N fysiske output(x) Input(X) en fysisk input(x) hvis OK, ferdig ellers, prøv en annen Strategien forutsetter at korrupte data kan oppdages INF3100 3.3.2008 Ragnar Normann 46

Håndtering av fysiske feil IV Forslag 3: Dump av DB + logg backupdatabase logg aktiv database Hvis den aktive databasen går tapt, så kopier backupdatabasen til en ny aktiv database bruk redo-dataene i loggen til å gjøre databasen up-to-date INF3100 3.3.2008 Ragnar Normann 47

Sletting av loggfilen logg db dump siste behov for undo sjekkpunkt trengs ikke for gjenoppretting av media tidsakse trengs ikke for undo etter systemfeil trengs ikke for redo etter systemfeil INF3100 3.3.2008 Ragnar Normann 48