Buscar

Aula 23 - Recuperação de falhas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Recuperação de falhas
Disciplina: Banco de Dados
Professor: Wandré Nunes de 
Pinho Veloso
2
Recuperação de falhas
• Falhas ocorrem por diversas causas, como erros 
nas transações (rollbacks) ou falhas no sistema
• Os conceitos fundamentais da recuperação no 
caso de certos tipos de falhas foram abordados
– Log do sistema
– Ponto de commit
• Este capítulo do livro cobre os procedimentos 
típicos e algoritmos para recuperação em caso 
de falhas
• Inclui recuperação em caso de falha catastrófica
3
Conceitos de Recuperação
• A recuperação de falhas significa retornar o BD a um 
estado consistente imediatamente anterior à ocorrência 
da falha
• A informação necessária para fazer isso é armazenada 
no log
• Estratégia típica:
– Se houver dano extensivo a uma grande parte do BD, devido a 
uma falha catastrófica, recuperar um backup e reconstruir o 
estado mais recente do banco, refazendo as operações 
armazenadas no log (que tem que ter sido backupeado também)
– Quando o BD não tiver sido danificado fisicamente, mas tiver se 
tornado inconsistente, reverter as modificações, desfazendo ou 
refazendo operações até alcançar um estado consistente
4
Conceitos de Recuperação
• Existem duas técnicas para recuperação 
de falhas não catastróficas (de 
transações)
– Atualização adiada ou postergada (deferred 
update)
– Atualização imediata (immediate update)
5
Conceitos de Recuperação
• Alteração adiada (deferred update)
– Não alteram fisicamente o disco até que a transação 
atinge o ponto de commit ou ponto de efetivação
– Enquanto não se chega ao ponto de commit, 
atualizações são mantidas em buffers locais; depois 
são registradas no log, e só então são feitas no BD
– Se houver falha, o BD não terá sido alterado, portanto 
não é necessário desfazer nada (NO-UNDO)
– Pode ser necessário refazer algo se a falha ocorrer 
após a gravação do log, porém antes da gravação no 
BD (REDO)
– Estratégia NO-UNDO/REDO
6
Conceitos de Recuperação
• Atualização imediata (immediate update)
– O BD pode ter sido atualizado por alguma operação de uma 
transação antes que esta chegue ao ponto de commit
– No entanto, essas operações são gravadas no log (usando 
force writing) antes que sejam aplicadas ao BD
– Se a transação falhar antes do ponto de commit, o log 
contém informação suficiente para desfazer o efeito dessas 
operações (UNDO)
– Pode também ser necessário refazer alguma operação, caso 
seu registro no log tenha sido gravado, mas seus efeitos não 
tenham sido materializados no BD (REDO)
– Estratégia UNDO/REDO
– Uma variação desta técnica em que todas as atualizações 
são gravadas no BD em disco antes do commit é chamada 
de UNDO/NO-REDO
7
Conceitos de Recuperação
• A recuperação é implementada com forte ligação ao SO, 
em particular com as funções de gerenciamento de 
memória virtual
– Paginação
– Cache
• O acesso a disco e o caching são feitos pelo próprio 
SGBD usando chamadas de baixo nível no SO
• Mas o SGBD mantém um controle de áreas de memória 
sob sua administração usadas para manter cópias de 
blocos do disco (cache do SGBD)
– Para cada bloco, existe um bit (dirty bit) que indica se o bloco 
deve ou não ser gravado em disco
8
Conceitos de Recuperação
• Existem duas estratégias quanto à operação de 
gravação de blocos no disco (flushing)
– Gravação em espaço adicional (shadowing)
• Mantém duas cópias separadas dos dados
– Before image (BFIM)
– After image (AFIM)
• Isso pode dispensar a existência do log para recuperação
– Gravação no próprio espaço anterior (in-place updating)
• Exige a existência do log
• O log precisa ser gravado antes que a BFIM seja sobrescrita 
pela AFIM: write-ahead logging
– O tipo de entrada no log é definido de acordo com a 
estratégia implementada (UNDO-type, REDO-type log 
entries)
9
Conceitos de Recuperação
• O cache do SGBD mantém também 
blocos de índices e de log
• Como o log é sequencial, pois sempre se 
acrescenta entradas ao final dele, o SGBD 
manterá em cache os últimos n blocos 
contendo dados do log
– Se for usado write-ahead logging, esses 
blocos precisam ser gravados (flushed) em 
disco antes que os blocos contendo dados 
sejam gravados
10
Conceitos de Recuperação
• Steal / no-steal
– No-steal: a página no cache que contém uma 
atualização não pode ser atualizada no disco até que 
a transação fique committed
– Steal: o protocolo permite que o buffer seja gravado 
antes do ponto de commit
• Force / No-force
– Force: o bloco de log é gravado imediatamente no 
disco quando a transação chega ao commit
– No-force: o log é mantido em memória até que seja 
necessário liberar espaço
11
Conceitos de Recuperação
• A técnica de atualização adiada exige um enfoque 
No-steal
• SGBD típicos usam um enfoque Steal/No-force
– Steal evita a necessidade de um grande buffer em memória para 
manter todas as páginas atualizadas esperando
– No-force ajuda a reduzir o custo de I/O, já que páginas na 
memória podem continuar recebendo atualizações antes do 
flush
– Portanto, a recuperação depende de uma estratégia de 
write-ahead logging que seja segura (UNDO e REDO)
• A BFIM não pode ser sobrescrita pela AFIM até que todos os 
registros de log (para UNDO) tenham sido gravados (force writing)
• O commit não pode ser concluído até que todos os registros de log 
(para REDO e UNDO) tenham sido gravados (force writing)
12
Conceitos de Recuperação
• Para facilitar a recuperação, o SGBD pode 
ter que manter listas contendo as 
transações ativas, as transações 
committed e as transações abortadas, de 
modo a poder interpretar o log 
corretamente
– Listas de transações committed e abortadas 
podem ser mantidas apenas desde o último 
checkpoint
13
Conceitos de Recuperação
• Check point: mais um tipo de entrada no log
• É escrito periodicamente no log no momento em 
que o SGBD salva em disco todos os blocos que 
tiverem sido modificados
• Consequentemente, todas as transações que 
tiverem seu registro [commit, T] gravado 
antes do check point não precisarão mais ser 
refeitas (REDO) em caso de falha, já que todas 
as atualizações já estarão registradas 
permanentemente
14
Conceitos de Recuperação
• Os check points podem ser realizados 
regularmente (a cada n minutos, ou a 
cada n transações committed)
• Em um check point
1. O processamento das transações é 
interrompido
2. Todos os buffers modificados são gravados 
no disco, incluindo listas de transações 
ativas, ponteiros para o log, etc.
3. A entrada de checkpoint é gravada no log, e 
o log é force-written para o disco
4. O processamento das transações é retomado
15
Conceitos de Recuperação
• Fuzzy checkpointing
– Reduz o atraso causado pelo 
checkpoint
– Permite que o processamento das 
transações continue logo após a 
gravação da entrada de checkpoint no 
log, mesmo antes que os buffers 
estejam todos gravados
– Mantém um apontador para o check 
point válido (o anterior) até que a 
gravação dos buffers seja completada
16
Técnicas de Recuperação
• Baseadas em atualização adiada ou 
postergada (deferred update)
• Baseadas em atualização imediata 
(immediate update)
17
Recuperação Baseada em
Atualização Adiada
• Como já visto, a ideia é postergar quaisquer 
atualizações sobre o BD até que a transação 
chegue ao ponto de commit
– Enfoque no Steal
– Write-ahead logging
– NO-UNDO/REDO
• Esta modalidade não é usada na prática, a 
menos que as transações sejam curtas e 
modifiquem poucos itens
– Caso contrário, existe a possibilidade de se ficar sem 
espaço em memória rapidamente
18
Recuperação Baseada em
Atualização Adiada
• Em um ambiente sem concorrência (monousuário)
– É apenas necessário terREDO
– Transações committed apenas precisam ser reexecutadas 
se a falha ocorrer antes do check point
– São usadas duas listas: uma para transações ativas, outra 
para transações committed desde o último checkpoint
– A lista de transações ativas apenas conterá uma 
transação
– O REDO é executado procurando operações 
write_item no log correspondentes a transações que 
constam da lista de transações committed desde o último 
checkpoint
• Obs.: o REDO é dito idempotente, pois pode ser aplicado várias 
vezes, tendo o mesmo efeito de uma única aplicação
• Obs2: a transação ativa não causa efeito algum
19
Exemplo de recuperação
Operações de leitura e gravação de três transações
20
21
Exemplo de recuperação
Operações antes da falha
22
Recuperação Baseada em
Atualização Adiada
• Em ambiente concorrente (multiusuário)
– Recuperação integrada ao controle de concorrência
– O REDO é executado da mesma forma que no 
ambiente não concorrente, porém garantindo a 
reexecução dos writes na mesma ordem em que 
forem encontrados no log
• Obs.: funciona considerando protocolo 2PL estrito, em outros 
casos podem ser necessárias outras providências
– Transações ativas são reexecutadas
• Este método nunca requer UNDO
23
Exemplo de recuperação em 
ambiente multiusuário
Exemplo de uma linha de tempo de recuperação para 
ilustrar o efeito do check point
24
Exemplo de recuperação em 
ambiente multiusuário
Exemplo de recuperação usando a atualização adiada com 
transações concorrentes
25
Log do sistema no ponto de falha
26
Recuperação Baseada em
Atualização Imediata
• Como já visto, a ideia é atualizar o BD 
“imediatamente”, sem esperar que a transação 
atinja o ponto de commit
– UNDO/NO-REDO
• Todas as atualizações são gravadas antes do commit
• NO-REDO em transações committed
• UNDO em transações abortadas
– UNDO/REDO
• O commit é permitido antes da gravação de todos os dados 
no BD
• REDO em transações committed, a partir do log
• É a técnica mais complexa
27
Recuperação Baseada em
Atualização Imediata
• Em ambiente sem concorrência (monousuário)
– Usar uma lista de transações committed desde o 
último check point e uma lista de transações ativas 
(no caso, com no máximo uma transação)
– Desfazer todas as operações write_item da 
transação ativa a partir do log (UNDO) >> ordem 
reversa
– Refazer todas as operações write_item das 
transações committed a partir do log, na ordem em 
que forem encontradas (REDO)
28
Recuperação Baseada em
Atualização Imediata
• Em ambiente concorrente (multiusuário)
– Novamente, depende do tipo de controle de concorrência
– No caso de escalonamento estrito, por exemplo, uma 
transação não pode ler ou gravar um item a menos que a 
transação que o tenha usado por último já tenha sido 
committed, ou abortada
– Neste caso, o procedimento seria o seguinte
• Usar uma lista de transações committed e uma lista de 
transações ativas
• Desfazer (UNDO) todas as operações write_item das 
transações ativas, na ordem reversa à encontrada no log
• Refazer (REDO) todas as operações write_item das 
transações committed, na ordem do log. Obs.: é possível 
analisar o log e apenas refazer a última gravação de cada item
29
Outras Técnicas
• Paginação shadow
– Vide seção 23.4
• Algoritmo ARIES
– Vide seção 23.5
30
Backups e Recuperação de
Falhas Catastróficas
• As técnicas exploradas até aqui referem-se a falhas em 
transações, essencialmente causadas por problemas 
lógicos, não catastróficas
• Para falhas catastróficas, o backup é o principal 
procedimento
– O backup do log deve ser feito a intervalos muito menores do 
que o backup completo do BD
– Pode-se ter muitos arquivos de log, quebrando a cada 
checkpoint
– No máximo serão perdidas as transações desde o último backup 
do log
– Na recriação do BD, deve-se recuperar o último backup 
completo e então refazer as operações registradas no log
• RAID e outras tecnologias voltadas a confiabilidade e 
tolerância a falhas podem evitar que falhas catastróficas 
(em um ou dois discos) forcem a recriação do BD a 
partir do backup
31
Bibliografia
• Capítulo 23: Elsmari Ramez; Navathe 
Shamkant B. Sistemas de Banco de 
Dados – Fundamentos e Aplicações. 6 ed. 
Pearson, São Paulo, 2011.

Continue navegando