SQL Server: Criando Backup através do SSMS e T-SQL - Parte 1

Uma das tarefas mais comuns para os Administradores de Bancos de Dados é a criação e restauração de Backups. Criando cópia de segurança da base de dados, o DBA está garantindo que as informações cadastradas no banco não serão perdidas em caso de falha no Servidor de Dados (quer seja de hardware ou de software).

Por | @oficinadanet Programação
Uma das tarefas mais comuns para os Administradores de Bancos de Dados é a criação e restauração de Backups. Criando cópia de segurança da base de dados, o DBA está garantindo que as informações cadastradas no banco não serão perdidas em caso de falha no Servidor de Dados (quer seja de hardware ou de software).

No entanto, não basta ao Administrador apenas criar Backups do banco de dados: ao entender os métodos de backup que o SQL Server oferece, o DBA passa a contar com um leque de opções para criar suas políticas de backup de forma a equilibrar eficiência e desempenho do servidor, ao mesmo tempo em que miniminiza a perda de dados.

Backup Engine do SQL Server 2005


Para entender como o SQL Server 2005 realiza o backup do banco de dados, é necessário entender como funciona a sua Backup Engine. Esta Engine é configurada para realizar todas as tarefas relacionadas a cópia dos dados da forma mais rápida possível, minimizando o impacto na performance do Servidor de Dados.

Quando o backup é iniciado, a Engine escreve as páginas de dados no dispositivo de backup (Disco ou Fita) sem se preocupar com a ordem. Graças a isso, o SQL Server pode abrir vários processos para escrever os dados no seu destino, agilizando o processo.

Mas como este processo geralmente ocorre em ambientes de produção (com usuários trabalhando com os dados), podem ocorrer alterações nos dados durante o processo de criação do backup, e isso poderia gerar inconsistência dos dados.
Para evitar este problema, o SQL Server 2005 realiza uma seqüência de tarefas para garantir que ao término da criação da cópia de segurança, todos os dados e objetos existentes na base de dados estão copiados no backup. Estes passos são:
  • Travamento do Banco de Dados: Ao travar o banco de dados, o SQL Server fecha todas as conexões existentes.
  • Criação da marca Checkpoint no Log de Transações: Neste passo, o SQL Server insere uma marca chamada Checkpoint. É através desta marcação que o SQL Server delimita até que ponto do log será feito o backup inicial. As transações que forem realizadas durante o processo de criação são copiadas depois de criado o backup inicial.
  • Liberação do Banco de Dados: Depois de criado o Checkpoint, a base de dados é então liberada para receber as transações durante o processo de backup.
  • Cópia de todas as páginas de dados: Neste passo, ocorre a criação do backup, onde o SQL Server 2005 realiza a cópia de todas as páginas de dados para o destino.
  • Travamento do Banco de Dados: Uma vez copiada todas as páginas de dados, o SQL Server fecha novamente todas as conexões existentes.
  • Criação da marca Checkpoint no Log de Transações: Novamente, o SQL Server insere a marca Checkpoint no Log de Transações.
  • Liberação do Banco de Dados: Depois de criado o novo Checkpoint, o SQL Server libera o banco.
  • Extração de todas as transações que ocorreram durante o processo de Backup: Através dos dois Checkpoints criados no arquivo de log, o SQL Server extrai todas as transações que foram efetuadas entre as duas marcações e adiciona ao backup. Isto garante a consistência dos dados e objetos existentes no backup no horário de termino da sua criação.


Métodos de Backup no SQL Server 2005


O SQL Server 2005 oferece quatro métodos de Backups. Estes métodos são:
  • Full Backup;
  • Differential Backup;
  • Transaction Log Backup;
  • Filegroup Backup.

Full Backup
O Full Backup (Backup Completo) captura todos os dados que estão armazenados no banco de dados. A Engine executa esta tarefa copiando todas as Extents (Uma Extent contém 8 páginas de dados físicas e contínuas, ocupando 64kb de espaço) que possuem objetos do banco alocados. Com este tipo de backup, é possível recriar toda a base de dados. Além disso, ele sempre está disponível para o Administrador, independente do Recovery Model (Full, Bulk Logged ou Simple) configurando no banco em questão. O Full Backup é pré-requisito para criação dos outros tipos de backup.

Differential Backup
O Differential Backup (Backup Diferencial) captura todas as Extents que sofreram alterações desde o ultimo Full Backup. Isso significa que todas as alterações de dados e objetos realizadas no banco são copiadas e armazenadas. As informações das Extents alteradas são armazenadas através do Extents Map.

Extent Map é um conjunto de páginas de dados pertencentes ao banco de dados, onde é armazenado um mapeamento de todas as Extents usadas pela base de dados. Cada Extent é um bit no mapa, de valor inicial 0 (zero). Quando uma Extent sofre alterações, o SQL Server acessa o mapa e marca com o valor 1. Esta é a condição usada pela Backup Engine para realizar o backup diferencial: apenas as Extents que possuem o valor 1 no mapeamento. Quando é realizado o Full Backup, todos os valores são zerados.

O backup diferencial sempre trabalha em conjunto com o backup completo: caso não exista um backup completo do banco, o SQL Server não permite a criação de um backup diferencial. Graças a integração com o Full Backup, o Differential Backup também é independente do Recovery Model configurado na base de dados.
Por fim, vale ressaltar que o backup diferencial não é a mesma coisa de um backup incremental: cada backup diferencial criado pode substituir todos os backups (Diferenciais e de Log) criados anteriormente até o ultimo backup completo, nos caso de restauração da base de dados.

Transaction Log Backup
O Transaction Log Backup (Backup do Log de Transações) trabalha em cima do log ativo, capturando todas as transações finalizadas deste o ultimo backup, qualquer que seja o tipo. Este tipo de backup é incremental: cada vez que é realizado, ele inicia a cópia do ponto em que foi realizado o ultimo backup e copia todas as transações finalizadas gravadas no log. Ao encontrar uma transação em aberto, o SQL Server finaliza a cópia.

Todas as transações que foram copiadas para o backup são marcadas pelo SQL Server. Esta marcação informa ao SQL Server que a transação em questão pode ser substituída por outra nova, ajudando a minimizar os impactos do crescimento do arquivo de log.

Filegroup e File Backup
O Filegroup Backup (Backup do Grupo de Arquivos) e os File Backup (Backup do Arquivo) são alternativas de backup em bancos que trabalham com múltiplos arquivos de dados. Enquanto todos os métodos de backup apresentados até agora realizam a cópia de toda a base de dados, estes backups permitem que você realize a cópia de cada arquivo e/ou grupo de arquivos pertencentes a um banco de dados de forma isolada. O conjunto de backups de todos os arquivos equivale ao um backup completo da base de dados.

A utilização deste tipo de backup apresenta algumas vantagens:
  • Recuperação dos Arquivos de uma mídia danificada: Ao utilizar o método de backup de arquivos, a recuperação do banco de dados é mais rápida nos casos de falha parcial. Imagine um servidor com 3 (três) discos, e em cada um deles está armazenado um arquivo de dados do banco. Caso um destes discos falhe, só é necessário realizar a recuperação do arquivo que está na mídia danificada, e não do banco inteiro.
  • Realização de Backups de Arquivos e do Log simultaneamente: Ao realizar o backup de um arquivo, o SQL Server não realiza a etapa de atualização das transações que foram realizadas no período de criação da cópia, somente a cópia das Extents do banco. Isto permite ao SQL Server a realização dos dois backups de forma independente.
  • Flexibilidade na política de backup: Trabalhar com backup de arquivos permite ao administrador uma maior liberdade no agendamento das tarefas e no gerenciamento das mídias de armazenamento, principalmente nos casos em que o backup completo pode se tornar impraticável (Bases de dados muito extensas e que trabalham com múltiplos arquivos).

    As principais desvantagens da utilização deste tipo de backup são o aumento da carga administrativa e a dependência de todos os backups para restaurar o banco de dados (se a mídia que possui um File ou Filegroup Backup falhar, não é possível a restauração da base de dados).


Filegroup Backup e File Backup requer que o Recovery Model do banco seja Full ou Bulk Logged, já que são os backups dos logs de transações que manterão a consistência do banco. É possível criar Full Backups e Differential Backups de cada arquivo ou grupo de arquivos do banco de dados.

Mais sobre: sql server backup database
Share Tweet
Recomendado
Comentários
Carregar comentários
Destaquesver tudo

Siga nossas contas no Twitter