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