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
O log regista de forma sequencial todas as operações da transação, incluindo o commit
Só no final do registo do commit no log, os dados podem ser guardados em disco
gestão de I/O - dados são alterados em memória volátil (buffers) e só mais tarde efectivados em disco.
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:
Fazer o restore do último backup
Fazer o rollforward
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