Tipos de backup no SQL Server
Introdução
Backup do banco de dados sempre é a tarefa mais importante de todo o DBA e é algo também que precisa sempre estar em nossa mente como: boas praticas, performance e outros. Nessa segunda postagem venho aqui mostrar um pouco sobre o banco de dados SQL SERVER 2005, e para esse primeiro assunto nada mais justo do que se falar de algo tão importante como tipos de backup, onde podemos através dessa forma garantir que por algum problema não percamos dados. Abaixo vou mostrar os tipos de backups existentes para o SQL SERVER 2005.
Backup Full
Têm como propósito realizar o backup de todos os dados armazenados em um banco. Este tipo de backup leva todas as características e atributos do objeto do banco de dados.Quais são os passos que o database engine realiza para garantir o sucesso do backup?
- O database engine trava o banco de dados.
- O acesso ao mesmo é proibido.
- É estabelecida uma marca no log de transação onde indica que ali foi o ponto de início do backup.
- Libera o banco de dados do lock.
- É realizado backup de todas as páginas de dados.
- Trava o banco novamente não deixando nenhuma conexão ser feita.
- Estabelece uma marca no log de transação.
- Libera o banco do lock, e extrai e libera todas as transações existentes entre as duas marcas e adiciona o intervalo ao backup.
Backup Diferencial
Captura todas as modificações que tenham ocorrido desde o último backup full, o maior propósito de um backup diferencial é reduzir o numero de transactions log’s backups que precisam ser restaurados em um processo de restore. O backup diferencial não é um backup incremental. Pois um backup incremental captura qualquer modificação que tenha ocorrido desde o ultimo backup incremental. Logo, para realizar um restore de um backup incremental precisa-se apenas de todos os backups incrementais. O SQL Server não trabalha com backup incremental. Um restore do backup diferencial é feito da seguinte maneira: recupera-se o último backup full, e em seguida, o último backup diferencial realizado, pois este já possuirá todo o conteúdo dos outros backups diferenciais realizados anteriormente, desde o último Full.
Backup de Log de Transação
Pode ser realizado somente em bancos que foram setados o modo de recovery para FULL ou BULK e que não tenham sofrido um mínimo de log’s transactions, só pode ser executado depois de um backup full. Esse backup grava só o que é obtido a partir do LSN. LSN (Log Sequence Number ), esse log é setado na execução do backup anterior, é uma marca que tem no arquivo de log onde me diz até a onde o backup anterior foi gravado. Significa que a partir dessa marca eu não tenho nenhum backup realizado. O restore desse método serve para que você possa restaurar o banco de dados a partir de um determinado ponto ou a partir de uma determinada hora. O restore de log pode ser aplicado dentro de um backup full ou ainda de um backup diferencial.
Backup de Filegroup
Esse backup é uma alternativa na estratégia de backup, ao invés de executar um backup de toda a base, você pode executar o backup de um único Filegroup, como podemos realizar o backup de partes do banco de dados, o recovery model precisa estar setado para FULL RECOVERY ou BULK RECOVERY.
Backup Espelho (mirrored)
Consiste em duplicar o backup, ou seja, criar cópias adicionais do backup realizadas no local diferente que você esta realizando no primeiro backup. Como ter apenas um backup pode ser considerado um ponto de falha, o SQL SERVER 2005 inseriu a clausula no backup chamado de “MIRROR TO” lembrando que esse tipo de backup não esta disponível para o SQL SERVER Express, podemos também criar até quatro espelhos do backup. O único ponto a ser levado em consideração é que o lugar onde você precisa fazer o backup (fita, disco) precisa ser o mesmo dos espelhos.
Backup parcial
Esse tipo de backup é uma nova funcionalidade que foi inserida no SQL SERVER 2005, nas versões anteriores se tivéssemos filegroups que fossem read-only o backup continha esse arquivo dentro também. Já no SQL SERVER 2005 com a inserção da clausula “READY_WRITE_FILEGROUP” esse filegroup passa não ser mais backupeado, e assim nós diminuímos o tempo de backup e a quantidade de fitas usadas, fazendo assim que o backup engine se preocupe apenas com o que foi modificado. Para esse processo, o restore também é uma nova funcionalidade do SQL SERVER 2005, que permite que quando executamos um restore, o restante do database fique disponível, esse processo tira proveito dos filegroups exceto filegroup primário que possui um status independente do database. Outro processo de restore que não é muito comum é o de restaurar paginas corrompida. Em versões anteriores do SQL SERVER o corrompimento de uma pagina causava um erro no servidor e poderia deixar a base inteira como OFFLINE. No SQL SERVER 2005 criou-se um processo alternativo para a execução que é o PAGE_VERIFY_CHECKSUM, depois de habilitar a verificação no banco de dados através desse comando, qualquer pagina que se corrompa é colocada em quarentena, porem essa opção vem desabilitada por default, pois gera um overhead no servidor apesar de pequeno. Cada vez em que uma pagina precisa ser lida ou escrita no SQL SERVER 2005 o próprio SQL calcula um CHECKSUM para a pagina, se o CHECKSUM calculado não for igual ao anterior a pagina de dados esta corrompida e transação nesse caso sofre um rollback. O SQL SERVER 2005 tem uma opção de restore que mesmo que a fita do backup apresente erros em suas trilhas o restore é continuado, fazemos isso através do comando “WITH CONTINUE_AFTER_ERROR”, porem o SQL SERVER não garante que esses arquivos poderão ser usados futuramente. Outra opção que podemos utilizar para verificar se os nossos backups estão corretos, para isso o SQL SERVER prove o comando “RESTORE VERIFYONLY FROM caminho do arquivo”.
Conclusão
No SQL Server foi possivel visualizar que temos varias formas de realizar o backup do nosso banco de dados, mesmo para aqueles que trabalham com VLDB (Very Large Database), sendo possivel realizar apenas partes do backup. Utilizando algumas dessas tecnicas em conjunto podem trazer para a empresa o maximo de desempenho e de garantia dos seus dados.