Criação e Restauração de Backup no SQL Server 2005 – Parte III - Continuação

Aprenda alguns recursos e funcionalidades avançados que o SQL Server 2005 oferecer para a criação, manutenção e restauração de backups.

Herleson Paiva Pontes

Nos dois primeiros artigos da série apresentamos todos os conceitos e recursos oferecidos pelo SQL Server 2005 para a criação e restauração de diversos tipos de cópias de segurança dos dados. Mostramos também como gerenciar estas cópias através do Management Studio e da linguagem T-SQL.

Mas o SQL Server não se limita apenas aos fundamentos apresentados até agora. Existem algumas funcionalidades e recursos que auxiliam os processos de Backup e Restore, resultando em diversas vantagens, tais como: economia de tempo e trabalho do Administrador; minimização da perda de dados; eficiência na organização e manipulação das cópias; e redução do tempo em que a base de dados está indisponível para seus usuários.

Neste artigo, apresentaremos alguns recursos e funcionalidades avançadas que o SQL Server 2005 oferecer para a criação, manutenção e restauração de backups. Ao longo deste artigo mostraremos exemplos práticos destes recursos, além de exemplificar os seus cenários de aplicação. Este artigo é o terceiro de uma série de três, que mostra como criar e restaurar backups.

Para este artigo, utilizaremos o SQL Server 2005 Evaluation Edition, disponíveis para download no site da Microsoft: http://www.microsoft.com/sql/default.mspx.

 

Conjunto de Mídias (Media Set) e Conjunto de Backups (Backup Set)

Durante o processo de criação de um backup, o Administrador informa ao SQL Server o destino da cópia a ser criada. Normalmente, esta cópia será armazenada em um único arquivo ou em uma fita. Mas, em alguns cenários, o DBA precisa distribuir o backup em múltiplos destinos, dividindo um único backup entre vários dispositivos.

A divisão de um backup pode ocorrer, por exemplo, quando o tamanho da base de dados é maior que o espaço livre dos dispositivos existentes no ambiente. Ou então quando o DBA decide dividir a carga do processamento da criação do backup entre os vários dispositivos da rede, minimizando o impacto na performance e agilizando o processo de criação do backup.

Nestes casos, para facilitar a administração dos backups distribuídos, o SQL Server oferece o recurso conhecido como conjunto de mídias.

Um conjunto de mídias (Media Set) possui um ou mais dispositivos físicos de backup, onde as parte de um backup são agrupadas e identificadas por um único nome. Desta forma, ao armazenar o backup em um Media Set, o SQL Server escreve parte dos dados do backup em cada dispositivo que faz parte do conjunto, dividindo o backup. Este conceito funciona de forma semelhante ao RAID 0 (Disk Striping).

Um Media Set pode possuir vários backups armazenados. Cada conjunto de arquivos distribuídos pelo conjunto de mídias que compõem um único backup é chamado de conjunto de Backups (Backup Set). Ou seja: um Media Set contém um ou mais Backup Set.

Para criar um novo conjunto de mídia, o comando BACKUP oferece a cláusula MEDIANAME para informar no nome do novo conjunto de mídias. A Listagem 4 mostra um exemplo.

Listagem 4. Sintaxe para a criação de um backup com Media Set.

--Setando o banco a ser utilizado

USE master;

--Criando um backup com Media Set composto de três discos

BACKUP DATABASE AdventureWorks TO

DISK = 'C:\Backup\P1.bak', DISK = 'C:\Backup\P2.bak', DISK = 'C:\Backup\P3.bak'

WITH FORMAT, MEDIANAME = 'Nome_Conjunto_Mídia';

 

No exemplo acima, o SQL Server cria um Backup Set e o armazena no Media Set. Uma vez criado o conjunto de mídias, os backups subseqüentes serão adicionados após o último Backup Set armazenado em cada dispositivo.

No exemplo abaixo, o SQL Server adiciona um novo Backup Set ao conjunto de mídia já existente (Listagem 5).

Listagem 5. Criação de um backup diferencial com Media Set.

--Setando o banco a ser utilizado

USE master;

--Criando um backup com Media Set composto de três discos

BACKUP DATABASE AdventureWorks TO

DISK = 'C:\Backup\P1.bak', DISK = 'C:\Backup\P2.bak', DISK = 'C:\Backup\P3.bak'

WITH MEDIANAME = 'Nome_Conjunto_Mídia', DIFFERENTIAL;

 

Ao término do processo, os 3 (três) dispositivos utilizados no exemplo possuirão 2 (dois) Backup Set: um criado pelo backup completo e outro pelo diferencial. A Figura 5 possui um esquema desta divisão.

15-08-2007pic01.JPG
Figura 5
. Distribuição dos Backup Set criados.

Para restaurar o backup criado, basta informar o nome do conjunto, utilizando a cláusula MEDIANAME no comando RESTORE. A sintaxe é idêntica ao da criação de um backup.

Mas, a funcionalidade mais interessante deste recurso fica por conta da propriedade FILE. Através desta opção, o Administrador pode informar ao SQL Server 2005 qual conjunto de backups ele deseja restaurar. No exemplo, cada arquivo *.bak possui 2 (dois) Backup Set. Desta forma, se o Profissional deseja restaurar apenas o backup completo, FILE será igual a 1; Caso ele queira restaurar apenas a cópia diferencial, FILE receberá o valor 2; e assim sucessivamente. A Listagem 5 possui a sintaxe para realizar uma restauração de cada um dos backups existentes no Media Set.

Listagem 5. Sintaxe para a restauração de um backup com Media Set.

--Setando o banco a ser utilizado

USE master;

--Restaurando o Backup Completo do Media Set

RESTORE DATABASE AdventureWorks FROM

DISK = 'C:\Backup\P1.bak', DISK = 'C:\Backup\P2.bak', DISK = 'C:\Backup\P3.bak'

WITH MEDIANAME = 'Nome_Conjunto_Mídia', FILE=1, NORECOVERY;

 

--Restaurando o Backup Completo do Media Set

RESTORE DATABASE AdventureWorks FROM

DISK = 'C:\Backup\P1.bak', DISK = 'C:\Backup\P2.bak', DISK = 'C:\Backup\P3.bak'

WITH MEDIANAME = 'Nome_Conjunto_Mídia', FILE=2, RECOVERY;

 

Este recurso está disponível em todas as edições do SQL Server 2005.

LABELONLY, HEADERONLY, VERIFYONLY e FILELISTONLY

No dia-a-dia de trabalho, o Administrador do Servidor de Dados gerencia múltiplas bases de dados. Cada uma destas bases com seus respectivos backups, armazenados em diversos dispositivos espalhados pelo ambiente. Nestes cenários, encontrar e gerenciar as informações de forma ágil e segura pode fazer a diferença em casos de falha no ambiente.

Logo, ações como: determinar o conteúdo de cada dispositivo de backup, localizar o backup desejado em meio ao diversos dispositivos, verificar a situação das cópias de segurança e descobrir quais arquivos de dados e de log estão em um destino; são de grande importância em momentos de dificuldade.

O SQL Server oferece quatro comandos T-SQL que retornam informações e verificam a integridade dos diversos backups existentes no ambiente. São eles:

·         RESTORE LABELONLY;

·         RESTORE HEADERONLY;

·         RESTORE VERIFYONLY;

·         RESTORE FILELISTONLY.

A grande vantagem destes comandos está na possibilidade de extrair informações do backup, sem a necessidade de restaurá-los. Desta forma, o administrador evita o trabalho de restaurar cada backup para descobrir e aplicar o seu conteúdo.

Estes recursos estão disponíveis em todas as edições do SQL Server 2005.

RESTORE LABELONLY

O comando RESTORE LABELONLY retorna informações sobre as mídias (Media Set) armazenadas em um dispositivo. Este comando é utilizando nos casos onde o Administrador precisa descobrir a qual conjunto de mídia aquele dispositivo faz parte. A Listagem 6 exibe um exemplo do LABELONLY.

Listagem 6. Sintaxe do LABELONLY.

--Setando o banco a ser utilizado

USE master;

--Exibindo as informações do dispositivo

RESTORE LABELONLY FROM DISK='C:\Backup\P1.bak'

 

RESTORE HEADERONLY

O comando RESTORE HEADERONLY retorna informações sobre os backups (Backup Set) armazenados em um dispositivo. É um dos comandos mais utilizando, pois retorna para o Administrador todos os backups armazenados no dispositivo, seus tipos e de quais bases eles pertencem. A Listagem 7 exibe um exemplo do HEADERONLY.

Listagem 7. Sintaxe do HEADERONLY.

--Setando o banco a ser utilizado

USE master;

--Exibindo as informações do dispositivo

RESTORE HEADERONLY FROM DISK='C:\Backup\P1.bak'

 

RESTORE VERIFYONLY

O comando RESTORE VERIFYONLY realiza uma checagem na integridade dos backups de um dispositivo, verificando se o mesmo é legível. No entanto, este comando não verifica a estrutura de dados existente dentro do backup. Se o backup for válido, o SQL Server retorna uma mensagem de sucesso. A Listagem 8 exibe um exemplo do VERIFYONLY.

Listagem 8. Sintaxe do VERIFYONLY.

--Setando o banco a ser utilizado

USE master;

--Verificando o dispositivo

RESTORE VERIFYONLY FROM DISK='C:\Backup\P1.bak', DISK='C:\Backup\P2.bak', DISK='C:\Backup\P3.bak';

 

O RESTORE VERIFYONLY verifica somente o Backup Set inteiro. É por isto que na Listagem 8 possui referência a todos dos dispositivos que compõem o backup.

Por fim, uma observação importante: em versões anteriores do SQL Server, o comando RESTORE VERIFYONLY só realizava a verificação do cabeçalho dos backups. Nestas versões, o VERIFYONLY pode retornar verdadeiro até mesmo se o backup inteiro estiver inválido ou a mídia apresentar algum setor com problemas de leitura, bastando para isto que o cabeçalho estivesse intacto.

No SQL Server 2005, o VERIFYONLY começa realizando a verificação no cabeçalho. Depois do cabeçalho validado, ele verifica o Checksum do backup, realiza a leitura nas páginas internas, gera um novo Checksum e o compara com o do backup. Desta forma, o SQL Server 2005 oferece uma maior garantia acerca da validade do backup.

RESTORE FILELISTONLY

O comando RESTORE FILELISTONLY retorna informações sobre os arquivos de dados e log (*.mdf, *.ndf e *.ldf) armazenados em um dispositivo. A Listagem 9 exibe um exemplo do FILELISTONLY.

Listagem 9. Sintaxe do FILELISTONLY.

--Setando o banco a ser utilizado

USE master;

--Exibindo as informações do dispositivo

RESTORE FILELISTONLY FROM DISK='C:\Backup\P1.bak'

 

Restaurando com Erros na Mídia

Perder a base de dados é uma situação que nenhum administrador deseja passar. Pior ainda é descobrir que o único backup disponível está corrompido e que o SQL Server não consegue recuperá-lo.

Em versões anteriores, problemas relacionados à mídia raramente eram detectados antes do processo de criação de BACKUP se iniciar. Depois, ao utilizar o comando RESTORE, o SQL Server removia toda a base de dados (caso já existisse) e começava o processo de restauração. Ao indicar o erro, o DBA então era obrigado a abortar e o processo terminava naquele instante, resultando em uma base inválida.

O SQL Server 2005 trás uma opção para o RESTORE, para os casos em que a mídia possui áreas defeituosas. Ao utiliza a cláusula CONTINUE_AFTER_ERROR, o SQL Server ignora os setores defeituosos da mídia, realiza a restauração dos setores legíveis e finaliza o processo, definindo o banco de dado no estado emergencial. Neste estado, é possível se conectar ao banco e realizar comandos SELECT, mas não é possível a alteração de dados. Desta forma, o administrador consegue acessar os dados legíveis e copiá-los para uma nova base. A Listagem 10 possui a sintaxe do CONTINUE_AFTER_ERROR.

Listagem 10. Sintaxe do CONTINUE_AFTER_ERROR.

--Setando o banco a ser utilizado

USE master;

--Restaurando um backup, ignorando os erros

RESTORE DATABASE AdventureWorks FROM DISK='C:\Backup\BackupTSQL.bak' WITH CONTINUE_AFTER_ERROR;

 

Conclusão

O SQL Server 2005 oferece ao Administrador vários recursos que facilitam a criação, o gerenciamento e a restauração de backups. Neste artigo apresentamos alguns destes recursos, tais como a criação de dispositivos de backup, espelhamento, conjunto de mídias e restauração em caso de problemas com a mídia. Mostramos também algumas propriedades do RESTORE, que permite ao Administrador extrair informações dos dispositivos e realizar verificações de integridade dos backups.