Ladda ner presentationen
Presentation laddar. Vänta.
1
DAV B04 - Databasteknik Återhämtning (kap 19)
2
Återhämtning (Recovery)
Innebär att man: återhämtar/återställer databasen till dess senast konsistenta tillstånd efter det att något fel (t ex en krasch) medfört att databasen hamnat i ett misstänkt inkonsistent tillstånd Typer av återhämtnig Transaktionsåterhämtning Systemåterhämtning Mediaåterhämtning
3
Fel som kan inträffa under transaktioner
Transaktionsfel t ex division med noll Exceptions t ex data för transaktion saknas, underskott Datorfel - hårdvaru-, mjukvaru-, nätverksfel Concurrency control visar att transaktionen ej kan utföras på ett korrekt sätt eller deadlock inträffar Diskfel read/write, headcrash Katastrof brand, fel tape
4
Repetition transaktioner
En transaktion är en mängd operationer, utförda i sekvens, som tillsammans bildar en logisk enhet. BEGIN TRANSACTION ; INSERT ( { S#: 'S5', P#: 'P1', QTY:1000 } ) INTO SP ; IF any error occurred THEN GO TO UNDO ; UPDATE P WHERE P# = 'P1' TOTQTY := TOTQTY ; COMMIT TRANSACTION ; GO TO FINISH ; UNDO : ROLLBACK TRANSACTION ; FINISH : RETURN ; En transaktion förflyttar databasen från ett konsistent tillstånd till ett annat konsistent tillstånd, men garanterar inte konsistens under tiden transaktionen utförs.
5
Systemloggen Alla transaktionsoperationer som påverkar värden på objekt i databasen loggas i en systemlogg Loggen ligger alltid på sekundärminne Innan en transaktion gör COMMIT: En commit point etableras. Vid denna säkerhetsställs att alla uppdateringar är loggade. Dessutom skrivs en commit record [commit, T] till loggen. Först därefter får uppdateringar till sekundärminnet göras (”Write ahead log rule”) När COMMIT har gjorts, garanterar systemet att alla uppdateringar är permanent lagrade Om ett fel inträffar efter COMMIT men innan transaktionens ändringar har skrivits till sekundärminne, måste transaktionen göras om (REDO) Om däremot ett fel inträffar innan en transaktion gjort COMMIT, görs alla uppdateringar ”ogjorda” (UNDO)
6
Caching Caching av disk-block
data som skall uppdateras cachas i primärminnet datan uppdateras i primärminnet. datan skrivs tillbaka till disken. Speciellt cachningsminne för DB (DBHS cache) Ibland måste data skrivas tillbaka till disk för att lämna plats för ny data
7
Strategier för återskrivning
In-place updating Skriver över ursprungsvärdet till samma diskutrymme (vanligast) OBS! det gamla värdet måste skrivas till loggen (som måste skriva det till disk) innan värdet uppdateras på disk The write-ahead log rule Shadowing Skriver en uppdaterad buffer till ett annat diskutrymme, vilket innebär att flera versioner av datan existerar. Gamla värdet – before image (BFIM) Nya värdet – after image (AFIM)
8
Strategier för återskrivning (2)
no-steal - cache-info som blivit uppdaterad av en transaktion kan inte skrivas till disken innan transaktionen gjort commit steal - uppdaterad information i buffern (cache-minnet) kan skrivas innan transaktionen gjort commit. force - all information som blivit uppdaterad av en transaktion skrivs omedelbart till disken så fort en transaktion gjort commit. no-force - uppdaterad information behöver inte skrivas till disk direkt efter att en transaktion gjort commit.
9
Checkpoints Med bestämda mellanrum gör systemet en avstämning, en checkpoint: Alla transaktioner stoppas temporärt Innehållet i databasbuffrar som har blivit modifierade skrivs till disk En checkpoint record skrivs till loggen och loggen skrivs till disk alla transaktioner startas igen
10
Systemåterhämtning Två huvudsakliga tekniker används:
Uppskjuten uppdatering/ deferred update Skjuter upp eventuella uppdateringar till databasen tills dess att transaktionen avslutat sin exekvering och gjort commit (no-steal) Omedelbar uppdateing/ immediate update Uppdateringar kan skrivas till databasen innan transaktionen gjort commit (”omedelbart”) (steal)
11
Strategi för uppskjuten uppdatering
En transaktion kan inte ändra databasens innehåll förrän den gjort commit En transaktion kan inte göra commit förrän alla dess uppdateringsoperationer har blivit inskrivna i loggen och loggen har blivit skriven till disken NO-UNDO/REDO recovery algorithm
12
Uppskjuten uppdatering i ett fleranvändarsystem
Återhämtningsprocedur Systemet använder sig av två listor, commit list och active list. commit list: här finns alla transaktioner som har gjort commit sen senaste checkpointen active list: här finns alla aktiva transaktioner (dvs de som inte hade gjort commit när systemet kraschade) Gör om (redo) alla uppdateringsoperationer som transaktioner på commit-listan gjort, i den ordning som de är skrivna i loggen Transaktioner på active list måste startas om vid ett senare tillfälle
13
Återhämtning Uppskjuten uppdatering i ett fleranvändarsystem (fig. 19.3)
14
Omedelbar uppdatering
När en transaktion gör en uppdateringsoperation uppdateras databasen omedelbart. uppdateringsoperationen måste dock skrivas till loggen innan uppdateringen så att återhämtning kan ske UNDO/NO-REDO Algorithm alla uppdateringar skrivs till DB innan transaktionen gjort commit UNDO/REDO Algorithm transaktioner får göra commit innan alla dess uppdateringar skrivits till DB
15
Omedelbar uppdatering i ett fleranvändarsystem
Återhämtningsprocedur Systemet använder sig av två listor, commit list och active list. Spola tillbaka (undo) alla uppdateringsoperationer som transaktioner på active list gjort, i omvänd ordning som de är skrivna i loggen Gör om (redo) alla uppdateringsoperationer som transaktioner på commit-listan gjort, i den ordning som de är skrivna i loggen Transaktioner på active list måste startas om vid ett senare tillfälle
16
Mediaåterhämtning Med ett mediafel menas att någon del av databasen har blivit fysiskt skadad Vid sådana fel måste en tidigare backup-kopia av databasen laddas in Efter det måste transaktioner som gjort COMMIT sedan kopian togs göras om (med hjälp av loggen)
17
Shadowing pages NO-UNDO/NO-REDO recovery algorithm
alla uppdateringar görs hela tiden i en ny katalog och den gamla versionen sparas i en s.k. skuggkatalog vid fel byter man helt enkelt tillbaka till den gamla katalogen
18
Illustrering av Shadowing pages
19
Återhämtning i ett system med flera databaser
Two-phase commit används om en given transaktion involverar flera "resurshanterare" t ex i ett distribuerat databassystem Om en transaktion uppdaterar två olika databaser, får det inte hända att uppdateringar görs i den ena databasen men inte i den andra
20
Återhämtning i ett system med flera databaser
En komponent i systemet, koordinatorn, har som uppgift att garantera att båda databaserna utför samma operation (båda gör COMMIT eller båda gör ROLLBACK), även om systemet kraschar mitt i processen. Om koordinatorn bestämmer att operationen skall vara COMMIT gås två faser igenom...
21
Strategi för återhämtning i ett system med flera databaser
Fas 1 koordinatorn instruerar alla resurshanterare att göra sig klara för att avsluta transaktionen det betyder att alla deltagare i processen måste skriva all information de har om transaktionen till loggen om detta gick bra, svarar resurshanteraren "OK", annars "not OK" till koordinatorn.
22
Strategi för återhämtning i ett system med flera databaser
Fas 2 när koordinatorn har fått svar från alla deltagare, skriver den sitt beslut till sin egen logg om alla svar var "OK" blir beslutet "commit”, annars blir det "rollback” koordinatorn informerar sedan alla deltagare om sitt beslut, vilket de alla måste rätta sig efter
23
Återhämtning i ett system med flera databaser
Om systemet kraschar mitt i processen, letar omstartproceduren efter koordinatorns beslut i loggen. Om den hittar det, kan processen fortsätta där den slutade. Om inte, så antas beslutet ha varit "rollback".
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.