P>

capaSQL24.JPG

Clique aqui para ler todos os artigos desta edição

 

Backups com SQL Server 2000 - Parte IV

Point-in-Time recovery, restaurações de backups de filegroup e diferenciais

Paulo Ribeiro

Leitura obrigatória: SQL Magazine 20, Utilizando Filegroups para Ganho de Performance e Gerenciamento de Espaço.

Leitura obrigatória: SQL Magazine 21, Backups com SQL Server 2000 Parte I - Modelos de Recovery.

Leitura obrigatória: SQL Magazine 22, Backups com SQL Server 2000 Parte II - Executando Backups.

Leitura obrigatória: SQL Magazine 23, Backups com SQL Server 2000 Parte III - Restaurando Backups.

 

Continuaremos nessa matéria com o assunto iniciado na edição anterior: restauração de databases. Já vimos diversos exemplos de restauração, realizamos também simulações de recuperação de dados em ambientes de produção a partir de arquivos de log. Agora, partiremos para cenários mais abrangentes de restauração, envolvendo backups diferenciais, filegroups e o chamado point-in-time recovery. Boa leitura!

Restauração a partir de backups diferenciais

Relembrando:

·         Um backup diferencial irá copiar somente as páginas alteradas desde o último backup de database (backup FULL);

·         A restauração de um backup diferencial é um processo de duas etapas: deve-se restaurar o backup de database, seguido do último backup diferencial;

·         Backups diferenciais são freqüentemente utilizados em conjunto com backups de log para diminuir número de arquivos e tempo total gasto no processo de restauração.

 

Para exemplificar um processo de restauração que inclui backups diferenciais, foram reproduzidos uma série de eventos conforme apresentado na Tabela 1. Nosso objetivo será reconstituir o database dbTeste após um crash na unidade D:, onde está localizado o filegroup secundário do database dbTeste (FG_INDICE). O script de criação do database dbTeste encontra-se na Listagem 1.

 

Listagem 1. Script para criação do database dbTeste.

use master

IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'dbTeste')

         DROP DATABASE [dbTeste]

GO

 

-- Criando o database dbTeste

CREATE DATABASE [dbTeste] 

ON PRIMARY

(

  NAME = N'dbTeste_Data_Prim',

  FILENAME = N'c:\temp\dbTeste_Data_Prim.MDF' ,

  SIZE = 5,

  FILEGROWTH = 10%

)

,

FILEGROUP FG_INDICE

(

  NAME = N'dbTeste_Data_Sec',

  FILENAME = N'd:\temp\dbTeste_Data_Sec.NDF', -- se você não possui unidade D:, troque para C:

  SIZE = 5,                                  

  FILEGROWTH = 10%

)

LOG ON

(

  NAME = N'dbTeste_log',

  FILENAME = N'c:\temp\dbTeste_log.LDF' ,

  SIZE = 3,

  FILEGROWTH = 10%

)

GO

 

-- alterando o recovery do database para FULL para que possamos trabalhar com backups de log

alter database dbTeste set recovery FULL

GO


 

Tabela 1. Cenário de um ambiente de produção que utiliza backups diferenciais e log.

Instante

Operação

Comando

t0

Backup Full

use dbTeste

go

backup database dbTeste to disk='C:\temp\DUMP_dbTeste.bak'

with NAME='[t0] Backup FULL dbTeste',INIT

t1

Movimentação

create table teste (codigo int PRIMARY KEY, descricao char(20)) on FG_INDICE

t2

Backup de Log

backup log dbTeste to disk='C:\temp\DUMP_dbTeste.bak'

with name='[t2] Backup log dbTeste '

t3

Movimentação

insert into teste values (3,'produto-3')

t4

Backup de Log

backup log dbTeste to disk='C:\temp\DUMP_dbTeste.bak'

with name='[t4] Backup log dbTeste '

t5

...

Quer ler esse conteúdo completo? Tenha acesso completo