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.
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.