Vous êtes sur la page 1sur 51

Sistema de recuperao

Prof: Galina Resumo baseado no livro do Silberschatz Captulo: sistema de recuperao

Introduo

Sistema de computador
Sujeito a falhas
Quebra de disco Falha de energia Erro de software

Informaes podem ser perdidas Sistema de BD deve precaver-se para garantir


Atomicidade Durabilidade

Esquema de recuperao
Responsvel pela restaurao do BD para um estado consistente que havia antes da ocorrncia da falha

Sumrio

Classificao de falhas Estruturas de armazenamento Recuperao e atomicidade Recuperao baseada em log

Sumrio

Classificao de falhas Estruturas de armazenamento Recuperao e atomicidade Recuperao baseada em log

Classificao de falhas

Tipos de falhas diferentes exigem tratamentos diferentes Tipo mais simples


No resulta em perda de informao

Tipos mais difceis


Resultam em perda de informao

Tipos
Falha de transao Queda do sistema Falha de disco

Falha de transao

Pode ser causada por 2 tipos de erros


Erro lgico
A transao no pode mais continuar com sua execuo normal devido a alguma condio interna
Entrada inadequada, dado no encontrado, etc

Erro de sistema
O sistema entrou em um estado inadequado
Ex: deadlock Uma transao no pode continuar com sua execuo normal Pode ser reexecutada posteriormente

Queda do sistema

Mal funcionamento de hardware ou bug no software de BD ou SO


Causa a perda do contedo no armazenamento voltil Faz o processamento da transao parar Contedo do armazenamento no voltil permanece intacto e no corrompido

Falha de disco

Um bloco de disco perde seu contedo


quebra do cabeote ou falha durante uma operao de transferncia de dados

Para a recuperao do sistema aps a falha


So usadas as cpias dos dados em outros discos ou backups de arquivos em outros meios, como fitas

Como recuperar-se de falhas Identificar modos de falha possveis Considerar como esses modos de falhas afetam o contedo do BD Desenvolver algoritmos para assegurar a consistncia do BD e a atomicidade da transao, a despeito de falhas
Algoritmos de recuperao. Duas partes:
Aes tomadas durante o processamento normal da transao
A fim de garantir que haja informao suficiente para permitir a recuperao

Aes tomadas em seguida falha


Recuperando o contedo do BD para um estado que assegure consistncia, atomicidade e durabilidade

Sumrio

Classificao de falhas Estruturas de armazenamento Recuperao e atomicidade Recuperao baseada em log

Estrutura de armazenamento

Itens do BD podem ser armazenados em diferentes meios de armazenamento Para compreender como garantir atomicidade e durabilidade
Entender como funcionam os meios de armazenamento e seus mtodos de acesso

Tipos de armazenamento
Armazenamento voltil Armazenamento no voltil Armazenamento estvel

Armazenamento voltil e no voltil Voltil


Informao que reside em armazenamento voltil
No sobrevive a quedas no sistema

Exemplos: Memria principal, Memria cache Acesso extremamente rpido

No voltil
Informao sobrevive a quedas de sistema Exemplos
Disco: Armazenamento on-line Fitas magnticas: Armazenamento de arquivo

Sujeitos a falhas
Quebra de cabeote: Pode resultar em perda da informao

Mais lento que armazenamento voltil

Armazenamento estvel

Informao nunca perdida Teoricamente


Impossvel de ser obtido
Um buraco negro pode engolir a Terra e destruir permanentemente todos os dados!

Pode-se chegar perto


Usando tcnicas que tornam extremamente improvvel a perda dos dados

Replicar a informao em vrios meios de armazenamento no volteis


Usualmente discos
Com modos possveis de falhas independentes

Implementao do armazenamento estvel Sistemas RAID garantem que a falha de um nico disco no resulte em perda de dados
Forma mais rpida e simples de RAID o disco espelhado
Mantm duas cpias de cada bloco em discos separados

Sistemas RAID no podem se proteger contra desastres


Incndios, enchentes etc

Backups em fitas em diferentes locais


Mas atualizaes ocorridas entre o desastre e o ltimo backup podem ser perdidas

Sistemas mais seguros


Cpia de cada bloco estvel em um site remoto

Implementao do armazenamento estvel (2)

Transferncia de blocos entre memria e disco pode resultar em


Concluso bem sucedida
Informao chegou de forma segura ao destino

Falha parcial
Uma falha ocorreu no meio da transferncia e o bloco de destino contm informao incorreta

Falha total
A falha ocorreu cedo o suficiente, de modo que o bloco de destino permanece intacto

Implementao do armazenamento estvel (3)

Na ocorrncia de falhas na transferncia


Sistema deve detectar Chamar procedimento de recuperao
Restabelecer o bloco, levando-o a um estado consistente

Para isso
Manter dois blocos fsicos para cada bloco lgico do BD No caso de discos espelhados
Ambos no mesmo local

No caso de backup remoto


Um local, outro est num site remoto

Implementao do armazenamento estvel (4)

Uma operao de sada executada como segue:


Escreve a informao dentro do primeiro bloco fsico Qdo a primeira escrita se completar com sucesso
Escreve a mesma informao no segundo bloco fsico

A sada completada somente aps a segunda escrita completar-se com sucesso

Implementao do armazenamento estvel (5) Durante a recuperao



Cada par de blocos fsico examinado Se ambos so iguais e no h erro detectvel


Nenhuma ao adicional necessria Trocar seu contedo pelo contedo do segundo bloco Sobrescrever a segunda cpia com o conteda da primeira

Se um bloco contm um erro detectvel Se ambos no contm erros detectveis, mas diferem no contedo

Assegura que uma escrita em armazenamento estvel seja bem sucedida


Atualize todas as cpias ou no resulte em mudana alguma

Implementao do armazenamento estvel (6) Exigir comparao entre cada par de blocos correspondentes durante a recuperao custoso Reduzir consideravelmente o custo
Mantendo uma varredura de escritas de bloco que esto em progresso
Usando uma pequena qtidade de RAM no voltil

Protocolos para escrita de um bloco em um site remoto


Similares aos protocolos para escrita de blocos em sistema de disco espelhado

Embora o uso de um nmero grande de cpias reduza a probabilidade de uma falha


Em geral suficiente simular armazenamento estvel somente com duas cpias

Acesso de dados

Como vimos
Sistema de BD reside permanentemente em armazenamento no voltil
Geralmente discos

Particionado em unidades de armazenamento


Chamadas blocos
Unidades de transferncia de dados para e a partir do disco Pode conter vrios itens de dados

Assuma que nenhum item abrange dois ou mais blocos

Acesso de dados (2) Transaes transferem informaes do disco para a memria principal e reenviam estas informaes de volta para o disco Operaes de entrada e sada (da memria) so feitas em unidades de bloco
Blocos residentes no disco
Blocos fsicos

Blocos residentes temporariamente na memria principal


Blocos de buffer

rea de memria na qual os blocos residem temporariamente


Buffer de disco

Acesso de dados (3)

Movimentos de blocos entre disco e memria principal so iniciados por meio de 2 operaes
Input (B): do disco para a
memria Transfere o bloco fsico B para a memria principal

Output (B): da memria pro


disco Transfere o bloco de buffer B para o disco e substitui o bloco fsico apropriado no disco

Acesso de dados (4) Cada transao Ti tem uma rea de trabalho privada
Cpias de itens de dados acessados e atualizados so mantidas

Esta rea de trabalho efetivada ou abortada Cada item de dados x mantido na rea de trabalho da transao Ti denotado por xi Transao Ti interage com o sistema de BD pela transferncia de dados para e de sua rea de trabalho at o buffer de sistema Os dados so transferidos usando duas operaes:
Read Write

Acesso de dados (5)

Read(X): do bloco de buffer (memria) para a var. local


Designa o valor do dado x para a varivel local xi
Se o bloco Bx no qual reside x no est na memria principal
Ento emite input(Bx)

Designa a xi o valor de x a partir do bloco de buffer (na memria principal)

Write(X): da var. local para o bloco de buffer (memria)


Designa o valor da varivel local xi para o dado x no bloco de buffer
Se o bloco Bx no qual reside x no est na memria principal
Ento emite um input(Bx)

Designa o valor de xi para x no buffer Bx

Acesso de dados (6)


Ambas as operaes podem exigir transferncia de um bloco do disco para a memria principal Bloco de buffer ser eventualmente escrito no disco
se o gerenciador de buffer necessitar de espao em memria para outros propsitos ou pq o sistema de BD deseja refletir a mudana em B sobre o disco
Dizemos que o sistema de BD fora sadas do buffer B se ele emite um output(B)

Qdo uma transao necessita de acesso a um dado x pela primeira vez


Executar read(x) Todas as atualizaes de x so realizados sobre xi Aps o ltimo acesso feito pela transao
Executar write(x)

Acesso de dados (7)

Operao output(B) para o buffer de bloco Bx em que x reside no precisa ter efeito imediato aps a execuo do write(x)
J que o bloco Bx pode conter outros dados que ainda esto sendo acessados

Ento a sada real aparecer mais tarde Se o sistema cair aps a operao write(x) ter sido executada
Mas antes do output(Bx)
O novo valor de x nunca ser escrito no disco
E portanto perdido

Sumrio

Classificao de falhas Estruturas de armazenamento Recuperao e atomicidade Recuperao baseada em log

Recuperao e atomicidade

Exemplo
Transferncia de 50 reais da conta A para B Valores iniciais
A=1000 B=2000

Suponha uma queda de sistema durante a execuo de Ti


Aps o output (BA)
Bloco de buffer em que A reside

Mas antes do output (BB)


Bloco de buffer em que B reside

Contedos da memria foram perdidos Dois possveis procedimentos de recuperao:

Recuperao e atomicidade (2)

Reexecutar Ti
Faz com que o valor de A torne-se 900, em vez de 950 Sistema entra num estado inconsistente

No reexecutar Ti
No estado corrente, A e B so 950 e 2000 Sistema entra em estado inconsistente

Logo
Este esquema de recuperao simples no funciona
Realizar todas ou nenhuma das modificaes feitas por Ti no banco!

Recuperao e atomicidade (3)

Para atingir o objetivo da atomicidade


Primeiro mandar informaes que descrevam estas modificaes para um armazenamento estvel
Sem modificar o banco

Este procedimento permite enviar todas as modificaes feitas por uma transao efetivada, apesar de possveis falhas Duas maneiras de realizar tais sadas:
Recuperao baseada em log Paginao shadow

Assumem execuo serial


Uma nica transao ativa

Sumrio

Classificao de falhas Estruturas de armazenamento Recuperao e atomicidade Recuperao baseada em log

Recuperao baseada em log Estrutura mais usada para gravar modificaes no banco o log
Seqncia de registros de log que mantm um arquivo atualizado das atividades no banco

Tipos de registros de log Registro de atualizao de log


Descreve uma nica escrita no banco. Campos:
Identificador de transao
Identificador nico da transao que realiza operao de escrita

Identificador de item de dado


Identificador nico do item de dado escrito Geralmente a localizao do dado no disco

Valor antigo
Valor do dado anterior escrita

Valor novo
Valor que o dado ter aps a escrita

Recuperao baseada em log (2)

Outros registros de log para arquivar eventos significativos durante o processamento da transao
<Ti start>
Transao Ti comeou

<Ti, xj, v1, v2>


Transao Ti realizou uma escrita no dado xj Xj tinha valor v1 antes da alterao Xj ter valor v2 aps a escrita

<Ti commit>
Transao Ti foi efetivada

<Ti abort>
Transao Ti foi abortada

Recuperao baseada em log (3)

Sempre que uma transao realiza uma escrita


essencial que o registro de log para aquela escrita seja criado antes do BD ser modificado

Havendo o registro de log


Pode-se enviar a modificao ao BD qdo for conveniente Tbm pode-se inutilizar uma modificao (undo) que j tenha sido enviada ao BD
Desfaz-la usando o valor antigo do registro de log

Recuperao baseada em log (4) Para que os registros de log sejam teis na recuperao aps falhas de sistema e disco
Log deve residir em armazenamento estvel

Assuma que todo registro de log ser escrito no final do arquivo de log em armazenamento estvel, to logo seja criado
Pode-se afrouxar esta exigncia para reduzir a sobrecarga imposta ao registro de log

Tcnicas de uso de log para garantir atomicidade de transaes apesar de falhas


O log contm um registro completo de toda atividade do BD
Volume de dados pode tornar-se absurdamente grande
Qdo seguro apagar informaes de log: checkpoints

Modificaes adiadas do BD

A tcnica de adiar modificaes garante atomicidade qdo todas as modificaes do BD so escritas no log
Adiando a execuo de todas as operaes write de uma transao at sua efetivao

Uma transao considerada parcialmente efetivada qdo a ltima ao tiver sido executada
Informaes no log associadas quela transao so usadas para a execuo das escritas adiadas Se o sistema cair antes de completar a transao ou se a transao for abortada
Informaes do log sero ignoradas

Modificaes adiadas do BD (2) Execuo de Ti funciona como segue


Registro <Ti start> escrito no log antes de Ti ter incio Write(x) feita por Ti resulta na escrita de um novo registro no log Qdo Ti parcialmente efetivada, um registro <Ti commit> escrito no log

Qdo Ti parcialmente efetivada


Registros no log so usados para execuo das escritas adiadas Como falhas podem ocorrer durante este passo
Escrever os registros de log em armazenamento estvel

Uma vez escritas


Atualizaes reais podem ocorrer de fato e a transao entra no estado de efetivao

Somente o novo valor do dado necessrio para a tcnica de modificao adiada


Omitir o campo valor antigo no registro de log

Modificaes adiadas do BD (3)

Exemplo

T0:

read (A)

T1:

A: - A - 50 Write (A) read (B) B:- B + 50 write (B)

read (C)

C:-C- 100 write (C)

Suponha que executem serialmente


T0 seguida por T1 Inicialmente A, B e C=1000, 2000 e 700 Log correspondente:
<T0 start> <T0, A, 950> <T0, B, 2050> <T0 commit> <T1 start> <T1, C, 600> <T1 commit>

Modificaes adiadas do BD (4)

Como resultado da execuo de T0 e T1


H vrias ordens possveis em que as sadas reais podem ocorrer
Tanto para o sistema de BD qto para o log

Ordem
Log BDados

<T0 start> <T0, A, 950> <T0, B, 2050> <T0 commit> <T1 start> <T1, C, 600> <T1 commit>

A=950 B=2050

Note que A alterado somente aps o registro <T0, A, 950> ter sido colocado no log

C=600

Modificaes adiadas do BD (5)

Usando o log
O sistema pode lidar com qquer falha que resulte em perda de informao no armazenamento voltil

Procedimento usado pelo esquema de recuperao


Redo(Ti)
Define o valor de todos os itens de dados atualizados por Ti para os novos valores Conjunto de itens de dados atualizados por Ti e seus respectivos novos valores podem ser encontrados no log Operao redo (refazer)
Execut-la vrias vezes deve ser equivalente a execut-la uma vez s Caracterstica exigida para garantir comportamento correto

Modificaes adiadas do BD (6)

Aps a ocorrncia de falha


O sistema de recuperao consulta o log
Determinar quais operaes tm de ser refeitas

Transao Ti dever ser refeita se e somente se o log contiver os registros <Ti start> e <Ti commit>
Se o sistema cair depois que a transao completar sua execuo
Informaes no log sero usadas na restaurao do sistema para o estado consistente anterior

Modificaes adiadas do BD (7)

Log resultante da execuo completa de T0 e T1: Suponha q o sistema caia antes que as transaes terminem
Logo aps o registro do log write(B) ter sido escrito em armazenamento estvel Log, no momento da queda, : <T0 start> <T0, A, 950>
<T0, B, 2050>

<T0 start> <T0, A, 950> <T0, B, 2050> <T0 commit> <T1 start> <T1, C, 600> <T1 commit>

Qdo o sistema retorna

Nenhuma ao refazer tem de ser tomada


J que nenhum registro de efetivao aparece no log

A e B continuam com 1000 e 2000 Registros de log da transao incompleta T0 podem ser removidos do log

Modificaes adiadas do BD (8)

Agora assuma que a queda venha logo aps o registro de log para o passo write(C) ter sido escrito em armazenamento estvel <T0 start>
O log, no momento da queda, est como:

Qdo o sistema retorna


Redo(T0) realizada

<T0, A, 950> <T0, B, 2050> <T0 commit> <T1 start> <T1, C, 600>

J que o registro <T0, commit> aparece no log em disco

Aps esta operao


A=950, B=2050 e C=700 Registros de log da transao T1 incompleta podem ser removidos do log

Modificaes adiadas do BD (9)

Finalmente, assuma que a queda venha logo aps o registro de log <T1 commit> ter sido escrito em armazenamento estvel
O log, no momento da queda, est como:

Qdo o sistema retorna


2 registros de efetivao esto no log
T0 e T1

Operaes redo(T0) e redo(T1) devem ser processadas Aps estas operaes


A=950, B=2050 e C=600

<T0 start> <T0, A, 950> <T0, B, 2050> <T0 commit> <T1 start> <T1, C, 600> <T1 commit>

Modificao imediata do BD

Permite que modificaes no BD sejam enviadas enqto as transaes ainda esto no estado ativo Escritas emitidas por transaes ativas so chamadas de modificaes no efetivadas Na ocorrncia de uma queda ou de uma falha
Sistema deve usar o campo relativo ao valor antigo dos registros de log para restaurao dos itens de dados modificados
Levando-os ao valor anterior ao incio da transao Restaurao conseguida por meio da operao undo (desfazer)

Modificao imediata do BD (2) Antes que uma transao Ti inicie sua execuo
Registro <Ti start> escrito no log

Durante sua execuo


Qquer operao write(x) feita por Ti precedida pela escrita apropriada no novo registro corrente no log

Qdo Ti parcialmente efetivada


Registro <Ti commit> escrito no log

J que as informaes do log so usadas na reconstruo do estado do banco


No se pode permitir que a atualizao real do banco ocorra antes da escrita do registro de log em armazenamento estvel
Logo, exige-se que antes da execuo de uma operao output(B)
Os registros de log correspondentes sejam escritos em armazenamento estvel

Modificao imediata do BD (3)

Exemplo

<T0 start> <T0, A, 100, 950> <T0, B, 2000, 2050> <T0 commit> <T1 start> <T1, C, 700, 600> <T1 commit>

Possvel ordem de ocorrncia das sadas reais

Log

BDados

<T0 start> <T0, A, 1000, 950> <T0, B, 2000, 2050>


<T0 commit> <T1 start> <T1, C, 700, 600> <T1 commit>

A=950 B=2050

C=600

Modificao imediata do BD (4) Usando o log


Esquema de recuperao usa 2 procedimentos
Undo(Ti)
Retorna aos valores antigos todos os itens de dados atualizados pela transao Ti

Redo(Ti)
Ajusta os valores de todos os itens de dados atualizados pela transao Ti para os valores novos

Aps a falha
Esquema de recuperao consulta o log para determinar quais transaes precisam ser refeitas e quais necessitam ser inutilizadas:
Ti tem de ser inutilizada se o log contm o registro <Ti start>, mas no contm o registro <Ti commit> Ti tem de ser refeita se o log contm tanto o registro <Ti start> qto o registro <Ti commit>

Modificao imediata do BD (5)

Assuma que a queda ocorra logo aps o registro de log para write(B) ter sido escrita em armazenamento estvel:
Qdo o sistema retorna
Encontra o registro <T0 start> no log Mas no encontra <T0 commit> Ento T0 deve ser inutilizada
Processar undo(T0)
<T0 start> <T0, A, 100, 950> <T0, B, 2000, 2050>

Como resultado
Os valores das contas A e B (no disco) so restaurados em 1000 e 2000

Modificao imediata do BD (6)

Assuma que a queda ocorra logo aps o registro de log para write(C) ter sido escrita em <T0 start> <T0, A, 100, 950> armazenamento estvel: <T0, B, 2000, 2050>
Qdo o sistema retorna
<T0 commit> <T1 start> <T1, C, 700, 600>

2 aes de recuperao precisam ser tomadas


Undo(T1) J que o registro <T1 start> aparece no log, mas no o <T1 commit> Redo(T0) J que o log contm tanto o registro <T0 start> qto <T0 commit> Ao final A=950, B=2050, C=700

Modificao imediata do BD (7)

Finalmente, assuma que a queda ocorra logo aps o registro de log <T1 commit> ter sido escrita em <T0 start> armazenamento estvel: <T0, A, 100, 950>
Qdo o sistema retorna
T0 e T1 precisam ser refeitas
<T0, B, 2000, 2050> <T0 commit> <T1 start> <T1, C, 700, 600> <T1 commit>

J que aparecem os registros <T0 start> e <T1 start>, e <T0 commit> e <T1 commit>

Aps redo(T0) e redo(T1)


A=950, B=2050, C=600

Vous aimerez peut-être aussi