Backups de log de transações do SQL Server,

2

Eu tenho uma pergunta sobre os backups de log de transações no sql server 2008. Atualmente, estou fazendo backups completos uma vez por semana (domingo) e backups de log de transações diariamente. Eu coloquei o backup completo na pasta 1 no domingo e, em seguida, na segunda-feira, também coloquei o primeiro backup do log de transações na mesma pasta. Na terça-feira, antes de fazer o segundo backup do log de transações, movo o primeiro backup do log de transações da pasta1 e coloco na pasta2, depois, faço o segundo backup do log de transações e coloco na pasta1. Mesma coisa em qua, qui e assim por diante. Basicamente na pasta1, eu sempre tenho o backup completo mais recente e o backup de log de transações mais recente, enquanto os outros backups de log de transações estão na pasta2. Minhas perguntas são, quando o sql server está prestes a fazer, digamos o backup do log de transações do 4º (quinta-feira), ele procura os backups de logs anteriores (1º, 2º e 3º) para que este novo backup inclua apenas as transações do o último backup ou tem alguma outra maneira de saber se existem outros backups de log de transação. Basicamente, eu estou perguntando isso porque todos os meus backups de log de transação parecem ser aproximadamente do mesmo tamanho e eu pensei que seu tamanho dependerá da quantidade de transações desde o último backup de log de transação.

Exemplo: Se você tiver um, digamos, backup completo e, em seguida, fizer um backup de log transac e esse backup de log de transação for digamos 200 MB e agora fizer outro backup de log transac, esse último backup de log transac será consideravelmente menor que o primeiro um porque não ou quase nenhuma transação ocorreu entre esses dois backups, certo? Pelo menos, é isso que estou assumindo. O que acontece no meu caso é que este segundo backup é praticamente o mesmo tamanho que o primeiro e eu estou querendo saber se a razão para isso é porque eu mudei o primeiro backup de log transac para uma pasta diferente, então agora sql servidor acha que tudo o que eu tem é apenas um backup completo e, em seguida, obtém todas as transações que aconteceram desde o backup completo e o coloca no segundo backup do log de transações.

Alguém por favor pode explicar se minhas suposições estão corretas? Obrigado ...

    
por user44127 26.05.2010 / 00:19

5 respostas

3

Chris e joeqwerty, Obrigado pessoal por suas respostas. Eu entendo a diferença entre backup diferencial e log, mas acho que não me expressei claramente. Eu sempre pensei que os backups de log continham todas as transações desde o último backup de log (ou backup completo no caso do primeiro backup de log) e você acabou de confirmar isso, então acho que estava bem ali. O que me desencorajou é que fiz um backup de log esta manhã e então tive que fazer outro backup de log (não planejado) esta tarde e esses dois se tornaram do mesmo tamanho, mesmo que não tenha havido muita atividade no sistema. db (embora eu possa estar errado sobre isso). Então, basicamente, eu estava com medo de que, ao mover os arquivos antigos de backup de log para uma pasta diferente, estou forçando o SQL Server a capturar todas as transações desde o backup completo (e essencialmente se comportar como um backup diferencial porque é o primeiro backup de log é assim mesmo) para cada novo backup de log. Então, eu acho que contanto que o servidor SQL rastreie essa informação internamente e eu possa mover os arquivos em volta, eu estou bem. Obrigado novamente ...

    
por 26.05.2010 / 01:10
2

Acho que você está confundindo backups e diferenciais de log de transações.

Um backup de log do SQL é as alterações desde o último backup de log. Para fazer uma restauração, você precisa do backup completo mais toda a cadeia de backups de log, caso contrário não será possível restaurar para um determinado momento. O SQL rastreia tudo internamente, portanto, não importa se você move os arquivos. A principal coisa é precisar do backup completo mais a cadeia ininterrupta de TODOS os backups de log.

Um backup do diff, por outro lado, incluirá todas as alterações desde o último backup completo, independentemente de qualquer outro backup de log ou de diff que você tenha feito nesse ínterim.

Se o tráfego for consistente, os backups de log poderão funcionar aproximadamente no mesmo tamanho, já que têm o mesmo volume de transações em média.

Não é preciso dizer ... mas vou dizer de qualquer maneira ... teste seus backups com frequência tentando algumas restaurações de teste - é a melhor maneira de descobrir se sua estratégia tem falhas.

    
por 26.05.2010 / 00:28
2

O SQL Server não presta atenção aos arquivos de backup no disco rígido quando executa backups posteriores. Ele controla todas essas coisas internamente dentro do arquivo de log do banco de dados.

Sim (em geral), o tamanho do backup do log de transações dependerá um pouco de quanto atividade ocorreu desde o último backup de log, mas pode haver um tamanho mínimo.

Mas os envios semanais e os backups de registros diários são uma espécie de plano incomum. Muito mais comuns seriam os fulls semanais e os diferenciais diários, além dos backups de log por hora, caso você realmente precise de uma recuperação pontual. +1 no link do spencer.

    
por 26.05.2010 / 00:44
2

Um backup do log de transações trunca apenas a parte inativa do log. A definição de "inativo" é o que muitas pessoas parecem ter problemas. O ponto inativo é a área do log de transações atrás do mais antigo de: o ponto de verificação mais recente ou o início da transação não confirmada mais antiga. Para a maioria dos bancos de dados, o ponto de verificação mais recente define a parte inativa do log.

Então, quando é que o checkpoint do DB? Só quando for preciso. Ou seja, quando você a encerra, o log fica muito cheio, ou a parte ativa do log fica grande o suficiente para que o DB pense que levaria mais tempo do que recoveryinterval para executá-lo para frente em caso de falha. A ideia por trás dos pontos de verificação pouco frequentes é que o DB sabe que gravar em disco é caro, por isso tenta manter o máximo de memória possível.

Assim, no seu caso, quando você faz dois backups tlog de volta para trás sem ocorrer um ponto de verificação natural ou forçando um ponto de verificação (com o comando checkpoint ), você está fazendo o mesmo backup do log de transações duas vezes ainda é considerado ativo.

    
por 26.05.2010 / 00:56
1

(Esta questão é provavelmente mais adequada para serverfault.com do que para stackoverflow.)

Um backup do log de transações APENAS faz o backup de transações que NÃO JÁ foram submetidas a backup por um backup de log de transação anterior.

Ou seja, para uma recuperação, você precisará do backup completo E de todo e qualquer backup do log de transações desde o início do backup completo.

HTH

Acho que você pode ter backups de log de transações confundidos com backups diferenciais.

link

    
por 25.05.2010 / 23:17