Utilizando Backup de Filegroup no SQL Server – Parte 1

Quando criamos um banco de dados, estamos definindo um local para armazenar informações de um sistema, aplicação ou aquele simples programa para arquivar receitas de bolo . Durante o processo de criação temos a possibilidade de especificar uma série de propriedades para nosso banco de dados, uma destas propriedades é a chamada de Filegroup  (Grupo de Arquivos).

O Filegroup representa um agrupamento de arquivos criados com a finalidade de armazenar os objetos existentes em um banco de dados, em especial tabelas e índices.  Podemos utiliza-lo de diversas formas, como por exemplo, para organizar a distribuição das informações entre suas respectivas tabelas e índices.

Neste artigo, vamos destacar uma das formas para se trabalhar com Filegroups , o chamado Backup de Filegroups, onde temos à disposição a possibilidade de gerar cópias de segurança dos nossos grupos de arquivos de forma completa ou isolada.

Demonstrarei como é possível trabalhar com um banco de dados composto por dois Filegroups, onde identificamos cada um deles como Primary e Secondary. Este banco de dados será nomeado como SQLMagazine . Após criarmos nosso banco de dados, serão executados alguns procedimento , iniciando pela criação de quatro novas tabelas.  Para apresentar como podemos trabalhar com o filegroup, vamos dividir a forma de armazenamento das tabelas , duas tabelas  serão armazenadas fisicamente no filegroup Primary e outras duas no filegroup Secundary.

Após a criação e alocação das tabelas em seus respectivos filegroups, serão executados os demais procedimentos , com objetivo de manter nosso ambiente seguro caso ocorra alguma falha ou erro durante a utilização de alguns  passos apresentados posteriormente . Um dos procedimentos a ser realizado é chamado de backup full .

Este recurso será utilizado para gerar uma cópia completa do nosso banco de dados no momento de sua execução. Deste modo, caso venha a ocorrer alguma falha, teremos a possibilidade de recuperar nosso ambiente por completo. O próximo passo será a execução de um backup de filegroup. É através deste passo que será demonstrar como podemos trabalhar com este recurso.

O último passo consiste na execução do restore de um dos filegroups, ou seja, vamos realizar a recuperação do nosso ambiente que sofreu algumas mudanças em relação ao seu estado inicial.

Este passo terá a função de apresentar de forma simples e segura a recuperação dos objetos ou dados que possam ter sofrido algum tipo de manipulação. Com base nesta sequência de passos, será possível apresentar o conjunto básico de recursos que envolvem o Backup de Filegroup e algumas técnicas que possibilitam manter nosso ambiente em funcionamento.

Este artigo não tem por finalidade enfatizar as propriedades ou funções existentes nos comandos Backup Database e Restore Database . O objetivo é expor estes recursos e demonstrar sua importância. Para saber mais sobre cada opção ou propriedade, utilize o Books On-Line ou acesse os fóruns MSDN Brasil ou TechNet Brasil.

Conhecendo o Filegroup (Grupo de Arquivos)

Definir o que representa um filegroup e como este recurso pode ser útil no funcionamento de um banco de dados pode ser considerada uma tarefa um pouco complicada. Criado especialmente para o SQL Server, o Filegroup representa um conjunto de arquivos que formam um determinado banco de dados. Este conjunto é identificado através de um nome dado a cada filegroup, sendo através deste nome que conseguimos identificar quais arquivos estão vinculados ao filegroup e de quantos arquivos este filegroup é formado.

Existem diversas considerações sobre utilizar filegroups em um ambiente de banco de dados, entre elas, posso destacar os benefícios apresentados em relação ao desempenho durante os processos de consulta de dados.

Trabalhar com  grupos  de arquivos pode aprimorar de forma considerável o desempenho do banco de dados. Devido a possibilidade deste banco de dados, estar armazenado em diversos discos rígidos ou sistemas RAID (Redundant Array of Independent Disks).

Por exemplo, se o seu servidor de Banco de Dados possuir três discos, podemos criar um banco de dados que consista em três arquivos de dados e um arquivo de log, onde cada arquivo de dados será armazenado em um disco  rígido, sem contar o arquivo de log que poderá ser alocado em qualquer um dos discos que formam o nosso conjunto. Analisando a Figura 1, podemos entender esta divisão de arquivos em vários discos.

Figura 1. Estrutura de armazenamento dos arquivos dividido em HDs e Filegroups.

À medida que os dados são acessados, quatro cabeçotes de leitura/gravação trabalham em paralelo, proporcionando um aumento de velocidade na execução das operações do banco de dados.

Isto aprimorará o desempenho porque toda a E/S de uma determinada tabela pode ser dirigida a um disco específico. Por exemplo, uma tabela usada intensamente pode ser posta em um arquivo ou grupo de arquivos localizados em um disco, e as outras tabelas, usadas menos intensamente no banco de dados, podem ser postas nos outros arquivos do grupo de arquivos localizado em um segundo disco.

Outro detalhe importante está relacionado aos arquivos vinculados a um Filegroup. Por padrão, somente o primeiro arquivo de dados será definido com a extensão .MDF (Master Data File), os demais deverão ser nomeados utilizando a extensão .NDF (Native Data File). Além disso, somente os arquivos de dados podem ser armazenados e distribuídos em Filegroups, ao contrário dos arquivos de Log, que não possuem este tipo de funcionalidade.

Terminologias

Antes de configurar, usar ou entender o Filegroup e Backup de Filegroup, é necessário conhecer as terminologias que envolvem este recurso.

Backup Completo
Um backup completo, como o nome indica, realiza o backup de todo o banco de dados. Representa uma imagem contendo toda  estrutura do banco de dados criada no momento em que o backup foi concluído, ele inclui o log de  transações, possibilitando durante o processo de restauração, recuperar em conjunto com os dados e objetos o log de transações ocorridas sobre este banco de dados.

Backup Diferencial
Este tipo de backup é conhecido com diferencial por armazenar todas as manipulações realizadas sobre os objetos existentes em um determinado banco de dados, em comparação ao último backup completo realizado.

As mudanças armazenadas no  arquivo gerado pelo backup diferencial são classificadas como informações de leitura/gravação. Isso indica que as informações armazenadas neste arquivo só poderam ser utilizadas durante um processo de restauração de um banco de dados, em conjunto com um backup completo.

Normalmente, estes backups são realizados logo depois  do backup completo, sendo necessário a existência de um backup completo, para que a comparação e identificação das manipulações realizadas durante este período de tempo, possa ser armazenadas no arquivo gerado através do backup diferencial.

A Figura 2 mostra uma estratégia de backup que reduz a exposição à perda de informação que possa ocorrer. Para isso, é executado um conjunto de backups diferenciais, respeitando uma linha de tempo, em comparação a um backup completo  realizado sobre cada banco de dados.

Figura 2. Fluxo de atividades realizadas durante o backup diferencial.

Backup de Log

Cada backup de log será composto pela parte do log de transações que estava ativa no momento da execução do comando Backup, ou seja, esta parte representa uma área utilizada pelo SQL server para armazenar a sequência de processamentos que ele realizou .

Para se trabalhar com este tipo de backup, nosso banco de dados deve estar configurado para o modelo de recuperação completa ou bulk-logged . Somentes estes dois modelos de recuperação armazenam esta sequência de processamento realizado sobre o banco de dados. Estes modelos de recuperação de dados serão apresentados no decorrer do artigo.

Backup de Filegroup ou Backup de Arquivos
A utilização do Backup de Filegroup consiste em possibilitar a cópia isolada dos arquivos que compõem um banco de dados, neste caso, estes arquivos podem estar alocados separadamente em diversos filegroups ou contidos em um único, que por padrão é conhecido com filegroup Primary.

Este tipo de backup pode ser chamado ou denominado como backup de arquivos. Permitindo o backup dos arquivos em um banco de dados e depois restaurá-los individualmente. O uso deste tipo backup  pode aumentar a velocidade de recuperação, permitindo a restauração somente dos arquivos danificados, sem restaurar o restante do banco de dados.

Por exemplo, se um banco de dados for composto por diversos arquivos situados em discos diferentes e um dos discos falhar, somente o arquivo no disco com defeito precisará ser restaurado. No entanto, o planejamento e a restauração de backups de arquivos pode ser complexa; portanto, os backups de arquivos devem ser usados somente quando eles realmente forem úteis ao plano de restauração.

No SQL Server versão 7.0 e SQL Server 2000, os backups de arquivo e backups de arquivo diferencias não contêm registros de log. Deve ser aplicado explicitamente um backup de log para recuperar seus dados. Por isso, nestas versões, backups de arquivos podem ser usados somente com os modelos de recuperação completa e de recuperação bulk-logged.

No SQL Server 2005 e nas versões posteriores, por padrão, backups de arquivos contêm registros de log suficientes para efetuar roll-forward do arquivo até o final da operação de backup.

O Backup de filegroup pode oferecer algumas vantagens em relação ao backup completo de banco de dados:
• A recuperação de falhas de mídia isoladas é mais rápida. O arquivo ou arquivos danificados pode ser restaurado rapidamente.

• Backups de arquivo aumentam a flexibilidade no cronograma e tratamento de mídia em relação aos backups de banco de dados completos, os quais para os casos de bancos de dados muito grandes podem tornar-se difíceis de gerenciar. A maior flexibilidade de arquivo ou backups de grupo de arquivos também é útil para bancos de dados grandes que contêm dados com características variadas de atualização.

A desvantagem básica de backups de arquivo comparada a backups de banco de dados completos está na complexidade administrativa adicional. Uma falha de mídia poderá tornar um banco de dados completo irrecuperável se um arquivo danificado não tiver um backup .

Backup com Modelo de Recuperação Simples
O modelo de recuperação simples é a maneira mais simples de fazer backups e restaurações. Esse modelo de recuperação oferece suporte tanto a backups de bancos de dados como de arquivos, mas não oferece suporte a backups de log. O backup é fácil de gerenciar porque nunca é feito backup do log de transações. Entretanto, se não houver nenhum backup de log, um banco de dados só poderá ser restaurado ao término do backup de dados mais recente. Se ocorrer uma falha, as atualizações feitas depois do backup de dados mais recente serão perdidas.

No modelo de recuperação simples, o backup deve ser feito em todos os arquivos de leitura/gravação juntos. Isso assegura que o banco de dados possa ser restaurado até um point-in-time consistente. Em vez de especificar cada arquivo ou grupo de arquivos de leitura/gravação individualmente, use a opção de READ_WRITE_FILEGROUPS. Esta opção efetua backup de todos os grupos de arquivos de leitura/gravação no banco de dados.

A Figura 3 abaixo mostra a exposição à perda de trabalho para um plano de backup que usa somente backups de banco de dados. Esta estratégia só é apropriada para um banco de dados pequeno, em que é possível fazer o backup com frequência.

Figura 3. Estratégia de backup definida pelo SQL Server, chamado Plano de backup.

_______________________________________________________________________________________

Por enquanto é isso, nos próximos dias, continuarei postando as demais partes deste artigo.

Até mais.

Este post foi publicado em Dicas, Mundo SQL Server, VIRTUAL PASS BR em por .

Sobre Junior Galvão - MVP

Profissional com vasta experiência na área de Tecnologia da Informação e soluções Microsoft. Mestre em Ciências Ambientes na linha de pesquisa em Geoprocessamento e Modelagem Matemática pela Universidade Estadual Paulista "Júlio de Mesquita Filho". Pós-Graduado no Curso de Gestão e Engenharia de Processos para Desenvolvimento de Software com RUP na Faculdade FIAP – Faculdade de Informática e Administração Paulista de São Paulo. Graduado no Curso Superior em Gestão da Tecnologia de Sistemas de Informação pela Uninove – Campus São Roque. Formação MCDBA Microsoft, autor de artigos acadêmicos e profissionais postados em Revistas, Instituições de Ensino e WebSistes. Meu primeiro contato com tecnologia ocorreu em 1994 após meus pais comprarem nosso primeiro computador, ano em que as portas para este fantástico mundo se abriram. Neste mesmo ano, comecei o de Processamento de Dados, naquele momento a palavra TI não existia, na verdade a Tecnologia da Informação era conhecida como Computação ou Informática, foi assim que tudo começou e desde então não parei mais, continuando nesta longa estrada até hoje. Desde 2001 tenho atuado como Database Administrator – Administrador de Banco de Dados – SQL Server em tarefas de Administração, Gerenciamento, Migração de Servidores e Bancos de Dados, Estratégias de Backup/Restauração, Replicação, LogShipping, Implantação de ERPs que utilizam bancos SQL Server, Desenvolvimento de Funções, Stored Procedure, entre outros recursos. Desde 2008 exerço a função de Professor Universitário, para as disciplinas de Banco de Dados, Administração, Modelagem de Banco de Dados, Programação em Banco de Dados, Sistemas Operacionais, Análise e Projetos de Sistemas, entre outras. Experiência na Coordenação de Projetos de Alta Disponibilidade de Dados, utilizando Database Mirroring, Replicação Transacional e Merge, Log Shipping, etc. Trabalhei entre 2011 e 2017 como Administrador de Banco de Dados e Coordenador de TI no FIT – Instituto de Tecnologia da Flextronics, atualmente exerço a função de Professor Universitário na FATEC São Roque. CTO da Galvão Tecnologia, consultoria especializada em Gestão de TI, Administração de Servidores Windows Server, Bancos de Dados Microsoft SQL Server e Virtualização. Possuo titulação Oficial Microsoft MVP e reconhecimentos: MCC, MSTC, MIE e MTAC.

4 ideias sobre “Utilizando Backup de Filegroup no SQL Server – Parte 1

  1. Jorge Fernandes

    Junior Galvão, parceiro voce continua a clonar o BOL com a desculpa que falta tempo para pensar em algo para escrever e “apresentar o BOL” para todos ?

    Assim já tá demais, faz o assim: Dá um tempo, estuda MESMO SQL Server, enfia a cara em um servidor e depois sai escrevendo sobre casos do dia a dia.

    É bem mais interessante e util do que essas besteiras que voce escreve e ainda leva para o “muro das lamentações” (twitter).

    Pena tenho eu de seus alunos e seguidores.

    Jorge Fernandes

    Curtir

    1. Junior Galvão - MVP Autor do post

      Jorge, boa noite.

      Cara sinceramente não sei o que você quer ou aonde pretende chegar. Agora você vem falar que eu utilizei o Bol mais uma vez, simplesmente porque eu peguei as imagens, faça-me o favor. Pare de perder o seu tempo em acessar o meu blog.

      Se você realmente é um profissional tão conhecer, porque não se mostra para todos e procura o seu espaço.

      Quem é você para falar que eu tenho qu estudar e enfiar a cara em um Servidor, casos do dia a dia, vem contar isso para outro.

      Estou a muito tempo nesta luta e conquistando o meu espaço.

      Eu sinceramente sinto pena é de você que perde o seu tempo em buscar fazer críticas ou tentar humilhar as pessoas.

      Até mais.

      Curtir

  2. Jorge Fernandes

    Desculpa, me lembrei que voce é MVP. É “todo poderoso”; o Deus.

    Junior, o que eu quero mostrar é que muita gente cai nessa asneira de blog e fica um tempo enorme lendo e acreditando no que pseudo-feras como voce sacramentam como verdadeiro.

    Faz o seguinte, como voce conhece tanto assim de SQL Server, escreve algo decente (sem copiar do BOL) sobre Spatial Data, Service Broker ou até mesmo CLR.

    Se fizer isso sem copiar nada de nenhum lugar, apenas estudar e escrever, eu digo que voce entende do assunto.

    Enquanto isso, continua no seu mundo aonde voce não permite criticas, apenas elogios.

    “meu, teu blog é dez! bacana, referencia nacional para todos”.

    Jorge.

    Curtir

    1. Junior Galvão - MVP Autor do post

      Jorge,

      Cara, eu entendi a onde você quer chegar, muito obrigado por suas críticas, eu recebo um monte todos os dias, mas não da forma que você esta se expressando.

      Agradeço mesmo a suas observações, mas ficou um pouco surpreso pois o material que estou postando hoje é prévia de um artigo que vou publicar na revista SQL Magazine, e realmente as imagens eu utilizei o Bol, o restante eu fui escrevendo.

      Bom, vou seguir o seu consulto, e estudar, quem sabe eu preciso.

      Obrigado, sucesso para você, eu não sou ninguém muito menos um deus.

      Curtir

Os comentários estão desativados.