Você está na página 1de 10

Unidade 9

Recuperao de Falhas

Engenharia de Computao

Banco de Dados
Prof. Otaclio Jos Pereira

Contexto na Disciplina
1 Introduo 2 Modelo Relacional 3 SQL 4 Projeto de Banco de Dados 5 Armazenamento e Indexao 6 Processamento e Otimizao de Consultas 7 Gerenciamento de Transaes 8 Controle de Concorrncia 9 Recuperao de Falhas 10 Segurana de Banco de Dados 11 Tpicos Avanados

Reflexes Preliminares
Qual prejuzo causado por 1 hora de parada de um dos sites de comrcio eletrnico (submarino, lojas americanas e outros) ? Como se assegurar que falhas no causem perda de dados e danos materiais aos negcios?

Roteiro

Classificao de Falhas Recuperao baseada em Log Modificaes Adiadas e Imediatas no Banco de Dados Checkpoints

Classificao de Falhas
Que tipos de falhas podem ocorrer em um Sistema baseado em Banco de Dados?

Recuperao de Falhas
Para que se consiga estabelecer um mecanismo de recuperao de falhas, um ponto chave ter o suporte de algum dispositivo de armazenamento secundrio (persistente) Recuperao baseada em log
Com o dispositivo persistente, estabelece-se um protocolo para que o banco de dados possar ser devidamente recuperado

Recuperao baseada em log


Na recuperao baseada em log, o arquivo de log do banco de dados usado para registrar todas as operaes no banco de dados

Antes de entender os registros do log, vale compreender seu funcionamento geral no contexto do servidor como um todo

Recuperao baseada em log


A figura a seguir ilustra os passos de uma transao ao chegar ao servidor e a operao do log em conjunto com o banco de dados

Recuperao baseada em log


Cada operao dentro de uma transao origina um registro em log Um registro em log formado com as seguintes informaes: Nome da transao
Um identificador da transao que executou a operao write.

Nome do item de dado gravado.


Um identificador do item de dado gravado.

Valor antigo
O valor do item de dado anterior gravao.

Valor novo
Valor que o item de dado ter depois da gravao.

Recuperao baseada em log


Os tipos de registros em log podem ser:
<Ti start> <Ti, Itemj, Valor Antigo, Valor Novo>
A transao Ti, no item de dado J, mudou o valor antigo para o novo Este o principal para permitir a recuperao de dados

<Ti commit> <Ti abort>

Modificao Imediata e Adiada


Dois protocolos podem ser pensados para permitir a recuperao
Modificao imediata
Assim que a operao ocorre ela gravada em banco

Modificao adiada
Apenas ao final a modificao de fato confirmada no banco

Modificao Adiada
A tcnica de adiar a modificao do banco de dados assegura a atomicidade da transao gravando todas as modificaes do banco de dados no log, mas adiando a execuo de todas as operaes write de uma transao at que a transao seja parcialmente executada Depois de uma falha ter ocorrido, o subsistema de recuperao consulta o log para determinar que transaes precisam ser refeitas. A transao Ti precisa ser refeita se e somente si o log contiver o registro <Ti starts> e o registro <Ti commits>. Perceba que no preciso desfazer uma transao, uma vez que os dados so de fato efetivados no banco apenas ao final da transao

Modificao Adiada
Exemplo:
Digamos que T1 seja uma transao que transfere R$50 da conta A para a conta B. Esta transao pode ser definida como: T1: read (A,a1) a1 = a1 - 50 write (A,a1) read (B,b1) b1 = b1 + 50 write (B, b1)

Modificao Adiada
Exemplo
Considere que A e B tenham R$1.000,00 e R$2.000,00 respectivamente, antes das transaes serem executadas.

A seguir so mostrados estados do log e do banco de dados correspondentes a To.


Log <T1 starts> <T1, A, 950> <T1, B, 2050> <T1 commits> Banco de Dados

A=950 B=2050

Modificao Imediata
A tcnica de atualizao imediata permite modificaes do banco de dados enquanto a transao est ainda no estado ativo. Estas modificaes denominam-se modificaes no confirmadas. Em caso de falha,o valor antigo dos registros log pode ser usado para restaurar os itens de dados modificados aos valores que tinham antes do incio da transao. Undo(Ti), restaura o valor de todos os itens de dados atualizados pela transao Ti aos valores antigos. Redo(Ti), ajusta o valor de todos os itens de dados atualizados pela transao Ti aos novos valores.

Modificao Imediata
Exemplo:
Considere que A e B tenham R$1.000,00 e R$2.000,00 respectivamente, antes das transaes serem executadas.

A seguir so mostrados estados do log e do banco de dados correspondentes a To.


Log < T1 starts> < T1, A, 1000, 950> < T1, B, 2000, 2050> < T1 commits> Banco de Dados

A=950 B=2050

Modificao Imediata
Depois a ocorrncia de uma falha, o esquema de recuperao consulta o log para saber quais transaes precisam ser refeitas e quais precisam ser desfeitas. Esta classificao de transao feita assim: A transao Ti precisa ser desfeita se o log contiver o registro <Ti starts> e no contiver o registro <Ti commits>. A transao Ti precisa ser refeita se o log contiver os registros <Ti starts> e <Ti commits>.

Pontos de Verificao (checkpoints)


Quando uma falha no sistema ocorre, necessrio consultar o log para determinar quais transaes precisam ser refeitas ou desfeitas. Em princpio, o log inteiro precisa ser vasculhado afim de determinar isto. Existem duas dificuldades principais nesta abordagem:
processo de vasculhamento consome tempo; A maioria das transaes que, de acordo com nosso algoritmo, precisam ser refeitas j tem escritas suas atualizaes no banco de dados. Embora refaz-la no cause nenhum mal, isto todavia atrasar a recuperao.

Pontos de Verificao (checkpoints)


Afim de ganhar produtividade, introduzimos um novo conceito, o de checkpoint. O sistema de banco de dados executa periodicamente o checkpoint, que requer a seguinte sequncia de aes:
Emisso de todos os registros log correntes residentes na memria para o meio estvel. Emisso de todos os blocos buffer modificados para o disco. Emisso do registro log <checkpoint> para o meio estvel.

Assim, quando houver algum erro, no momento da recuperao, no h necessidade de executar a operao redo para aquelas transaes que se encontram antes do registro <checkpoint>.

Reviso
Classificao de Falhas Recuperao baseada em Log Modificaes Adiadas e Imediatas no Banco de Dados Checkpoints

10