Noções de Recuperação de Falhas Luiz Henrique de Campos

Propaganda
Roteiro
Noções de Recuperação de Falhas
Luiz Henrique de Campos Merschmann
Departamento de Computação
Universidade Federal de Ouro Preto
[email protected]
www.decom.ufop.br/luiz
Posicionamento
Introdução
Conceitos de Recuperação
Técnicas de Recuperação
Referências
BCC321 - Banco de Dados I
Introdução
Ementa
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Conceitos básicos em sistemas de banco de dados.
Conceitos e arquitetura de sistemas de banco de dados.
Modelagem conceitual de dados.
Modelo Relacional: conceitos básicos e restrições de
integridade.
Linguagens: álgebra e cálculo relacional.
A linguagem SQL e o uso de APIs.
Projeto de banco de dados.
Normalização de banco de dados.
Noções de processamento de transações, concorrência e
recuperação de falhas.
Aspectos de implementação de banco de dados.
I
I
I
Falhas de banco de dados podem acontecer por diferentes
motivos.
Discutiremos sobre diferentes abordagens para recuperação
de falhas.
As técnicas de recuperação estão relacionadas com os
métodos de controle de concorrência.
Restauração de Falhas
Tipos de Falhas (continuação...)
Qual a sua importância?
Uma transação pode falhar durante sua execução. O sistema de
banco de dados deverá manter informações sucientes para se
recuperar dessa falha.
I
Tipos de falhas que podem ocorrer:
I
I
I
O
Log
O computador falhar: erro de hardware, software ou rede.
Ex.: memória principal.
Erro de transação ou sistema: alguma operação da
transação pode causar falha. Ex.: divisão por zero.
Erros locais ou condições de exceção detectadas pela
transação: determinadas condições provocam o
cancelamento da transação. Ex.: dados não encontrados.
do sistema
I
I
Esquema de Recuperação
I
I
I
I
Para poder se recuperar de falhas que afetam as transações,
o sistema mantém um log.
O log é mantido em disco, de modo que não será afetado
por nenhum tipo de falha, exceto falha de disco ou
catastróca.
O log é periodicamente copiado para um sistema de
armazenamento (ta).
Imposição do controle de concorrência: método de controle
de concorrência pode abortar uma transação. Ex.:
transações em estado de deadlock.
Falha de disco: mau funcionamento de uma leitura ou
gravação.
Problemas físicos e catástrofes: problemas como falta de
energia, fogo, sabotagem, etc.
Recuperação de transações: o banco de dados será
restaurado para o estado de consistência mais recente.
Estratégia típica para recuperação:
I
Não houver dano físico (falha não catastróca):
I
I
I
Reverter (desfazer operações) quaisquer mudanças que
causaram as inconsistências.
Refazer algumas operações de forma a restaurar um estado
consistente do banco.
Dano em grande porção do banco de dados (falha
catastróca):
I
I
Restauração com cópia anterior do banco (armazenada em
ta).
Reconstrução num estado mais atual refazendo as operações
armazenadas no log (armazenado em ta).
Técnicas de Recuperação
I
Técnicas de Recuperação de Falhas Não-Catastrócas:
I
I
I
Técnicas de recuperação baseadas em atualização adiada.
Técnicas de recuperação baseadas em atualização imediata.
Técnicas de Recuperação de Falhas Catastrócas.
Técnicas de Recuperação Baseadas em
Atualização Adiada
I
I
I
Técnicas de Recuperação Baseadas em
Atualização Adiada
Idéia: postergar qualquer atualização real (gravar em disco)
no banco de dados até que a transação complete sua
execução com sucesso e alcance o ponto de efetivação.
Durante a execução da transação: atualizações registradas
no log e nos buers.
Após alcançar o ponto de efetivação e forçar a gravação do
log no disco, as atualizações são registradas no banco de
dados.
Técnicas de Recuperação Baseadas em
Atualização Adiada
I
Algoritmo NO-UNDO/REDO:
I
Protocolo típico de atualização adiada:
I
I
Uma transação não pode alterar o banco em disco até que
ela alcance seu ponto de efetivação.
Uma transação não alcança seu ponto de efetivação até que
todas as suas operações sejam registradas no log e até que
seja forçada a gravação do log no disco.
I
Como o banco nunca é atualizado em disco até que a
transação seja efetivada, nunca será necessária qualquer
operação UNDO (desfazer).
REDO (refazer) será necessário no caso de o sistema falhar
depois que a transação for efetivada, mas antes de todas as
suas alterações serem gravadas em disco (utilização do log ).
Log
Banco de Dados
<T0 start>
tem que ser tomada, já que
aparece no log.
<T0 , B, 2050> FALHA
Quando o sistema retorna após a
<T0 commit>
FALHA
Nenhuma ação refazer (REDO)
nenhum registro de efetivação
<T0 , A, 950>
A = 950
B = 2050
falha, a operação REDO(T0 ) é
realizada, já que o registro
< T0 commit >
aparece no log.
Técnicas de Recuperação Baseadas em
Atualização Imediata
I
I
I
O banco de dados pode ser atualizado por algumas
operações de uma transação antes que ela alcance seu ponto
de efetivação.
No entanto, a atualização também deve ser registrada no
log (em disco) antes de sua aplicação no banco de dados,
tornando possível a recuperação.
Se uma transação falhar depois de registrar mudanças no
banco de dados, mas antes de alcançar seu estado de
efetivação, os efeitos de suas operações no banco deverão
ser desfeitos (UNDO).
Técnicas de Recuperação Baseadas em
Atualização Imediata
I
Algoritmo de recuperação UNDO/NO-REDO.
Quando o sistema retorna após a
Log
Banco de Dados
<T0 start>
<T0 , A, 1000, 950>
<T0 , B, 2000, 2050>
A = 950
FALHA
B = 2050
<T0 commit>
FALHA
falha, ele encontra no log
< T0 start >, mas não
< T0 commit >. Portanto, será
processado um UNDO(T0 )
Se a técnica de recuperação
garantir que todas as atualizações
de uma transação são registradas
no banco de dados (em disco)
antes da efetivação da transação,
nunca haverá necessidade de
refazer quaisquer operações das
transações efetivadas.
Técnicas de Recuperação Baseadas em
Atualização Imediata
I
Algoritmo de recuperação UNDO/REDO.
Quando o sistema retorna após a
Log
Banco de Dados
falha, ele encontra no log
< T0 start >, mas não
< T0 commit >. Portanto, será
processado um UNDO(T0 )
<T0 start>
<T0 , A, 1000, 950>
<T0 , B, 2000, 2050>
A = 950
Se a técnica de recuperação
permitir que a transação se
FALHA
efetive antes que todas as suas
<T0 commit>
operações sejam escritas no banco
FALHA
B = 2050
de dados, necessitaremos da
operação REDO.
Perguntas
Referências
I
I
I
Ramez Elmasri e Shamkant B. Navathe, Sistemas de Banco
de Dados, 4o edição, Editora Pearson, 2005.
Abraham Silberschatz, Henry F. Korth e S. Sudarshan,
Sistema de Banco de Dados, 3o edição, Editora Pearson,
1999.
C. J. Date, Introdução a Sistemas de Bancos de Dados,
Editora Elsevier, 2003.
FIM
Download