sistema de recuperação. n classificação de falha n estrutura de armazenamento n recuperação e...

75
Sistema de recuperação

Upload: internet

Post on 16-Apr-2015

106 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Sistema de recuperação

Page 2: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Sistema de recuperação

Classificação de falha

Estrutura de armazenamento

Recuperação e atomicidade

Recuperação baseada em log

Página de sombra

Recuperação com transações concorrentes

Gerenciamento de buffer

Falha com perda de armazenamento não volátil

Técnicas de recuperação avançadas

Algoritmo de recuperação ARIES

– Sistemas de backup remoto

Page 3: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Classificação de falha Falha de transação: Dois tipos de erros podem causar uma falha de transação

Erros lógicos: a transação não pode completar devido a alguma condição de erro interna, como uma entrada inadequada, um dado não encontrado , overflow, etc..

Erros do sistema: o sistema de banco de dados precisa terminar uma transação ativa devido a uma condição de erro (por exemplo, impasse)

Falha do sistema: uma falta de energia ou outra falha do hardware ou software faz com que o sistema falhe.

A condição originada por erros de hardware e bugs no software fazem o sistema parar, mas não corrompem o conteúdo do armazenamento não volátil, é conhecida como condição falhar-parar.

Suposição falhar-parar: conteúdo do armazenamento não volátil é considerado como não sendo corrompido por falha do sistema

Sistemas de banco de dados possuem diversas verificações de integridade para impedir adulteração de dados do disco

Falha do disco: uma falha de cabeça ou falha de disco semelhante destrói todo ou parte do armazenamento de disco

A destruição é considerada como detectável: unidades de disco usam somas de verificação para detectar falhas

Page 4: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Algoritmos de recuperação Algoritmos de recuperação são técnicas para garantir a

consistência do banco de dados e a atomicidade e durabilidade da transação apesar das falhas.

Algoritmos de recuperação têm duas partes:

Ações tomadas durante o processamento normal da transação para garantir que existem informações suficiente para recuperação de falhas

Ações tomadas após uma falha para recuperar o conteúdo do banco de dados a um estado que garante atomicidade, consistência e durabilidade.

Page 5: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Estrutura de armazenamento Armazenamento volátil:

não sobrevive a falhas do sistema

exemplos: memória principal, memória cache

Armazenamento não volátil:

sobrevive a falhas do sistema

exemplos: disco, fita, memória flash, RAM não-volátil (alimentada por bateria)

Armazenamento estável:

uma forma mítica de armazenamento que sobrevive a todas as falhas

aproximado mantendo-se várias cópias em meios não voláteis distintos

Page 6: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Hierarquia de armazenamento

Page 7: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Hierarquia de armazenamento (cont.)

armazenamento principal: Meio mais rápido, porém volátil (cache, memória principal).

armazenamento secundário: próximo nível na hierarquia, não volátil, tempo de acesso moderadamente rápido

também chamado armazenamento on-line

Por exemplo: memória flash, discos magnéticos

armazenamento terciário: nível mais baixo na hierarquia, não volátil, tempo de acesso lento

também chamado armazenamento off-line

Por exemplo: fita magnética, armazenamento óptico

Page 8: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Implementação do armazenamento estável Mantenha várias cópias de cada bloco em discos separados

as cópias podem estar em sites remotos para proteger contra desastres como incêndio ou inundação

A falha durante a transferência de dados ainda pode resultar em cópias inconsistentes: a transferência em bloco pode resultar em

Término bem-sucedido

Falha parcial: bloco de destino possui informações incorretas

Falha total: bloco de destino nunca foi atualizado

Exigimos que se uma falha na transferência de dados ocorrer, o sistema a detecte e chame um procedimento de recuperação para restabelecer o bloco levando-o para um estado consistente.

Proteção do meio de armazenamento contra falha durante a transferência de dados (uma solução):

Executar a operação de saída da seguinte forma (considerando duas cópias de cada bloco):

1. Escreva a informação no primeiro bloco físico.

2. Quando a primeira escrita terminar com sucesso, escreva a mesma informação no segundo bloco físico.

3. A saída só é completada depois que a segunda escrita for completada com sucesso.

Page 9: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Implementação de armazenamento estável (cont.)

Proteção do meio de armazenamento contra falha durante a transferência de dados (cont.):

As cópias de um bloco podem diferir devido a falhas durante a operação de saída. Para recuperar-se da falha:

1. Primeiro, encontre blocos inconsistentes:1. Solução simples: Compare as duas cópias de cada bloco do disco.2. Solução melhor:

Registre as escritas em disco em andamento no armazenamento não volátil (RAM não volátil ou área especial do disco).

Use essa informação durante a recuperação para encontrar blocos que podem ser inconsistentes, e só compare cópias destes.

Usada em sistemas RAID de hardware2. Se uma cópia de um bloco inconsistente for detectada com um erro (soma

de verificação defeituosa), escreva a outra cópia em cima dela. Se ambos não têm erro, mas forem diferentes, escreva o primeiro bloco sobre o segundo.

Page 10: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Acesso ao armazenamento

Um arquivo de banco de dados é particionado em unidades de armazenamento de tamanho fixo, chamadas blocos. Os blocos são unidades de alocação de armazenamento e transferência de dados.

O sistema de banco de dados busca minimizar o número de transferências de bloco entre o disco e a memória. Podemos reduzir o número de acessos ao disco mantendo o máximo de blocos possível na memória principal.

Buffer – parte da memória principal disponível para armazenar cópias de blocos de disco.

Gerenciador de buffer – subsistema responsável por alocar

espaço em buffer na memória principal.

Page 11: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Gerenciador de buffer Programas convocam o gerenciador de buffer quando precisam de

um bloco do disco.

1. Se o bloco já estiver no buffer, o programa solicitante recebe o endereço do bloco na memória principal

2. Se o bloco não estiver no buffer,

1. o gerenciador de buffer aloca espaço no buffer para o bloco, substituindo (descartando) algum outro bloco, se for preciso, para criar espaço para o novo bloco.

2. O bloco que é descartado é escrito de volta ao disco somente se foi modificado desde o momento mais recente em que foi escrito/lido do disco.

3. Quando o espaço é alocado no buffer, o gerenciador de buffer lê o bloco do disco para o buffer e passa o endereço do bloco na memória principal para o solicitante.

Page 12: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Acesso aos dados Blocos físicos são aqueles blocos residindo no disco.

Blocos de buffer são os blocos residindo temporariamente na memória principal.

Movimentos de bloco entre disco e a memória principal são iniciados por meio das duas operações a seguir:

input(B) transfere o bloco físico B para a memória principal.

output(B) transfere o bloco de buffer B para o disco, e substitui o bloco físico apropriado lá.

Cada transação Ti possui sua área de trabalho privada, onde são mantidas as cópias locais de todos os itens de dados acessados e atualizados por ela.

A cópia local de Ti de um item de dados X é chamada de xi.

Consideramos, por simplicidade, que cada item de dados cabe e é armazenado dentro de um único bloco.

Page 13: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Acesso aos dados (cont.) A transação transfere itens de dados entre os blocos de buffer do

sistema e sua área de trabalho privada usando as seguintes operações:

read(X) atribui o valor do item de dados X à variável local xi.

write(X) atribui o valor da variável local xi ao item de dados {X} no bloco de buffer.

esses dois comandos podem precisar da emissão de uma instrução input(BX) antes da atribuição, se o bloco BX em que X reside ainda não estiver na memória.

Transações

Execute read(X) enquanto acessa X pela primeira vez;

Todos os acessos subseqüentes são para a cópia local.

Após o último acesso, a transação executa write(X).

output(BX) não precisa vir imediatamente após write(X). O sistema pode

realizar a operação output quando julgar necessário.

Page 14: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Recuperação e atomicidade

Modificar o banco de dados sem garantir que a transação será confirmada pode levar o banco de dados a um estado inconsistente.

Considere a transação Ti que transfere $50 da conta A para a conta B; o objetivo é realizar todas as modificações do banco de dados feitas por Ti ou nenhuma delas.

Várias operações de saída podem ser exigidas para Ti (para gerar A e B). Uma falha pode ocorrer após uma dessas modificações ter sido feita, mas

antes que todas elas sejam feitas.

Page 15: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Recuperação e atomicidade (cont.) Para garantir a atomicidade apesar das falhas, primeiro geramos

informações descrevendo as modificações no armazenamento estável sem modificar o próprio banco de dados.

Estudamos duas técnicas:

recuperação baseada em log, e

paginação de sombra

Consideramos (inicialmente) que as transações serão executadas em série, ou seja, uma após a outra.

Page 16: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Recuperação baseada em log

Um log é mantido no armazenamento estável.

O log é uma seqüência de registros de log, e mantém um registro das atividades de atualização no banco de dados.

Quando a transação Ti inicia, ela se registra escrevendo um registro de log <Ti start>

Antes que Ti execute write(X), um registro de log <Ti, X, V1, V2> é escrito, onde V1 é o valor de X antes do write, e V2 é o valor a ser escrito em X.

O registro de log observa que Ti realizou uma escrita no item de dados Xj. Xj tinha o valor V1 antes da escrita, e terá o valor V2 após a escrita.

Quando Ti termina sua última instrução, o registro de log <Ti commit> é escrito.

Consideramos, por enquanto, que os registros de log são escritos diretamente no armazenamento estável (ou seja, eles não são mantidos em buffer)

Duas técnicas usando logs

Modificação de banco de dados adiada

Modificação de banco de dados imediata

Page 17: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Modificação de banco de dados adiada

O esquema de modificação de banco de dados adiada registra todas as modificações no log, mas adia todas as escritas para depois da confirmação parcial.

Suponha que as transações são executadas serialmente

A transação começa escrevendo o registro <Ti start> no log.

Uma operação write(X) resulta em um registro de log <Ti, X, V> sendo escrito, onde V é o novo valor para X

Nota: o valor antigo não é necessário para esse esquema

A escrita não é realizada em X nesse momento, mas é adiada.

Quando Ti confirma parcialmente, <Ti commit> é escrito no log

Finalmente, os registros de log são lidos e usados para realmente executar as escritas previamente adiadas.

Page 18: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Modificação de banco de dados adiada (cont.)

Durante a recuperação após uma falha, uma transação precisa ser refeita se e somente se tanto <Ti start> quanto <Ti commit> existirem no log.

Refazer uma transação Ti ( redo Ti) define o valor de todos os itens de dados atualizado pela transação como os novos valores.

Falhas podem ocorrer enquanto

a transação estiver executando as atualizações originais, ou

enquanto a ação de recuperação estiver sendo tomada

transações de exemplo T0 e T1 (T0 executa antes de T1):

T0: read (A) T1 : read (C)

A: - A - 50 C:- C- 100

Write (A) write (C)

read (B)

B:- B + 50

write (B)

Page 19: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Modificação de banco de dados adiada (cont.)

A seguir mostramos o log conforme aparece em três instâncias de tempo.

Se o log no armazenamento estável no momento da falha for como neste caso:

(a) Nenhuma ação de rede precisa ser tomada

(b) redo(T0) precisa ser realizado, pois <T0 commit> está presente

(c) redo(T0) precisa ser realizado seguido por redo(T1), pois

<T0 commit> e <Ti commit> estão presentes

Page 20: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Modificação de banco de dados imediata

O esquema de modificação de banco de dados imediata permite que atualizações de banco de dados de uma transação não confirmada sejam feitas enquanto as escritas são emitidas

como pode ser preciso desfazer, os logs de atualização precisam ter valor antigo e valor novo

O registro de log de atualização precisa ser escrito antes que o item do banco de dados seja escrito

Consideramos que o registro de log é enviado diretamente ao armazenamento estável

Pode ser estendido para adiar a saída do registro de log, desde que, antes da execução de uma operação output(B) para um bloco de dados B, todos os registros de log correspondentes aos itens B sejam esvaziados para o armazenamento estável

A saída dos blocos atualizados pode ocorrer a qualquer momento antes ou depois do commit da transação

A ordem em que os blocos são enviados pode ser diferente da ordem em que são escritos.

Page 21: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Exemplo de modificação de bancode dados imediata

Log Write Output

<T0 start>

<T0, A, 1000, 950>

To, B, 2000, 2050

A = 950

B = 2050

<T0 commit>

<T1 start>

<T1, C, 700, 600>

C = 600

BB, BC

<T1 commit>

BA

Nota: BX indica bloco contendo X.

Page 22: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Modificação de banco de dados imediata (cont.)

O procedimento de recuperação possui duas operações em vez de uma:

undo(Ti) restaura o valor de todos os itens de dados atualizados por Ti aos seus valores antigos, indo para trás a partir do último registro para Ti

redo(Ti) define o valor de todos os itens de dados atualizados por Ti aos novos valores, indo para frente a partir do primeiro registro para Ti

As duas operações precisam ser idempotentes

Ou seja, mesmo que a operação seja executada várias vezes, o efeito é o mesmo que se fosse executada uma vez

Necessário porque as operações podem ser novamente executadas durante a recuperação

Ao recuperar-se após a falha:

A transação Ti precisa ser desfeita se o log tiver o registro<Ti start>, mas não contém o registro <Ti commit>.

A transação Ti precisa ser refeita se o log tiver o registro <Ti start> e o registro <Ti commit>.

Operações de undo são realizadas primeiro, depois as operações de redo.

Page 23: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Exemplo de recuperação de modificação de BD imediata

A seguir mostramos o log conforme aparece em três instâncias de tempo.

As ações de recuperação em cada um destes são:

(a) undo (T0): B é restaurado para 2000 e A para 1000.

(b) undo (T1) e redo (T0): C é restaurado para 700, e depois A e B são definidos para 950 e 2050, respectivamente.

(c) redo (T0) e redo (T1): A e B são definidos para 950 e 2050 respectivamente. Depois, C é definido para 600

Page 24: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Pontos de verificação

Problemas no procedimento de recuperação, conforme discutimos:

pesquisar o log inteiro é demorado

poderíamos desnecessariamente refazer transações que já emitiram sua saída no banco de dados.

Facilite o procedimento de recuperação realizando periodicamente o ponto de verificação

Envie todos os registros de log atualmente residindo na memória principal para o armazenamento estável.

Envie todos os blocos de buffer modificados para o disco.

Escreva um registro de log < checkpoint> no armazenamento estável.

Page 25: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Pontos de verificação (cont.) Durante a recuperação, temos que considerar apenas a transação

mais recente Ti que foi iniciada antes do ponto de verificação, e as transações que começaram após Ti.

Varra para trás a partir do final do log para encontrar o registro <checkpoint> mais recente.

Continue varrendo para trás até um registro <Ti start> ser encontrado.

Só precisa considerar a parte do log vindo após o registro start. A parte inicial do log pode ser ignorada durante a recuperação, e pode ser apagada sempre que for desejado.

Para todas as transações (começando de Ti ou mais) sem <Ti commit>, execute undo(Ti). (Feito apenas no caso de modificação imediata.)

Varrendo para frente no log, para todas as transações começando a partir de Ti ou depois com um <Ti commit>, execute redo(Ti).

Page 26: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Exemplo de pontos de verificação

T1 pode ser ignorada (atualizações já enviadas ao disco

devido ao ponto de verificação) T2 e T3 refeitos

T4 refeito

TcTf

T1

T2

T3

T4

ponto de verificação falha no sistema

Page 27: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Paginação de sombra

A paginação de sombra é uma alternativa à recuperação baseada em log; esse esquema é útil se as transações forem executadas em série

Idéia: manter duas tabelas de página durante o tempo de vida de uma transação ‑ a tabela de página atual, e a tabela de página de sombra

Armazene a tabela de página de sombra no armazenamento não volátil, de modo que o estado do banco de dados antes da execução da transação possa ser recuperado.

A tabela de página de sombra nunca é modificada durante a execução

Para começar, as duas tabelas de página são idênticas. Somente a tabela de página atual é usada para os acessos ao item de dados durante a execução da transação.

Sempre que qualquer página estiver para ser escrita pela primeira vez

Uma cópia dessa página é feita em uma página não usada.

A tabela de página atual aponta para a cópia

A atualização é realizada na cópia

Page 28: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Exemplo de tabela de página

Page 29: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Exemplo de paginação de sombra Tabelas de sombra e página atual após escrita na página 4

Page 30: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Paginação de sombra (cont.) Para confirmar uma transação:

1. Esvazie todas as páginas modificadas na memória principal para o disco

2. Envie a tabela de página atual para o disco

3. Torne a tabela de página atual a nova tabela de página de sombra, da seguinte maneira:

mantenha um ponteiro para a tabela de página de sombra em um local fixo (conhecido) no disco.

mantenha um ponteiro para a tabela de página de sombra em um local fixo (conhecido) no disco.

para tornar a tabela de página atual a nova tabela de página de sombra, basta atualizar o ponteiro para apontar para a tabela de página atual no disco

Quando o ponteiro para a tabela de página de sombra tiver sido escrito, a transação está confirmada.

Nenhuma recuperação é necessária após uma falha ‑ novas transações podem começar imediatamente, usando a tabela de página de sombra.

As páginas não apontada de/para a tabela de página atual/sombra devem ser liberadas (com coleta de lixo).

Page 31: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Paginação de sombra (cont.)

Vantagens da página de sombra em relação aos esquemas baseados em log a recuperação é trivial nenhuma sobrecarga de escrita de registros de log

Desvantagens: Copiar a tabela de página inteira é muito dispendioso

Pode ser reduzido usando uma tabela de página estruturada como uma árvore B+

– Não é preciso copiar árvore inteira, somente os caminhos na árvore que levam a nós de folha atualizados

A sobrecarga do commit é alta mesmo com a extensão acima Precisa esvaziar cada página atualizada, e tabela de página

Os dados são fragmentados (páginas relacionadas ficam separadas no disco)

Após o término de cada transação, as páginas do banco de dados contendo versões antigas de dados modificados precisam passar pela coleta de lixo

Difícil de estender o algoritmo para permitir que transações sejam executadas simultaneamente

Mais fácil para estender esquemas baseados em log

Page 32: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Recuperação com transações concorrentes

Modificamos os esquemas de recuperação baseados em log para permitir que várias transações sejam executadas simultaneamente.

Todas as transações compartilham um único buffer de disco e um único log

Um bloco de buffer pode ter itens de dados atualizados por uma ou mais transações

Consideramos o controle de concorrência usando um bloqueio estrito em duas fases;

ou seja, as atualizações de transações não confirmadas não devem ser visíveis a outras transações

Caso contrário, como realizar o undo se T1 atualiza A, depois T2 atualiza A e confirma, e finalmente T1 precisa abortar?

O logging é feito conforme descrevemos anteriormente.

Os registros de log de diferentes transações podem ser intercalados no log.

A técnica de ponto de verificação e as ações tomadas na recuperação precisam ser alteradas

pois várias transações podem estar ativas quando um ponto de verificação é realizado.

Page 33: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Recuperação com transações concorrentes (cont.)

Os pontos de verificação são realizados como antes, exceto que o registro de log do ponto de verificação agora tem a forma

< checkpoint L>onde L é a lista de transações ativas no momento do ponto de verificação

Consideramos que nenhuma atualização está em andamento enquanto o ponto de verificação é executado (isso será aliviado mais tarde)

Quando o sistema se recupera de uma falha, ele primeiro faz o seguinte:

1. Inicializa a lista de undo e lista de redo para vazio2. Varre o log para trás a partir do fim, parando quando o

primeiro registro <checkpoint L> for encontrado.Para cada registro encontrado durante a varredura: se o registro for <Ti commit>, acrescenta Ti à lista de redo

se o registro for <Ti start>, então se Ti não está na lista de

redo, acrescenta Ti à lista de undo

3. Para cada Ti em L, se Ti não estiver na lista de redo, acrescenta Ti à lista de undo

Page 34: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Recuperação com transações concorrentes (cont.)

Neste ponto, lista de undo consiste em transações incompletas, que precisam ser desfeitas, e lista de redo consiste em transações acabadas, que precisam ser refeitas.

A recuperação agora continua da seguinte forma:

Varra o log para trás a partir do registro mais recente, parando quando registros <Ti start> tiverem sido encontrados para cada Ti na lista de undo.

Durante a varredura, realize undo para cada registro de log que pertence a uma transação na lista de undo.

Localize o registro <checkpoint L> mais recente.

Varra o log para frente a partir do registro <checkpoint L> até o final do log.

Durante a varredura, realize redo para cada registro de log que pertence a uma transação na lista de redo.

Page 35: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Exemplo de recuperação

Percorra as etapas do algoritmo de recuperação no log a seguir:» <T0 start>

» <T0, A, 0, 10>

» <T0 commit>

» <T1 start>

» <T1, B, 0, 10>

» <T2 start> /* Varredura na etapa 4 pára aqui */

» <T2, C, 0, 10>

» <T2, C, 10, 20>

» <checkpoint {T1, T2}>

» <T3 start>

» <T3, A, 10, 20>

» <T3, D, 0, 10>

» <T3 commit>

Page 36: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Buffering de registro de log Buffering de registro de log: os registros de log são mantidos na

memória principal, em vez de serem enviados diretamente para o armazenamento estável.

Registros de log são enviados ao armazenamento estável quando um bloco de registros de log no buffer estiver cheio, ou uma operação de log forçado for executada.

O log forçado é realizado para confirmar uma transação forçando todos os seus registros de log (incluindo o registro de commit) para o armazenamento estável.

Vários registros de log, portanto, podem ser enviados por meio de uma única operação de saída, reduzindo o custo da E/S.

Page 37: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Buffering de registro de log (cont.) As regras a seguir precisam ser seguidas se os registros de log forem

colocados em buffer:

Os registros de log são enviados para o armazenamento estável na ordem em que são criados.

A transação Ti só entra no estado de commit quando o registro de log <Ti commit> tiver sido enviado ao armazenamento estável.

Antes que um bloco de dados na memória principal seja enviado ao banco de dados, todos os registros de log pertencentes aos dados nesse bloco precisam ter sido enviados ao armazenamento estável.

Essa regra é chamada logging de escrita antecipada ou regra WAL (Write Ahead Logging)

– Estritamente falando, WAL só requer que informações de undo sejam enviadas

Page 38: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Buffering de banco de dados

O banco de dados mantém um buffer na memória dos blocos de dados

Quando um novo bloco é necessário, se o buffer estiver cheio, um bloco existente precisa ser removido do buffer

Se o bloco escolhido para remoção tiver sido atualizado, ele terá que ser enviado para o disco

Como resultado da regra de logging de escrita antecipada, se um bloco com atualizações não confirmadas for enviado ao disco, os registros de log com informações de undo para as atualizações são enviados ao log no armazenamento estável primeiro.

Nenhuma atualização deve estar em progresso em um bloco quando for enviada ao disco. Pode ser garantido da seguinte forma.

Antes de escrever um item de dados, a transação adquire bloqueio exclusivo sobre o bloco contendo o item de dados

O bloqueio pode ser liberado quando a escrita terminar.

Tais bloqueios mantidos por uma curta duração software chamados de latches.

Antes que um bloco seja enviado ao disco, o sistema adquire um latch exclusivo sobre o bloco

Garante que nenhuma atualização pode estar em andamento no bloco

Page 39: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Gerenciamento de buffer (cont.) O buffer de banco de dados pode ser implementado

em uma área de memória principal real reservada para o banco de dados, ou

na memória virtual

Implementar o buffer na memória principal reservada tem desvantagens:

A memória é particionada de antemão entre o buffer de banco de dados e as aplicações, limitando a flexibilidade.

As necessidades podem mudar, e embora o sistema operacional saiba melhor como a memória deve ser dividida a qualquer momento, ele não pode mudar o particionamento da memória.

Page 40: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Gerenciamento de buffer (cont.)

Os buffers de banco de dados geralmente são implementados na memória virtual apesar de algumas desvantagens:

Quando o sistema operacional precisa expulsar uma página que foi modificada, para criar espaço para outra página, a página é escrita no espaço de swap no disco.

Quando o banco de dados decide escrever a página de buffer no disco, a página de buffer pode estar no espaço de swap e pode ter que ser lida do espaço de swap no disco e enviada ao banco de dados no disco, resultando em E/S estra!

Conhecido como problema de paginação dual.

O ideal é que, quando houver um swap de uma página de buffer do banco de dados, o sistema operacional passe o controle ao banco de dados, que por sua vez envia a página ao banco de dados, ao invés do espaço de swap (cuidado para enviar primeiro os registros de log)

Assim, a paginação dual pode ser evitada, mas os sistemas operacionais comuns não admitem tal funcionalidade.

Page 41: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Falha com perda de armazenamentonão volátil

Até aqui, não assumimos perda de armazenamento não volátil Técnica semelhante ao ponto de verificação usada para lidar com perda de

armazenamento não volátil Periodicamente faz o dump do conteúdo inteiro do banco de dados para

armazenamento estável Nenhuma transação pode estar ativa durante o procedimento de dump; um

procedimento semelhante ao ponto de verificação precisa ocorrer Envie todos os registros de log atualmente residindo na memória

principal para o armazenamento estável. Envie todos os blocos de buffer para o disco. Copie o conteúdo do banco de dados para o armazenamento estável. Envie um registro <dump> para log no armazenamento estável.

Para se recuperar da falha de disco restaurar o banco de dados do dump mais recente Consulte o log e refaça todas as transações que foram confirmadas

após o dump

Pode ser estendido para permitir que as transações estejam ativas durante o dump; conhecido como dump difuso ou dump online

Estudaremos o ponto de verificação difuso mais adiante

Page 42: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Algoritmo de recuperação avançado

Page 43: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Técnicas de recuperação avançadas Admite técnicas de bloqueio de alta concorrência, como aquelas usadas para

controle de concorrência de árvore B+

Operações como inserções e exclusões de árvore B+ liberam bloqueios mais cedo.

Elas não podem ser desfeitas restaurando valores antigos (undo físico), pois quando um bloqueio é liberado, outras transações podem ter atualizado a árvore B+.

Em vez disso, inserções (resp. exclusões) são desfeitas executando uma operação de exclusão (resp. inserção) (conhecido como undo lógico).

Para tais operações, registros de log de undo deverão conter a operação de undo a ser executada

chamado logging de undo lógico, ao contrário do logging de undo físico.

A informação de redo é logada fisicamente (ou seja, novo valor para cada escrita) mesmo para tais operações

O redo lógico é muito complicado, pois o estado do banco de dados no disco pode não ser “consistente com a operação”.

Page 44: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Técnicas de recuperação avançadas (cont.)

O logging de operação é feito da seguinte forma:

1. Quando a operação começa, registre <Ti, Oj, operation-begin>. Aqui, Oj é um identificador exclusivo da instância da operação.

2. Enquanto a operação está executando, os registros de log normais com informações de redo e undo físico são mantidos em log.

3. Quando a operação termina, <Ti, Oj, operation-end, U> é registrado, onde U contém informações necessárias para realizar uma informação de undo lógico

Se houver falha/rollback antes que a operação termine:

o registro de log operation-end não é encontrado, e

a informação de undo físico é usada para a operação undo.

Se houver falha/rollback após o término da operação:

o registro de log operation-end é encontrado e, neste caso,

o undo lógico é realizado usando U; a informação de undo físico para a operação é ignorada.

O redo de operação (a pós a falha) a inda usa a informação do redo físico.

Page 45: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Técnicas de recuperação avançadas (cont.)

O rollback da transação Ti é feito da seguinte forma:

Varra o log ao contrário1. Se um registro de log <Ti, X, V1, V2> for encontrado, realize o undo e

registre um registro de log apenas de redo <Ti, X, V1>.2. Se um registro <Ti, Oj, operation-end, U> for encontrado

Reverta a operação logicamente usando a informação de undo U. – As atualizações realizadas durante o rollback são

registradas assim como durante a execução normal da operação.

– Ao final do rollback da operação, em vez de registrar um operation-end, gere um registro

<Ti, Oj, operation-abort>.

Pule todos os registros de log anteriores para Ti até que o

registro <Ti, Oj operation-begin> seja encontrado

Page 46: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Técnicas de recuperação avançadas (cont.)

Varra o log ao contrário (cont.):

1. Se um registro apenas de redo for encontrado, ignore-o

2. Se um registro <Ti, Oj, operation-abort> for encontrado:

pule todos os registros de log anteriores para Ti até que o

registro<Ti, Oj, operation-begin> seja encontrado.

3. Pare a varredura quando o registro <Ti, start> for encontrado

4. Inclua um registro <Ti, abort> ao log

Alguns pontos a observar:

Os casos 3 e 4 acima só podem ocorrer se o banco de dados falhar enquanto uma transação estiver passando por um rollback.

Pular os registros de log como no caso 4 é importante para impedir o rollback múltiplo da mesma operação.

Page 47: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Técnicas de recuperação avançadas (cont.)

As ações a seguir são tomadas quando se recupera da falha do sistema

Varra o log para frente a partir do último registro < checkpoint L>

1. Repita o histórico refazendo fisicamente todas as atualizações de todas as transações,

2. Cure uma lista de undo durante a varredura da seguinte forma

lista-undo é definida como L inicialmente

Sempre que <Ti start> é encontrado, Ti é acrescentada à lista de undo

Sempre que <Ti commit> ou <Ti abort> é encontrado, Ti é excluída da

lista de undo

Isso leva o banco de dados ao estado como de falha, com transações confirmadas e não confirmadas tendo que ser refeitas.

Agora, a lsita-undo contém transações que são incompletas, ou seja, não foram confirmadas nem totalmente revertidas.

Page 48: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Técnicas de recuperação avançadas (cont.)

Recuperação de falha do sistema (cont.)

Varra o log para trás, realizando o undo nos registros de log das transações encontradas na lista de undo.

As transações são revertidas conforme descrevemos anteriormente.

Quando <Ti start> for encontrado para uma transação Ti na lista de undo, escreva um registro de log <Ti abort>.

Pare a varredura quando registros <Ti start> tiverem sido encontrados para toda Ti na lista de undo.

Isso desfaz os efeitos de transações incompletas (aquelas sem registros de log commit ou abort). A recuperação agora está completa.

Page 49: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Técnicas de recuperação avançadas (cont.)

O ponto de verificação é feito da seguinte forma:

Envie todos os registros na memória para o armazenamento estável

Gere em disco todos os blocos de buffer modificados

Envie para o log no armazenamento estável um registro < checkpoint L>.

As transações não podem realizar ações enquanto o ponto de verificação estiver em andamento.

O ponto de verificação difuso permite que as transações prossigam enquanto as partes mais demoradas do ponto de verificação estão em andamento.

Realizado conforme descrito no próximo slide

Page 50: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Técnicas de recuperação avançadas (cont.)

O ponto de verificação difuso é feito da seguinte forma:

Temporariamente, pare todas as atualizações por transações

Escreva um registro de log <checkpoint L> e force o log para o armazenamento estável

Observe a lista M de blocos de buffer modificados

Agora permita que as transações prossigam com suas ações

Envie para o disco todos os blocos de buffer modificados na lista M

os blocos não devem ser atualizados enquanto estiverem sendo enviados

Siga o WAL: todos os registros de log pertencentes a um bloco precisam ser enviados antes que o bloco seja enviado

Armazene um ponteiro para o registro de ponto de verificação em uma posição fixa last_checkpoint no disco

Ao recuperar-se usando um ponto de verificação, comece a varrer do registro de ponto de verificação apontado por last_checkpoint

Registros de log antes de last_checkpoint têm suas atualizações refletidas em banco de dados no disco, e não precisam ser refeitas.

Pontos de verificação incompletos, onde o sistema tinha falhado enquanto realiza o ponto de verificação, são tratados com segurança.

Page 51: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Algoritmo de recuperação ARIES

Page 52: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

ARIES ARIES é um método de recuperação de última geração

Incorpora diversas otimizações para reduzir sobrecargas durante o processamento normal e agilizar a recuperação

O “algoritmo de recuperação avançado” que estudamos anteriormente é modelado pelo ARIES, mas simplificou bastante removendo otimizações

Ao contrário do algoritmo de recuperação avançado, ARIES1. Usa Log Sequence Number (LSN) para identificar registros de log

1. Armazena LSNs nas páginas para identificar quais atualizações já foram aplicadas a uma página de banco de dados

2. Redo fisiológico3. Tabela de página suja para evitar redos desnecessários durante a

recuperação4. Ponto de verificação difuso que só registra informações sobre

páginas sujas, e não exige que as páginas sujas sejam escritas durante o ponto de verificação Veremos mais sobre cada um destes itens…

Page 53: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Otimizações do ARIES

Redo fisiológico A página afetada é identificada fisicamente, a ação dentro da página

pode ser lógica Usado para reduzir as sobrecargas de logging

– Por exemplo, quando um registro é excluído e todos os outros registros precisam ser movidos para preencher o espaço

» O redo fisiológico pode registrar apenas a exclusão do registro» O redo físico exigiria o logging de valores antigo e novo para

grande parte da página Exige que a página seja enviada para o disco de forma indivisível

– Fácil de conseguir com RAID de hardware, também admitido por alguns sistemas de disco

– Saída de página incompleta pode ser detectada por técnicas de soma de verificação

» Mas ações extras são exigidas para recuperação» Tratada como falha de mídia

Page 54: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Estruturas de dados do ARIES

Log Sequence Number (LSN) identifica cada registro de log Precisa estar aumentando seqüencialmente Normalmente um deslocamento a partir do início do arquivo de log para

permitir o acesso rápido Facilmente estendido para lidar com vários arquivos de log

Cada página contém um PageLSN que é o LSN do último registro de log cujos efeitos são refletidos na página

Para atualizar uma página: Use o latch X da página e escreva o registro de log Atualize a página Registre o LSN do registro de log no PageLSN Desbloqueie a página

Esvazie a página para página de latches S do disco Assim, o estado da página no disco é consistente com a operação

– Exigido para dar suporte ao redo fisiológico PageLSN é usado durante a recuperação para impedir o redo repetido

Assim, garante a idempotência

Page 55: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Estruturas de dados do ARIES (cont.) Cada registro de log contém o LSN do registro de log anterior da

mesma transação

LSN no registro de log pode ser implícito

O registro de log somente de leitura especial, chamado registro de log de compensação (CLR), usado para registrar ações tomadas durante a recuperação que nunca precisam ser desfeitas

Também tem o papel de abortar a operação de registros de log usados no algoritmo de recuperação avançado

Tem um campo UndoNextLSN para anotar próximo (mais antigo) registro a ser desfeito

Registros no intervalo já teriam sido desfeitos

Exigido para evitar undo repetido de ações já desfeitas

LSN TransId PrevLSN RedoInfo UndoInfo

LSN TransID UndoNextLSN RedoInfo

Page 56: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Estruturas de dados do ARIES (cont.) DirtyPageTable

Lista de páginas no buffer que foram atualizadas Contém, para cada página desse tipo

PageLSN da página RecLSN é um LSN tal que os registros de log antes desse LSN já

tenham sido aplicados à versão da página no disco– Definido para o final atual do log quando uma página é inserida na

tabela de página suja (imediatamente antes de ser atualizado)– Registrado nos pontos de verificação, ajuda a minimizar o

trabalho de redo Registro de log de ponto de verificação

Contém: DirtyPageTable e lista de transações ativas Para cada transação ativa, LastLSN, o LSN do último registro de log

escrito pela transação Posição fixa no disco anota LSN do último registro de log de ponto de

verificação completado

Page 57: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Algoritmo de recuperação ARIES

A recuperação ARIES envolve três passadas

Passada de análise: Determina

Quais transações desfazer

Quais páginas estavam sujas (versão de disco não atualizada) no momento da falha

RedoLSN: LSN do qual o redo deverá começar

Passada de redo:

Repete histórico, refazendo todas as ações de RedoLSN

RecLSN e PageLSNs são usados para evitar refazer ações já refletidas na página

Passada de undo:

Reverte todas as transações incompletas

Transações cujo aborto foi completado antes não são desfeitas

– Idéia chave: não é preciso desfazer essas transações: ações de undo anteriores foram logadas e são refeitas conforme a necessidade

Page 58: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Recuperação ARIES: Análise

Passada de análise

Começa do último registro de log de ponto de verificação completo

Lê DirtyPageTable do registro de log

Define RedoLSN = mínimo de RecLSNs de todas as páginas em DirtyPageTable

Se nenhuma página estiver suja, RedoLSN = LSN do registro do ponto de verificação

Define undo-list = lista de transações no registro de log do ponto de verificação

Lê LSN do último registro de log para cada transação na lista de undo a partir do registro de log do ponto de verificação

Varre para frente a partir do ponto de verificação

.. Na página seguinte…

Page 59: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Recuperação ARIES: Análise (cont.)

Passada de análise (cont.)

Varre para frente a partir do ponto de verificação

Se qualquer registro de log encontrado para a transação não estiver na lista de undo, acrescenta transação à lista de undo

Sempre que um registro de log de atualização for encontrado

Se a página não estiver na DirtyPageTable, ela é acrescentada com RecLSN definido como o LSN do registro de log de atualização

Se o registro de long final da transação for encontrado, exclui transação da lista de undo

Registra último registro de log para cada transação na lista de undo

Pode ser necessário para undo posterior

Ao final da passada de análise:

RedoLSN determina onde iniciar passada de undo

RecLSN para cada página em DirtyPageTable usada para minimizar o trabalho de redo

Todas as transações na lista de undo precisam ser revertidas

Page 60: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Passada de redo do ARIES

Passada de redo: repete o histórico repassando cada ação ainda não refletida na página do disco, da seguinte forma:

Varre para frente a partir de RedoLSN. Sempre que um log de atualização for encontrado:

1. Se a página não estiver na DirtyPageTable ou o LSN do registro de log for menor que o RecLSN da página na DirtyPageTable, então pule o registro de log

2. Caso contrário, apanhe a página do disco. Se o PageLSN da página apanhada do disco for menor que o LSN do registro de log, refaça o registro de log

NOTA: Se um dos testes for negativo, os efeitos do registro de log já apareceram na página. O primeiro teste evita até mesmo a busca da página do disco!

Page 61: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Ações de undo do ARIES

Quando um undo é realizado para um registro de log de atualização Gere um CLR contendo a ação de undo realizada (ações realizadas durante

o undo são registrados fisicamente ou fisiologicamente). CLR para registro n anotado como n’ na figura abaixo

Defina UndoNextLSN do CLR como o valor de PrevLSN do registro de log de atualização

Setas indicam valor de UndoNextLSN ARIES admite rollback parcial

Usado, por exemplo, para tratar de impasses revertendo apenas o suficiente para liberar os bloqueios solicitados

A figura indica ações adiante após rollbacks parciais registros 3 e 4 inicialmente, depois 5 e 6, depois rollback total

1 2 3 4 4' 3' 5 6 5' 2' 1'6'

Page 62: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

ARIES: Passada de undo Passada de undo Realiza a varredura inversa no log, desfazendo todas as transações na lista

de undo Varredura inversa otimizada pulando registros de log desnecessários da

seguinte forma: Próximo LSN a ser desfeito para cada transação definida como LSN

do último registro de log para transação encontrado pela passada de análise.

A cada etapa, apanhe o maior destes LSNs para desfazer, volte para ele e desfaça-o

Depois de desfazer um registro de log– Para registros de log comuns, defina o próximo LSN a ser

desfeito para a transação a PrevLSN anotada no registro de log– Para registros de log de compensação (CLRs), defina próximo

LSN a ser desfeito como UndoNextLSN anotado no registro de log

» Todos os registros intermediários são pulados, pois já teriam sido desfeitos

Undos realizados conforme descrito anteriormente

Page 63: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Outros recursos do ARIES Independência de recuperação

As páginas podem ser recuperadas independentemente das outras

Por exemplo: se algumas páginas de disco falharem, elas poderão ser recuperadas de um backup enquanto outras páginas estão sendo usadas

Pontos de salvamento:

As transações podem registrar pontos de salvamento e reverter para um ponto de salvamento

Útil para transações complexas

Também usado para reverter apenas o suficiente para liberar bloqueios sobre impasse

Page 64: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Outros recursos do ARIES (cont.) Bloqueio minucioso:

Podem ser usados algoritmos de concorrência de índice que permitem bloqueio em nível de tupla sobre índices

Estes exigem undo lógico, em vez de undo físico, como no algoritmo de recuperação avançado

Otimizações de recuperação: Por exemplo:

A tabela de página suja pode ser usada para a busca prévia de páginas durante o redo

O redo fora de ordem é possível:

o redo pode ser adiado em uma página sendo apanhada do disco, e realizado quando a página for apanhada.

Nesse meio tempo, outros registros de log podem continuar a ser processados

Page 65: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Sistemas de backup remoto

Page 66: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Sistemas de backup remoto

Os sistemas de backup remoto oferecem alta disponibilidade, permitindo que o processamento de transação continue mesmo que o site primário seja destruído.

Page 67: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Sistemas de backup remoto (cont.) Detecção de falha: o site de backup precisa detectar quando o site

primário falhou

para distinguir a falha do site primário da falha do enlace, mantenha vários links de comunicação entre o site primário e o backup remoto.

Transferência de controle:

Para assumir o controle, o site de backup primeiro realiza a recuperação usando sua cópia do banco de dados e todos os registros de log que recebeu do site primário.

Assim, transações completadas são refeitas e transações incompletas são descartadas.

Quando um site de backup assume o processamento, ele se torna o novo site primário

Para transferir o controle de volta ao antigo primário quando se recuperar, o antigo primário precisa receber logs de redo do backup antigo e aplicar todas as atualizações localmente.

Page 68: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Sistemas de backup remoto (cont.) Tempo para recuperação: Para reduzir o atraso na retomada, o site

de backup periodicamente processa os registros de log de redo (com efeito, realizando a recuperação do estado anterior do banco de dados), realiza um ponto de verificação e pode então excluir partes mais antigas do log.

A configuração hot-spare permite a retomada muito rápida:

O backup processa continuamente o registro de log de rede enquanto chega, aplicando as atualizações localmente.

Quando a falha do site primário é detectada, o backup reverte transações incompletas e está pronto para processar novas transações.

Alternativa para o backup remoto: banco de dados distribuído com dados replicados

O backup remoto é mais rápido e mais barato, porém menos tolerante a falhas

Veja mais sobre isso no Capítulo 19

Page 69: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Sistemas de backup remoto (cont.) Garante a durabilidade das atualizações adiando o commit da

transação até que a atualização seja registrada no backup; evite esse atraso permitindo menores graus de durabilidade.

One-safe: confirme assim que o registro de log de commit da transação for escrito no site primário

Problema: as atualizações podem não chegar no backup antes que ele assuma.

Two-very-safe: confirme quando o registro de log de commit da transação for escrito no site primário e no backup

Reduz a disponibilidade, pois as transações não podem confirmar se um site falhar.

Two-safe: prossegue como no two-very-safe se o site primário e de backup estiverem ativos. Se apenas o primário estiver ativo, a transação confirma assim que seu registro de log de commit for escrito no primário.

Melhor disponibilidade do que two-very-safe; evita problema de transações perdidas no one-safe.

Page 70: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Final do capítulo

Page 71: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Operações de armazenamento em bloco

Page 72: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Parte do log de banco de dados correspondente a T0 e T1

Page 73: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Estado do log e banco de dados correspondente a T0 e T1

Page 74: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Parte do log do sistema correspondente

a T0 e T1

Page 75: Sistema de recuperação. n Classificação de falha n Estrutura de armazenamento n Recuperação e atomicidade n Recuperação baseada em log n Página de sombra

Estado do log do sistema e bancode dados correspondente a T0 and

T1