Backups de transações do SQL Server x logs

12

Eu herdei um banco de dados SQL Server 2008 de tamanho médio e crítico para os negócios e estou tentando entender o planejamento de backup. (Sou desenvolvedor, não DBA.)

A maneira como nosso sistema está configurado agora existem dois sistemas de backup:

  1. Backups completos semanais ( .bak) e .trnbackups de log de transações por hora ( ). Mantemos vários conjuntos desses backups e eles são enviados regularmente para fora do local.
  2. Logs do SQL Server ( .ldf), com o modelo de recuperação definido como Full. Este arquivo está em uma unidade separada do .mdfarquivo principal , mas não é feito o backup.

No caso de uma restauração de emergência (ou ao restaurar backups em uma máquina dev), meu procedimento é usar os .bakarquivos e aplicar os arquivos .trn. Temos um script que torna esse procedimento relativamente simples.

Minhas perguntas:

  1. É possível restaurar o banco de dados a partir do .ldfarquivo? Para que serve isso?
  2. É desnecessariamente redundante ter esses dois logs de transações?
  3. É importante fazer backup do .ldfarquivo?
Hank
fonte

Respostas:

16

Não, não é possível restaurar um banco de dados a partir de um arquivo ldf. O arquivo ldf seria restaurado junto com os arquivos mdf.

Não, não é redundante, pois eles têm dois propósitos diferentes.

É importante fazer backups completos e backups de log de transações. Só ter uma cópia do arquivo ldf não ajuda a restaurar o banco de dados.

Quanto ao que é um arquivo ldf, o ldf é o log de transações. Pense nisso como um buffer circular que registra alterações no seu banco de dados. Quando você atualiza uma linha, a alteração é gravada imediatamente no ldf. Em algum momento no futuro (geralmente menos de cinco minutos), os dados modificados são gravados no arquivo mdf.

Se o servidor travou ou houve uma falha de energia, quando o SQL inicia, ele lê o ldf e aplica novamente (REDO) essas alterações.

Além disso, se você tiver uma transação que não foi confirmada e o servidor travar, todas as alterações feitas por essa transação deverão ser desfeitas para tornar o banco de dados consistente. O arquivo ldf também tem essa tarefa. (DESFAZER)

Eu mencionei acima que o arquivo ldf é circular. Fazer um backup do log de transações (.trn) copia uma parte do arquivo ldf. Após a criação segura de um arquivo trn, o sql pode reutilizar essa parte do arquivo ldf. A série de backups trn cria uma cadeia que, em conjunto, registra todas as modificações feitas no banco de dados. Obviamente, se você nunca fez um backup do log de transações, o arquivo ldf aumentaria e aumentaria.

Em um cenário de desastre, a restauração do backup completo fornece uma cópia do banco de dados a partir do momento em que o backup completo foi concluído. Você pode restaurar os arquivos trn em ordem e atualizar o banco de dados para qualquer ponto no tempo, incluindo o último backup trn.

Estou examinando alguns detalhes importantes, mas o essencial é que o ldf é um arquivo de trabalho que registra alterações recentes no banco de dados. Os arquivos trn são cópias de partes do ldf feitas sob a suposição de que você manterá em segurança para que o sql possa reutilizar o espaço no ldf e, se ocorrer um desastre, você os terá em um local alternativo.

StrayCatDBA
fonte
2
+1 resposta muito boa. A única coisa que eu acrescentaria é que, quando um DBA diz "Banco de Dados", eles significam os arquivos .mdf (o arquivo de dados) e .ldf (o arquivo de log) combinados. Os dois arquivos juntos formam uma única unidade. Em alguns bancos de dados, você pode até ver vários .mdfs e / ou .ndfs (arquivos de dados secundários) também. Esses arquivos também são combinados para formar a única unidade chamada banco de dados. Se você perder algum deles, estará em um modo de desastre e precisará tomar medidas corretivas.
Kenneth Fisher
+1 em uma boa resposta, também não confunda o backup do 'arquivo físico' (o arquivo .mdf / .ndf / .ldfs) enquanto estiver em um sistema, mesmo com um aplicativo de terceiros como o Norton enquanto o MS SQL Server estiver sendo executado como um 'backup' seguro. Esses arquivos são altamente sensíveis; portanto, os arquivos de backup reais do MS SQL Server sempre devem ser criados quando possível.
precisa saber é o seguinte
Obrigado, isso é muito útil. Parece que nossos planos regulares de backup do SQL Server são suficientes e não há necessidade de alterar diretamente os arquivos .mdf ou .ldf.
Hank