Backups diferenciais (SQL Server)

Aplica-se a:SQL Server

Este artigo sobre backup e restauração é relevante para todos os bancos de dados SQL Server.

Um backup diferencial é baseado no backup de dados completo anterior mais recente. Um backup diferencial captura apenas os dados que foram alterados desde o backup completo. O backup completo no qual um backup diferencial se baseia é conhecido como a base do diferencial. Os backups completos, com exceção dos backups somente cópia, podem servir como base para uma série de backups diferenciais, inclusive backups de banco de dados, backups parciais e backups de arquivo. O backup de base para um backup diferencial de arquivo pode ser contido dentro de um backup completo, um backup de arquivo ou um backup parcial.

Benefícios

A criação de um backup diferencial pode ser muito mais rápida do que a criação de um backup completo. Um backup diferencial registra apenas os dados que mudaram desde o backup completo no qual se baseia o backup diferencial. Isso facilita os backups de dados frequentes, o que diminui o risco de perda de dados. No entanto, antes de restaurar um backup diferencial, é necessário restaurar sua base. Portanto, a restauração de um backup diferencial precisará, necessariamente, de mais etapas e mais tempo do que a restauração de um backup completo, pois serão necessários dois arquivos de backup.

Backups de banco de dados de diferencial são especialmente úteis se um subconjunto de um banco de dados é modificado mais frequentemente do que o restante do banco de dados. Nesses casos, backups de banco de dados de diferencial lhe permitem fazer backup frequentemente sem a sobrecarga de backups de banco de dados completos.

No modelo de recuperação completa, o uso de backups diferenciais pode reduzir o número de backups de log que você precisa restaurar.

Visão geral dos backups diferenciais

Um backup diferencial captura o estado de qualquer extensão (coleções de oito páginas fisicamente contíguas) que foi alterada entre o momento em que a base diferencial foi criada e o momento em que o backup diferencial é criado. Isso significa que o tamanho de um backup diferencial depende da quantidade de dados alterada desde a base. Em geral, quanto mais antiga a base, maior será o novo backup diferencial. Em uma série de backups diferenciais, é provável que uma extensão atualizada com frequência contenha dados diferentes em cada backup diferencial.

A ilustração a seguir mostra como funciona um backup diferencial. A figura exibe 24 extensões de dados, dentre as quais 6 que foram alteradas. O backup diferencial contém somente estas seis extensões de dados. A operação de backup diferencial baseia-se em uma página de bitmap que contém um bit para cada extensão. Para cada extensão atualizada desde a base, o bit é definido para 1 no bitmap.

Diagram of how the differential bitmap identifies changed extents.

Observação

O bitmap diferencial não é atualizado por um backup do tipo somente cópia. Assim, um backup do tipo somente cópia não afeta os backups diferenciais subsequentes.

Um backup diferencial feito logo após sua base pode ser significativamente menor que a base diferencial. Isto economiza espaço de armazenamento e tempo de backup. Porém, como o banco de dados é alterado com o passar do tempo, a diferença entre o banco de dados e uma base diferencial específica aumenta. Quanto maior o tempo entre um backup diferencial e sua base, maior será o tamanho do backup diferencial. Isto significa que os backups diferenciais podem por fim se aproximar do tamanho da base diferencial. Um backup diferencial grande perde as vantagens de um backup mais rápido e menor.

Como os backups diferenciais aumentam em tamanho, a restauração de um backup diferencial pode aumentar de forma significativa o tempo necessário para restaurar um banco de dados. Por isso, recomendamos que você use um backup completo novo em intervalos definidos para estabelecer uma nova base diferencial para os dados. Por exemplo, você poderia usar um backup completo semanal de todo o banco de dados (isto é, um backup completo do banco de dados) seguido de uma série regular de backups diferenciais do banco de dados durante a semana.

No momento da restauração, antes de você restaurar um backup diferencial, você deve restaurar sua base. Em seguida, restaure somente o backup diferencial mais recente para avançar o banco de dados até o momento em que foi criado esse backup diferencial. Normalmente, você restauraria o backup completo mais recente seguido pelo backup diferencial mais recente que é baseado nesse backup completo.

Backups diferenciais de bancos de dados com tabelas com otimização de memória

Para obter informações sobre backups diferenciais e bancos de dados com tabelas com otimização de memória, consulte Fazendo backup de um banco de dados com tabelas com otimização de memória.

Backups diferenciais de bancos de dados somente leitura

Para bancos de dados somente leitura, backups completos usados isoladamente são mais fáceis de ser gerenciados do que quando são usados com backups diferenciais. Quando um banco de dados é somente de leitura, o backup e outras operações não podem alterar os metadados que estão contidos no arquivo. Portanto, os metadados exigidos por um backup diferencial, como o número de sequência de log no qual o backup diferencial começa (o LSN da base diferencial), é armazenado no banco de dados master. Se a base diferencial for feita quando o banco de dados é somente de leitura, o bitmap diferencial indicará mais alterações do que as ocorridas de fato desde o backup de base. Os dados extras são lidos pelo backup, mas não são gravados nele, pois o differential_base_lsn armazenado na tabela do sistema do conjunto de backup é usado para determinar se os dados realmente foram alterados desde a base.

Quando um banco de dados somente leitura é recriado, restaurado ou desanexado e anexado, as informações básicas diferenciais são perdidas. Isso ocorre porque o banco de dados master não é sincronizado com o banco de dados de usuário. O Mecanismo de Banco de Dados do SQL Server não pode detectar ou impedir esse problema. Um backup diferencial posterior não terá base no backup completo mais recente e poderá gerar resultados inesperados. Para estabelecer uma nova base diferencial, recomendamos que você crie um backup de banco de dados completo.

Práticas recomendadas para usar backups diferenciais com um banco de dados somente leitura

Após criar o backup completo de um banco de dados somente leitura, se você pretende criar um backup diferencial subsequente, faça backup do banco de dados master.

Se o banco de dados master foi perdido, restaure-o antes de restaurar o backup diferencial de um banco de dados de usuário.

Se você desanexar e anexar um banco de dados somente leitura para o qual planeja usar backups diferenciais posteriormente, assim que possível, faça um backup completo do banco de dados somente leitura e do banco de dados master.

Confira também