Trabalhando com backups de log de transações

 O tópico é relevante apenas para bancos de dados que estejam usando os modelos de recuperação completa ou bulk-logged.

Este tópico apresenta conceitos sobre como fazer backup e restaurar (aplicar) logs de transações. Nos modelos de recuperação completa e de recuperação com log de operações em massa é necessário fazer backups de rotina de logs de transações (backups de log) para recuperar dados. No SQL Server 2005 e versões posteriores, será possível fazer backup de log enquanto qualquer backup completo estiver em execução.

Para poder criar o primeiro backup de log, você deve criar um backup completo, como um backup de banco de dados ou o primeiro de um conjunto de backups de arquivo. A restauração de um banco de dados usando apenas backups de arquivo pode tornar-se complexa. Portanto, recomendamos que, assim que possível, você inicie com um backup de banco de dados. Assim, é necessário fazer backup de log de transações regularmente. Isto não só minimiza a exposição à perda de trabalho, como também habilita o truncamento do log de transações. Normalmente, o log de transações é truncado após todos os backups de log convencionais. No entanto, o truncamento de log pode ser adiado. Para obter mais informações, consulte Fatores que podem atrasar o truncamento de log.

É recomendável fazer backups de log com freqüência suficiente para fornecer suporte aos seus requisitos empresariais, especificamente a tolerância à perda de trabalho que pode ser causada por um drive de log danificado. A freqüência apropriada para fazer backups de log depende de tolerância à exposição à perda de trabalho, equilibrada por quantos backups de log é possível armazenar, administrar e, potencialmente, restaurar. Fazer um backup de log a cada 15 a 30 minutos deve ser o bastante. Se o seu negócio requer que você reduza ao mínimo a exposição à perda de trabalho, considere fazer backups de log com mais freqüência. Backups de log mais freqüentes têm a vantagem adicional de aumentar a freqüência de truncamentos de log, resultando em arquivos de log menores.

Para limitar o número de backups de log que você precisa restaurar, é essencial fazer backup dos dados com freqüência. Por exemplo, convém programar um backup de banco de dados completo por semana e backups de diferenciais de banco de dados diariamente.

ObservaçãoObservação

Por padrão, toda operação de backup bem-sucedida acrescenta uma entrada ao log de erros do SQL Server e ao log de eventos do sistema. Se você fizer backup do log com muita freqüência, essas mensagens de êxito serão acumuladas muito rapidamente, resultando em logs de erros imensos que podem dificultar a localização de outras mensagens. Em tais situações, você pode suprimir essas entradas de log usando o sinalizador de rastreamento 3226, caso nenhum dos seus scripts dependa dessas entradas. Para obter mais informações, consulte Sinalizadores de rastreamento (Transact-SQL).

A cadeia de logs

Uma seqüência contínua de backups de log é chamada uma cadeia de logs. Uma cadeia de logs começa com um backup completo do banco de dados. Normalmente, uma cadeia de logs nova será iniciada apenas quando for feito backup do banco de dados pela primeira vez ou, depois que o modelo de recuperação for trocado de recuperação simples para recuperação completa ou recuperação com log de operações bulk-logged.

A menos que você decida substituir os conjuntos de backup existentes quando criar um backup de banco de dados completo, a cadeia de logs existente permanecerá intacta. Com a cadeia de logs intacta, é possível restaurar o banco de dados a partir de qualquer backup de banco de dados completo do conjunto de mídias, seguido por todos os backups de logs subseqüentes até o ponto de recuperação. O ponto de recuperação pode estar no fim do último backup de log ou em um ponto de recuperação específico em qualquer dos backups de log.

Para restaurar um banco de dados até o ponto de falha, a cadeia de logs deve estar intacta. Isto é, uma seqüência ininterrupta de backups de log de transações deve se estender até o ponto de falha. Onde essa seqüência de log deve começar depende do tipo de backup de dados que você está restaurando: banco de dados, parcial ou de arquivo. Para um backup de banco de dados ou backup parcial, a seqüência de backups de log deve se estender do final de um banco de dados ou backup parcial. Para um conjunto de backups de arquivos, a seqüência de backups de log deve se estender desde o início de um conjunto completo de backups de arquivos.

Se você estiver usando apenas backups de arquivos, será necessário fazer backup de log desde o início do primeiro backup de arquivos completo. É necessário fazer backups de log imediatamente após o primeiro backup de arquivos completo. É recomendável iniciá-lo porque o primeiro backup de log pode levar muito tempo. Enquanto o log está sofrendo backup, você faz backup dos outros arquivos. Para restaurar apenas o banco de dados de backups de arquivos, o conjunto de backups de arquivos completos deve ser aumentado com um ou mais backups de log que cobrem o intervalo entre o backup do primeiro e do último arquivo.

ObservaçãoObservação

Para identificar o backup que inicia a cadeia de logs em um conjunto de backups, consulte a coluna begins_log_chain da tabela backupset ou execute RESTORE HEADERONLY no dispositivo de backup para ver a coluna BeginsLogChain no conjunto de resultados.

É necessário fazer backups de log de transações regulares. Além de permitir que você restaure as transações que sofreram backup, um backup de log trunca o log para remover do arquivo de log os registros do log que sofreram backup. Se você não fizer backup de log com freqüência suficiente, os arquivos de log podem ficar cheios. Para obter informações sobre como lidar com um log de transações completo, consulte Solucionando problemas em um log de transação completa (Erro 9002).

Observação importanteImportante

Se um backup de log não estiver presente ou estiver danificado, inicie uma nova cadeia de logs criando um backup do banco de dados completo ou diferencial e depois fazendo backup de log de transações para iniciar uma nova cadeia de logs. É recomendável que você retenha os backups de log de transações que precedem o backup de log ausente, caso você queira restaurar o banco de dados para um point-in-time dentro desses backups. Para obter mais informações sobre como ajudar a proteger seus backups, consulte Considerações de segurança para backup e restauração.

Para obter mais informações sobre como criar backups de log, consulte Criando backups de log de transações e Backups da parte final do log.

Como são usados os backups de log?

A restauração de um backup de log rola para frente as alterações que foram registradas no log de transações para recriar o estado exato do banco de dados no momento em que a operação do backup de log começou. Ao restaurar um banco de dados, é necessário, também, restaurar os backups de log que foram criados após o backup completo do banco de dados restaurado ou, desde o início do primeiro backup de arquivos que você restaura. Normalmente, depois de restaurar o backup de dados ou diferencial mais recente, será necessário restaurar uma série de backups de log até alcançar o seu ponto de recuperação. Em seguida, o banco de dados é recuperado. Isso rola para trás todas as transações que estavam incompletas quando a recuperação começou e coloca o banco de dados online. Depois que o banco de dados for recuperado, não será possível restaurar mais nenhum backup.

Observação importanteImportante

Para ajudar a prevenir a perda de trabalho antes de uma restauração offline ou após uma falha, recomendamos que você faça backup do final do log para capturar os registros de log que ainda não tenham sofrido backup. Para obter mais informações, consulte Backups da parte final do log.

Aplicando backups de log de transações.