Riferimenti Basi di Dati Complementi Parte 2: Tecnologie per DBMS Parte 2.5: Recovery Manager Trasparenze parte Recovery manager Basi di Dati Atzeni et al. - Capitolo 2.1, 2.2 Anche: Garcia Molina, Ullman, Widom, Database Systems the complete book, Prentice Hall, 2002 Buffer Management Recovery Management @ C. Batini 2006 2 Data Base Recovery Recovery manager Gestore della affidabilità Il recovery manager e responsabile di Garantire Atomicita Garantire Persistenza Realizzare i comandi transazionali fondamentali: Begin transaction, end transaction, commit work, rollback work Obiettivo del recovery manager e quindi di: Gestire il rollback di una transazione Ricostruire uno stato consistente del DB e che rispetti la semantica della transazioni, in seguito a un guasto del DBMS Buffer Management Recovery Management @ C. Batini 2006 3 Buffer Management Recovery Management @ C. Batini 2006 4 Architettura del controllore dell'affidabilità Gestore dei metodi d accesso fix, unfix begin, commit, abort Gestore della affidabilità fix, unfix, force, (sulle pagine BD e sul log) e e Redo sulle pagine DB Gestore del buffer read, write Gestore della memoria secondaria BD Log Gestore delle transazioni Buffer Management Recovery Management @ C. Batini 2006 5 Organizzazione del materiale 1. Tipi di guasti e politica generale di ripristino 2. Informazioni che il recovery manager deve avere a disposizione per operare Log Dump Checkpoint 3. Operazioni che utilizzano queste informazioni e che sono a disposizione del recovery manager e Redo 4. Politiche operative, cioe diverse modalita possibili per l aggiornamento delle informazioni di sistema (log) e della BaseDati da parte del recovery manager 5. Strategie per il recovery Ripresa a caldo Ripresa a freddo Buffer Management Recovery Management @ C. Batini 2006 6 1
Organizzazione del materiale - 1 1. Tipi di guasti e politica generale di ripristino 2. Informazioni che il recovery manager deve avere a disposizione per operare Log Dump Checkpoint 3. Operazioni che utilizzano queste informazioni e che sono a disposizione del recovery manager Redo 4. Politiche per l aggiornamento delle informazioni di sistema (log) e della BD da parte del recovery manager 5. Strategie per il recovery Ripresa a caldo Ripresa a freddo 1. Tipi di guasti e politica generale di ripristino Buffer Management Recovery Management @ C. Batini 2006 7 Buffer Management Recovery Management @ C. Batini 2006 8 Concetto di Memoria stabile Memoria resistente ai guasti E un astrazione, benche tecniche di replicazione su dispositivi fisici multipli possano portare la probabilita di perdita di dati vicina allo zero L organizzazione fisica puo differire a seconda della criticita delle applicazioni: Unita nastro Devices di tipo diverso accoppiati (es un nastro e un disco) Due unita disco replicate protocolli RAID, Redundant Array of Inexpensive Disks Buffer Management Recovery Management @ C. Batini 2006 9 Tipi di guasti e cause di rollback - 1 Guasti di sistema System crash, errore hw/sw o di rete (es. Calo tensione): Errore di sistema o applicativo (della transazione) Esempio: divisione per zero Condizioni logiche locali durante l esecuzione di una transazione (es. assenza di un dato) Gestione della concorrenza Lo scheduler puo forzare il rollback e restart di una transazione Perdita del contenuto del buffer, memoria di massa rimane valida Buffer Management Recovery Management @ C. Batini 2006 10 Tipi di guasti e cause di rollback - 2 Guasti di dispositivo di memorizzazione Guasto di disco Problemi catastrofici Incendio Alluvione Attentato Perdita fisica di dati su memoria di massa ma non del log (che e su memoria stabile) Le strategie da adottare dipendono dal tipo di guasto Guasti di sistema: Perdita del buffer, stato persistente intatto Problema principale Atomicita Strategia di recovery: Ricordare le operazioni effettuate (log) Fare periodicamente la fotografia della situazione (checkpoint) All atto del guasto, tramite il log, ripercorrere all indietro la storia dei cambiamenti di stato del DB E necessario disfare (undo) alcune operazioni, ripeterne altre (redo) (vedi oltre per dettagli) Buffer Management Recovery Management @ C. Batini 2006 11 Buffer Management Recovery Management @ C. Batini 2006 12 2
Le strategie da adottare dipendono dal tipo di guasto Guasti di dispositivo: Perdita dello stato persistente (perdita dei dischi) Problema principale Persistenza Strategia di recovery: Memorizzare periodicamente su memoria stabile lo stato della BD () Caricare il piu recente stato disponibile del DB Ricostruire lo stato attuale a partire dal utilizzando il log Politica generale di ripristino: il modello fail-stop Normal Restart completed Fail Fail Restart Stop Boot Buffer Management Recovery Management @ C. Batini 2006 13 Buffer Management Recovery Management @ C. Batini 2006 14 Organizzazione del materiale - 2 1. Tipi di guasti e politica generale di ripristino 2. Informazioni che il recovery manager deve avere a disposizione per operare Log Dump Checkpoint 3. Operazioni che utilizzano queste informazioni e che sono a disposizione del recovery manager Redo 4. Politiche per l aggiornamento delle informazioni di sistema (log) e della BD da parte del recovery manager 5. Strategie per il recovery Ripresa a caldo Ripresa a freddo 2. Informazioni disponibili al recovery manager 2.1. Il log di sistema 2.2. Checkpoint 2.3. Dump Buffer Management Recovery Management @ C. Batini 2006 15 Buffer Management Recovery Management @ C. Batini 2006 16 2.1 Organizzazione del system log Il log e un file sequenziale che si assume scritto su memoria stabile, per la quale cioe non vi possono essere guasti Registra le attivita svolte da ciascuna transazione, in ordine cronologico Nel log compaiono due tipi di record: Record di transazione Informazioni sulle operazioni effettuate dalle transazioni Record di sistema Evento di Checkpoint Evento di Dump Record di transazione: ci interessano le operazioni di modifica La struttura dipende dal tipo di operazione Legenda O=oggetto, AS = After (dopo) State, BS = Before (prima) State Struttura per le varie operazioni begin, B(T) insert, I(T,O, AS) delete, D(T,O,BS) update, U(T,O,BS,AS) commit, C(T), o abort, A(T) Buffer Management Recovery Management @ C. Batini 2006 17 Buffer Management Recovery Management @ C. Batini 2006 18 3
Esempio di log 2.2 Checkpoint C() U(, ) Lo scopo del checkpoint e quello di ricordare l insieme delle transazioni attive (al momento del checkpoint),, Tn distinguendole da quelle completate/committed Buffer Management Recovery Management @ C. Batini 2006 19 Buffer Management Recovery Management @ C. Batini 2006 20 Attiva/ uncommitted Completata/ committed Deve ancora iniziare Esempiodi statodelletransazioni al momento del checkpoint C() U(, ) Checkpoint - 1 La primitiva di checkpoint () esegue due operazioni Per ogni transazione che ha eseguito un commit (committed nel seguito) al momento del checkpoint, copia le pagine di buffer su disco Successivamente scrive nel log un record (, Tn) contenente gli IDentificatori delle transazioni, Tn attive (cioe che non hanno eseguito un commit, uncommitted nel seguito) all atto della esecuzione del checkpoint Buffer Management Recovery Management @ C. Batini 2006 21 Buffer Management Recovery Management @ C. Batini 2006 22 Attiva/ Uncommitted Scrive su log l identificatore Completata/ Committed Copia su disco Deve ancora Iniziare niente Esempiodi statodelletransazioni al momento del checkpoint C() U(, ) (t 1 ) Buffer Management Recovery Management @ C. Batini 2006 23 Checkpoint - 2 Conseguenza: Per tutte le transazioni T per cui Commit(T) precede (, Tn), non e necessario fare niente (rieseguire) in caso di guasto Il checkpoint viene eseguito periodicamente, e registrato nel log Buffer Management Recovery Management @ C. Batini 2006 24 4
Percio la sequenza di checkpoint e.. 1. Sospende l esecuzione delle transazioni 2. Scrive su disco le pagine del buffer delle transazioni che hanno fatto il commit 3. Successivamente, scrive il record (, Tn) sul log in modo sincrono (force) 4. Riprende l esecuzione delle transazioni Deve essere sicuro che sia completato il trasferimento Per garantire la persistenza Esempio di log con checkpoint C() U(, ) Buffer Management Recovery Management @ C. Batini 2006 25 Buffer Management Recovery Management @ C. Batini 2006 26 2.3 Dump Un e una copia dell intero stato del DB su memoria stabile Eseguita offline (nessuna transazione attiva, serve una fotografia ) Produce un backup, cioe salvataggio su memoria stabile Scrive (force) un record di nel log, che segnala che in quell istante e stata fatta una copia della BD Esempio di log con checkpoint e C() U(, ) Buffer Management Recovery Management @ C. Batini 2006 27 Buffer Management Recovery Management @ C. Batini 2006 28 Record di end Alcuni sistemi registrano nel log per ogni transazione anche il record di end, che attesta che le operazioni di flush relative alla transazione sono terminate. Record di end In presenza del record di end, e possibile individuare una ulteriore classe di transazioni per le quali non e necessario effettuare nessuna azione, ne di undo ne di redo. C() U(, ) C() U(, ) END() END() Buffer Management Recovery Management @ C. Batini 2006 29 Buffer Management Recovery Management @ C. Batini 2006 30 5
Record di end In genere il record di end non e previsto, e noi faremo nel seguito questa assunzione. C() END() U(, ) Organizzazione del materiale - 3 1. Tipi di guasti e politica generale di ripristino 2. Informazioni che il recovery manager deve avere a disposizione per operare Log Dump Checkpoint 3. Operazioni che utilizzano queste informazioni e che sono a disposizione del recovery manager Redo 4. Politiche per l aggiornamento delle informazioni di sistema (log) e della BD da parte del recovery manager 5. Strategie per il recovery Ripresa a caldo Ripresa a freddo Buffer Management Recovery Management @ C. Batini 2006 31 Buffer Management Recovery Management @ C. Batini 2006 32 Esempiodi statodelletransazioni al momento del crash Operazioni che utilizzano il log e Redo C() U(, ) Buffer Management Recovery Management @ C. Batini 2006 33 Buffer Management Recovery Management @ C. Batini 2006 34 Atomicita e persistenza delle transazioni Per le transazioni che al momento di un guasto sono: Committed (la transazione si e impegnata a eseguire tutte le proprie azioni) e necessario rifare le azioni, per garantire la persistenza Redo Uncommitted e necessario disfare le azioni, perchè non e noto quali azioni siano state effettuate, ma deve essere garantita la atomicita Buffer Management Recovery Management @ C. Batini 2006 35 Ripristina lo stato di un dato O al tempo precedente l esecuzione di una operazione Ripercorre il log all indietro, assegnando il valore BS before state ad ogni dato incontrato nel log update,delete: assegna il valore BS ad O insert: cancella O Buffer Management Recovery Management @ C. Batini 2006 36 6
Redo Ripristina lo stato di un dato O al tempo successivo l esecuzione di una operazione Ripercorre il log in avanti, assegnando il valore AS ( after state ) ad ogni dato incontrato nel log insert,update:assegna il valore AS ad O delete: cancella O Idempotenza di e Redo Durante il ripristino, possono verificarsi errori Puo essere necessario eseguire ripetutamente le azioni associate a e Redo Valgono le proprieta di idempotenza: ((A)) = (A) Redo (Redo(A)) = Redo(A) Buffer Management Recovery Management @ C. Batini 2006 37 Buffer Management Recovery Management @ C. Batini 2006 38 Organizzazione del materiale - 4 1. Tipi di guasti e politica generale di ripristino 2. Informazioni che il recovery manager deve avere a disposizione per operare Log Dump Checkpoint 3. Operazioni che utilizzano queste informazioni e che sono a disposizione del recovery manager Redo 4. Politiche per l aggiornamento delle informazioni di sistema (log) e della BD da parte del recovery manager 5. Strategie per il recovery Ripresa a caldo Ripresa a freddo Politiche per l aggiornamento del log e della BD da parte del recovery manager Buffer Management Recovery Management @ C. Batini 2006 39 Buffer Management Recovery Management @ C. Batini 2006 40 Tre tipi di eventi vanno sequenziati con opportune politiche 1. Scrittura dei record di transazione del log su memoria stabile 2. Scrittura dei record dati su disco 3. Esecuzione della istruzione di commit e memorizzazione nel log In che ordine, per garantire la possibilita di usare consistentemente undo e redo? 2. Record dati su disco Log 3. Commit 1 Memoria Stabile 1. Record di log con i Record transazione su memoria stabile 3. Esecuzione Commit e memoriz. nel log Dati Buffer Memoria principale 2 Memoria secondaria Buffer Management Recovery Management @ C. Batini 2006 41 Buffer Management Recovery Management @ C. Batini 2006 42 7
Caso record di log su memoria stabile vs record dati su disco: regole Caso record di log su memoria stabile vs record dati su disco: regole Record di log con i Record transazione su memoria stabile Record dati su disco Esecuzione Commit e memoriz. nel log Il recovery manager rispetta la regola: 1.WAL (write-ahead log) I record di log, per la parte BeforeState, vengono scritti su memoria stabile prima dei corrispondenti record dati su disco Questo rende consistente la procedura di (un valore puo sempre essere riscritto su memoria di massa con il BS scritto nel log) Buffer Management Recovery Management @ C. Batini 2006 43 Buffer Management Recovery Management @ C. Batini 2006 44 Caso record di log su memoria stabile vs esecuzione del commit e mem. nel log Record di log con i Record transazione su memoria stabile Record dati su disco Esecuzione Commit e memoriz. nel log Buffer Management Recovery Management @ C. Batini 2006 45 Caso record di log su memoria stabile vs esecuzione del commit e mem. nel log Il recovery manager rispetta sempre la regola: 2.Commit-Precedence I record di log, per la parte AfterState, vengono scritti su memoria stabile prima di effettuare il commit della transazione Questo rende consistente il Redo (se una transazione e committed al momento di un guasto, ma le sue pagine non sono ancora state scritte su memoria di massa, possiamo usarei valoreas chetrovonellog) Buffer Management Recovery Management @ C. Batini 2006 46 Caso record dati su disco vs esecuzione del commit e mem. nel log Caso record dati su disco vs esecuzione del commit e mem. nel log Record di log con i Record transazione su memoria stabile Record dati su disco Esecuzione Commit e memoriz. nel log Per ciascuna delle tre tipologie di operazioni su DB Update Insert Delete il recovery manager deve seguire delle politiche di esecuzione per la scrittura su disco Lo faremo per la update Buffer Management Recovery Management @ C. Batini 2006 47 Buffer Management Recovery Management @ C. Batini 2006 48 8
Caso dei record dati su disco e esecuzione del commit e mem. nel log - strategie - 1 Tre strategie di scrittura dei valori nella BD N.B. Tutte consistenti con le regole WAL e commitprecedence 1. Aggiornamento immediato - Le updates vengono scritte su disco immediatamente I record di log vengono comunque scritti prima dei dati corrispondenti (regola WAL) Il buffer manager si impegna (con force o flush) a scrivere prima del commit su disco In questo modo tutte le pagine della BD modificate dalla transazione sono certamente scritte su memoria di massa Buffer Management Recovery Management @ C. Batini 2006 49 Caso dei record dati su disco e esecuzione del commit e mem. nel log - strategie - 1 2. Aggiornamento differito Le updates vengono scritte su disco solo dopo il commit della transazione e la scrittura del record di commit nel log I record di log vengono comunque scritti prima dei dati corrispondenti (regola WAL) 3. Aggiornamento misto Entrambe le politiche, in funzione della efficienza Buffer Management Recovery Management @ C. Batini 2006 50 Esempi delle tre politiche Immediata Differita Vediamo ora per le tre politiche quali tra le operazioni REDO e UNDO devono essere effettuate per garantire la Atomicita Mista Buffer Management Recovery Management @ C. Batini 2006 51 Buffer Management Recovery Management @ C. Batini 2006 52 Modalita immediata Il DB contiene valori AS provenienti da transazioni uncommitted Richiede delle operazioni di transazioni uncommitted al momento del guasto Non richiede Redo Modalita differita Il DB non contiene valori AS provenienti da transazioni uncommitted In caso di abort, non occorre fare nulla Rende superflua la procedura di Richiede Redo T4 T4 Redo Redo Buffer Management Recovery Management @ C. Batini 2006 53 Buffer Management Recovery Management @ C. Batini 2006 54 9
Modalità mista La scrittura puo avvenire in modalita sia immediata che differita Consente l ottimizzazione delle operazioni di flush Richiede sia che Redo Nel seguito tratteremo questa politica T4 Redo Redo Organizzazione del materiale - 5 1. Tipi di guasti e politica generale di ripristino 2. Informazioni che il recovery manager deve avere a disposizione per operare Log Dump Checkpoint 3. Operazioni che utilizzano queste informazioni e che sono a disposizione del recovery manager Redo 4. Politiche per l aggiornamento delle informazioni di sistema (log) e della BD da parte del recovery manager 5. Strategie per il recovery Ripresa a caldo Ripresa a freddo Buffer Management Recovery Management @ C. Batini 2006 55 Buffer Management Recovery Management @ C. Batini 2006 56 Scopo delle strategie Strategie per il recovery Garantire atomicita e persistenza (durability) Atomicita le transazioni in corso all atto del guasto lasciano il DB nello stato iniziale o nello stato finale Persistenza Le pagine completate nel buffer ma non ancora trasferite su disco devono essere trasferite permanentemente su disco Buffer Management Recovery Management @ C. Batini 2006 57 Buffer Management Recovery Management @ C. Batini 2006 58 Due modalita Caso di guasto di sistema Perdita del contenuto del buffer: Warm restart o Ripresa a caldo Guasto di dispositivo Perdita della memoria di massa: Cold restart o Ripresa a freddo Ambito del warm restart o del cold restart C() Warm restart U(, ) Cold restart Buffer Management Recovery Management @ C. Batini 2006 59 Buffer Management Recovery Management @ C. Batini 2006 60 10
Warm restart (ripresa a caldo) Assumiamo una modalita mista Quattro fasi: 1. Ricerca dell ultimo checkpoint nel log, per sapere in quel momento quali erano le transazioni in corso di esecuzione 2. Costruzione degli insiemi e Redo (politica mista) Partendo dall ultimo checkpoint contiene le transazioni uncommitted Redo contiene le transazioni committed 3. Fase Ripercorre il log all indietro disfacendo le transazioni nel set 4. Fase Redo Ripercorre il log in avanti rifacendo le transazioni nel Esempio di warm restart U(, O1, B1, A1) C U(,O2,B3,A3) U(T4,O3,B4,A4) A C(T4) T4 B() C U(,O3,B5,A5) U(,O4,B6,A6) D(,O5,B7) C() I(t2,O6,A8) set Redo Buffer Management Recovery Management @ C. Batini 2006 62 Buffer Management Recovery Management @ C. Batini 2006 61 1. Ricerca dell ultimo checkpoint 2. Costruzione degli insiemi UNDO e REDO U(, O1, B1, A1) U(,O2,B3,A3) U(T4,O3,B4,A4) C(T4) B() U(,O3,B5,A5) U(,O4,B6,A6) D(,O5,B7) C() I(t2,O6,A8) T4 REDO = { } UNDO = {,,T4} C A C Buffer Management Recovery Management @ C. Batini 2006 63 Buffer Management Recovery Management @ C. Batini 2006 64 2. Costruzione degli insiemi UNDO e REDO 2. Costruzione degli insiemi UNDO e REDO UNDO = {, }. REDO = {T4} Buffer Management Recovery Management @ C. Batini 2006 65 UNDO = {, }. REDO = {T4} UNDO = {,,}. REDO = {T4} Buffer Management Recovery Management @ C. Batini 2006 66 11
2. Costruzione degli insiemi UNDO e REDO UNDO = {, }. REDO = {T4} UNDO = {,,}. REDO = {T4} UNDO = {,}. REDO = {T4, } Buffer Management Recovery Management @ C. Batini 2006 67 3. Fase UNDO: per tutte le transazioni in UNDO, e per tutti i loro comandi elementari UNDO = {, }. REDO = {T4} UNDO = {,,}. REDO = {T4} UNDO = {,}. REDO = {T4, }, Buffer Management Recovery Management @ C. Batini 2006 68 3. Fase UNDO: per tutte le transazioni in UNDO, e per tutti i loro comandi elementari UNDO = {, }. REDO = {T4} UNDO = {,,}. REDO = {T4} UNDO = {,}. REDO = {T4, }, Buffer Management Recovery Management @ C. Batini 2006 69 3. Fase UNDO: per tutte le transazioni in UNDO, e per tutti i loro comandi elementari UNDO = {, }. REDO = {T4} UNDO = {,,}. REDO = {T4} UNDO = {,}. REDO = {T4, }, Buffer Management Recovery Management @ C. Batini 2006 70 3. Fase UNDO: per tutte le transazioni in UNDO, e per tutti i loro comandi elementari UNDO = {, }. REDO = {T4} UNDO = {,,}. REDO = {T4} UNDO = {,}. REDO = {T4, } 6. O3 = B5, Buffer Management Recovery Management @ C. Batini 2006 71 3. Fase UNDO: per tutte le transazioni in UNDO, e per tutti i loro comandi elementari UNDO = {, }. REDO = {T4} UNDO = {,,}. REDO = {T4} UNDO = {,}. REDO = {T4, } 6. O3 = B5 7. O2 =B3, Buffer Management Recovery Management @ C. Batini 2006 72 12
3. Fase UNDO: per tutte le transazioni in UNDO, e per tutti i loro comandi elementari UNDO = {, }. REDO = {T4} UNDO = {,,}. REDO = {T4} UNDO = {,}. REDO = {T4, } 6. O3 = B5 7. O2 =B3 8. O1=B1, Buffer Management Recovery Management @ C. Batini 2006 73 4. Fase REDO UNDO = {, }. REDO = {T4} UNDO = {,,}. REDO = {T4} UNDO = {,}. REDO = {T4, } 6. O3 = B5 7. O2 =B3 8. O1=B1 Redo T4, Buffer Management Recovery Management @ C. Batini 2006 74 4. Fase REDO 4. Fase REDO UNDO = {, }. REDO = {T4} UNDO = {,,}. REDO = {T4} UNDO = {,}. REDO = {T4, } 6. O3 = B5 7. O2 =B3 8. O1=B1 9. O3 = A4 Redo T4, Buffer Management Recovery Management @ C. Batini 2006 75 UNDO = {, }. REDO = {T4} UNDO = {,,}. REDO = {T4} UNDO = {,}. REDO = {T4, } 6. O3 = B5 7. O2 =B3 8. O1=B1 9. O3 = A4 Redo T4, 10. O4 = A6 Buffer Management Recovery Management @ C. Batini 2006 76 Cold restart (ripresa a freddo) Tre fasi 1. Caricamento da memoria stabile del piu recente e copia selettiva dei frammenti danneggiati Ricerca del record di piu recente nel log 2. RICOSTRUISCE STATO DELLA BD Forward recovery dallo stato del Riapplica tutte le azioni del log, nel loro ordine Otteniamo lo stato del DB immediatamente precedente al crash 3. GARANTISCE ATOMICITA e PERSISTENZA Esegue un warm restart come descritto in precedenza Buffer Management Recovery Management @ C. Batini 2006 77 13