Por que é tão importante fazer backup do seu log de transações?


14

No momento, estamos implementando uma solução de backup para um cliente e sua solução ERP usa o SQL Server.

A solução ERP foi montada por outra empresa. E eles estão me dizendo que é super importante fazer backup e truncar o log de transações.

Estive lendo um pouco sobre esse log de transações e não entendo por que isso é tão importante quando já estou fazendo o backup de toda a máquina (de qualquer maneira, estamos usando o ArcServe UDP, que conhece o SQL Server e usa VSS). Entendo que as tarefas de limpeza na VM do SQL Server já estão cuidando do truncamento do log; no entanto, o UDP também permite o truncamento de log do SQL Server.

Entendo que o log de transações pode ser usado para restaurar bancos de dados corrompidos, porque, bem, é um log de todas as transações. Mas eu já tenho um backup por hora de todo o banco de dados, então, por que eu me importaria?


Fora do tópico aqui - existe um site para isso: dba.stackexchange.com
TomTom


1
Sim. E agora comece a perceber que os DBAs normalmente fazem estratégias de backup para bancos de dados. Portanto, uma pergunta específica à administração do banco de dados - como estratégias de backup - pertence a essa área.
TomTom

1
@ TomTom: Desculpe, sou muito novo no Stack Exchange. Eu claramente entendi mal o que "Armazenamento corporativo, backup e recuperação de desastre" abrange. Obrigado por me mostrar o caminho.
Der Hochstapler

isso aqui é o fórum geral. Os bancos de dados são uma área tão grande que eles têm seu próprio sub-local fora da falha de servidor ainda mais genérica.
TomTom

Respostas:


11

Você só precisa fazer isso se o modo de recuperação de banco de dados estiver definido como "cheio". Se estiver definido como "simples", você não precisará fazer um backup do log de transações. Mas atente para a diferença entre essas duas opções!

Primeiro de tudo: se você deseja restaurar o banco de dados para um ponto específico, é necessário usar o modo "completo". (Acho que você pode ajustar o tempo com tanta precisão que pode especificar os milissegundos para o ponto de restauração). No modo "simples", você só pode voltar para o último backup completo .

Se você não fizer backup / truncar o log de transações, ele aumentará o tempo todo (no modo completo). Vi bancos de dados em que o arquivo .trn era duas vezes maior que o próprio banco de dados. Isso depende de quantas vezes as alterações foram feitas no banco de dados.

Outro ponto é que um backup de log normalmente é mais rápido que um backup completo.

Portanto, acho que seu plano de backup para fazer um backup completo a cada hora não é o ideal. Mas isso depende da sua situação:

Se você diz: Tudo bem, se eu posso restaurar o banco de dados até a última hora completa, está tudo bem. -> Você também pode definir o modo de recuperação como "simples" se desejar manter o backup completo a cada hora.

Na minha opinião, uma idéia melhor seria fazer um backup completo no início da manhã e depois fazer um backup do log de transações a cada hora. Deve ser muito mais rápido e você pode restaurar para qualquer ponto do tempo que desejar. E também o seu arquivo .trn não crescerá muito ...

Espero que isto ajude.


Isso é muito útil, obrigado. Mas, como eu tenho um backup por hora de todo o servidor, também tenho o log de transações e posso restaurar o banco de dados em qualquer ponto dentro dessa hora, certo? Os backups executados são incrementais, portanto, eles devem demorar muito mais do que se eu fizesse apenas backup do log, presumo.
Der Hochstapler

2
@OliverSalzburg Se você tiver um log de transações, precisará fazer backup e truncá-lo, caso contrário, ele crescerá excessivamente. Se você alternar para o modo simples, não terá o log de transações para ir a um ponto no tempo e perderá os dados de uma hora.
precisa saber é o seguinte

@OliverSalzburg depende. O que você quer dizer com "backup por hora de todo o servidor"? Parece que você não faz um backup do SQL certo? Se isso estiver correto e você fizer algo como um backup de captura instantânea de todo o servidor / VM, poderá ter o problema de que seu banco de dados não é consistente no backup. Você deve usar algo com o VSS. Mas também falei com especialistas que disseram que eu realmente não deveria confiar nas ferramentas de backup para que eles façam backup do SYSTEM AND DB em um estado consistente ... para que eu separasse o System and DB Backup (se isso for possível no seu ambiente)
frupfrup

ADDON: Eu não acho que o .trn Log esteja incluído em um SQL Full Backup normal ... No Backup, apenas o banco de dados está incluído com todos os dados. Mas no log de transações estão as ALTERAÇÕES do banco de dados. Seu banco de dados funciona sem essas informações. Então eu não acho que eles estão incluídos. Esse é outro motivo pelo qual você precisa fazer backup do log se quiser usar o recurso para voltar ao ponto específico do tempo. Mas agora eu estou querendo saber ... você me confundiu um pouco :-)
frupfrup

1
@OliverSalzburg com base no seu último comentário, se a sua ferramenta de backup oferecer opções de recuperação de truncamento e apontar no tempo, então ela já está fazendo backup dos logs de transação, apenas não explicitamente dizendo que é.
Jason Cumberland

3

Bem. Você se importa, pois se seu modelo de recuperação estiver definido como completo e você não fizer o backup do Log de Transações usando o backup do SQL (e não o backup do servidor), o log de transações continuará a crescer até consumir todo o espaço em disco disponível. (Uma vez vi um colega menor instalar o SQL Server na unidade do sistema e nunca fazer backup do log de transações. Ele utilizava o Windows .)

Sim, ele também será restaurado para um ponto específico no tempo. Até o minuto. Como Twinkles diz, sim, pessoas jogando mesas e coisas do gênero.

Não sei o que você está usando para o backup por hora de todo o banco de dados e se é o mesmo produto que você está usando para toda a máquina. Nesse caso, uma solução de backup que não reconhece SQL não é suportada para restaurações. A quantidade de tempo que o VSS leva para copiar os arquivos MDF e LDF pode causar uma incompatibilidade de registro de data e hora interna, por exemplo.


1

Também gerenciamos vários sistemas ERP. E o problema geralmente é que, à noite, muitas vezes há trabalhos em lote de longa execução que sincronizam dados com outros sistemas. E eles levam algumas vezes uma hora ou mais. Então, o que você deseja fazer em caso de falha é pular para um ponto em que você tenha dados consistentes. (O que significa exatamente entre dois trabalhos em lote.) Se você olhar apenas para o momento, nem sempre poderá saber exatamente qual era o status do banco de dados no momento.

Mas é claro que depende da situação. Se você não possui trabalhos automatizados, etc., pode ficar totalmente bem com um backup por hora.


1

Há várias razões pelas quais você deseja fazer isso:

  1. Um sistema de banco de dados geralmente está ocupado, talvez fazendo milhares de transações por segundo. Os dados podem estar espalhados por vários arquivos em diferentes sistemas de arquivos. Não é trivial garantir que o banco de dados esteja em um estado consistente (também conhecido como utilizável) após a restauração. Se sua solução de backup está pronta, ótimo, mas é melhor você ter certeza disso antes de apostar seu trabalho nela.
  2. Um exemplo: alguém descarta uma tabela com dados importantes por engano. Se você tiver um backup de banco de dados com capacidade de recuperação point-in-time, poderá restaurar os dados rapidamente, sem precisar restaurar o sistema inteiro.
  3. Se o banco de dados estiver no modo de recuperação total, o log de transações do SQL Server aumentará. O espaço de armazenamento no log de transações somente será reutilizado se o backup tiver sido feito. Se você não fizer backup do log de transações regularmente, seu sistema de arquivos será preenchido até que não haja mais espaço. Nesse ponto, tudo será interrompido imediatamente , pois nenhuma nova transação poderá ser iniciada.

1

Quando seu banco de dados cresce além do que você pode fazer backup em uma hora, você precisa de um modelo diferente.

Um backup completo do seu banco de dados truncará seus logs, mas ele precisará estar "ciente do SQL", porque nesse cenário, é o software de backup que informa ao SQL Server o que foi feito o backup e o que truncar.

Como outros mencionam, se você tiver um banco de dados no modelo de recuperação "Completo", o log de transações aumentará indefinidamente, até que você faça um backup completo com reconhecimento de SQL.

A recuperação é realmente o problema aqui, não o Backup. E não é uma decisão técnica, é uma decisão comercial!

Se os proprietários de sua empresa estiverem bem com a perda de uma hora ou mais de suas transações de banco de dados (o que pode ser MUITO difícil ou impossível de refazer!), Seu modelo funcionará. Se eles estiverem OK com o sistema inativo por horas enquanto você restaura o banco de dados inteiro do backup, seu modelo funciona.

No entanto, se sua empresa considerar o sistema ERP como um ativo crítico para sua operação (não é?), Definir um tempo de recuperação máximo aceitável (RTO, objetivo do tempo de recuperação) para seus serviços críticos será uma decisão comercial.

Além disso, os proprietários da empresa ou partes interessadas no sistema precisam definir quantos dados estão dispostos a arriscar a perder em um incidente, também conhecido como RPO (Recovery Point Objective).

A resposta, se você perguntar a eles, pode ser "Nenhum dado pode ser perdido! O sistema ERP deve estar disponível 24/7/365!" ... o que todos sabemos é altamente improvável que seja econômico. Se você lhes apresentar o custo associado à construção de um sistema totalmente redundante e ininterrupto, eles apresentarão um valor mais razoável ..;)

O ponto é que, se você pode evitar a perda de transações, está salvando sua empresa potencialmente centenas ou milhares de horas de trabalho perdidas. Isso equivale a enormes economias em qualquer empresa e cresce com o tamanho da sua empresa ...


+1 para a recuperação é crucial, não o backup. e trazer os usuários de negócios para a decisão.
RateControl

1

Todos tiveram ótimas respostas para isso, mas eu gostaria de acrescentar outra nota importante ... ou duas.

Conhecer os detalhes dos modelos de recuperação do SQL Server e os requisitos de negócios para perda de dados são muito importantes; no entanto, nesse caso, é essencial que você entenda como o seu produto de backup funciona com o SQL Server. (Com base nos comentários acima, parece que você está fazendo backup de volumes de disco via cópia do VSS, o que significa que os backups do SQL Server podem ou não ser necessários, além disso.)

Tendo avaliado recentemente um produto similar, alguns dos pontos importantes que você talvez precise perguntar são:

  • Como as restaurações são executadas em um determinado momento para um banco de dados em recuperação completa?
  • Como o backup inicial é tratado para um novo banco de dados em recuperação completa?
  • O produto de backup requer que os backups de log do SQL Server sejam restaurados em um determinado momento? (No meu caso, a resposta foi sim.)
  • Sua infraestrutura de armazenamento pode lidar com o volume de dados das cópias / diferenciais do VSS (em um determinado intervalo), além da carga normal do SQL?

Espero que isso seja útil.

A experiência que minha equipe teve com nossa avaliação recente forneceu algumas respostas muito interessantes para as perguntas acima. Uma coisa é certa, os backups são mais complexos para nós com um produto de backup do VSS.


0

Como muitos outros já disseram, se você estiver usando uma ferramenta de terceiros para fazer backup / captura instantânea da VM ou do armazenamento, ainda corre o risco de não ter um backup válido. Todas as ferramentas de terceiros que gerenciam backups do SQL Server serão implementadas e conectadas ao SQL Server usando o VSS. Ele faz isso para solicitar que o SQL Server encerre todas as E / S nos arquivos de dados para que um instantâneo consistente possa ser obtido. Caso contrário, você poderá ter muitas transações em vários estados e uma restauração não saberá se essas transações podem ser revertidas ou retrocedidas.

Não trabalhei com todas as ferramentas de instantâneo de VM / Storage de terceiros, mas as que trabalhei nunca conseguiram capturar instantaneamente o armazenamento onde estavam localizados os bancos de dados do sistema - o SQL Server não pode desativar esses bancos de dados. Todos eles fizeram backup desses bancos de dados de maneira transmitida - ou seja, emitindo os comandos BACKUP DATABASE e, em seguida, capturando o próprio arquivo de backup.

Além disso, como muitos já disseram, se você estiver no modelo de recuperação COMPLETO e não emitir instruções BACKUP LOG regularmente, o log de transações continuará a crescer até que não haja mais espaço no disco.

A verdadeira pergunta que você precisa fazer, e eu talvez a tenha esquecido acima ... você restaurou com êxito desses backups várias vezes e está satisfeito com a consistência dos dados nessas restaurações. Pessoalmente, mesmo isso não seria suficiente para mim, ainda parece um rolar dos dados, e isso é algo que um bom DBA nunca leva quando se trata de backup e recuperação.


0

Reconheça que os logs de transações não são simplesmente um mecanismo de recuperação. A manutenção adequada do log também pode desempenhar um papel crítico no desempenho geral do banco de dados (ou seja, rendimento da transação).

O backup frequente de seus arquivos de log faz algumas coisas:

  1. Reduz a contagem de VLF nos arquivos de log físico, o que é bom para o desempenho.
  2. Você está melhor preparado para usar os backups de log no caso de precisar recuperar um banco de dados.
  3. É um pouco mais rápido que um backup completo

Se você conseguir fazer um backup completo a cada hora, não tenho certeza de quanto se beneficiaria dos backups de log mais frequentes. Afinal, como eu o entendo, um backup completo também fará o backup do log necessário para garantir uma restauração completa.

Por outro lado, se seu aplicativo gerar toneladas de transações entre seus backups completos por hora, isso pode explicar por que os desenvolvedores originais sugeriram uma manutenção mais granular do log. Muitas transações podem aumentar a contagem de VLF em seus logs, o que pode incorrer em uma penalidade de desempenho até que o log seja truncado. Vi isso expresso como um "tempo limite da consulta expirado" erro de em um aplicativo (pouco antes de travar).

As recomendações relacionadas à manutenção do log de transações são descritas muito bem neste artigo 8 Etapas para melhorar o rendimento do log de transações . Além disso, este artigo As principais dicas para manutenção eficaz do banco de dados menciona uma contagem VLF um tanto arbitrária a ser apontada (<200), que funcionou muito bem para mim.


0

Outras pessoas já forneceram a maioria dos motivos de um backup de tradução, etc. Parece haver alguma dúvida sobre o motivo de esta ser uma boa estratégia quando você já faz backup do servidor.

Algumas boas razões surgiram para mim que não estão acima. E se o aplicativo de terceiros falhar em fazer um backup, você pode restaurar? Você tentou restaurar seu backup? Que tal para um novo servidor que você acabou de criar a partir de seus modelos (pense em DR)? E quanto a outro servidor em seu domínio que tenha um agrupamento diferente? ou instância SQL?

Tomo backups redundantes por nenhuma outra razão, a não ser que seu aplicativo de terceiros não seja a maneira mais rápida de restaurar. Às vezes, o armazenamento no qual seu aplicativo de terceiros está salvando também é afetado ou está corrompido por seus próprios motivos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.