Transactions Logs

Um sistema de log que regista todas as operações realizadas nas transações da base de dados, incluído o commit.

O registo de log também se reparte entre a memória e o disco.

Os logs também guardam uma imagem dos dados alterados:

  • Antes da transação: before-image

  • Depois da transação: after-image

Data Flow

  1. O log regista de forma sequencial todas as operações da transação, incluindo o commit

  2. Só no final do registo do commit no log, os dados podem ser guardados em disco

    1. gestão de I/O - dados são alterados em memória volátil (buffers) e só mais tarde efectivados em disco.

  3. Antes dos dados da BD serem escritos em disco, os respetivos dados do log têm de ser escritos

Recuperação de Falhas

Como referido, podemos ter várias operações sobre dados efectuadas em memória volátil (buffers) que podem não ser guardadas em disco caso ocorra uma falha no sistema.

No entanto, o registo de logs já está em disco, pelo que pode ser utilizado para recuperação da falha.

Os backups + transaction logs podem ser utilizados para recuperação de diferentes tipos de falhas:

  • Disco

  • Transação

  • Sistema

Recuperação de Falha de Disco

Existe uma falha nos discos em que está a base de dados

Caso mais grave de falha pois obriga à reconstrução de toda a base de dados

Processo de recuperação:

  1. Fazer o restore do último backup

  2. Fazer o rollforward

    1. Utilizar as after images do transaction log para atualizar a base de dados até ao momento da falha

Recuperação de Falha de Transação

Menos Grave

Basta utilizar a before-image do transactionlogging capturada antes da transação para fazer rollback

Recuperação de Falha de Sistema

Erros no sistema operativo ou no SGBD

Nestas condições considera-se que a base de dados está corrompida e é necessário regressar a um estado anterior válido (integro) utilizando:

  • Rollback com as before-images do transaction-logging

  • Rollforward com as after-images do transaction-logging

Dificuldade

  • Detectar o ponto de integridade até ao qual devemos desfazer as transações.

Last updated