Gerando backups instantâneos

Versão para impressãoEnviar para amigoVersão PDF

Que tal realizar um backup de toda sua base de dados em apenas 10 segundos? Muito tempo né? acho que 5 segundos é suficiente.
Isso sem importar o tamanho de sua base, 10 GB, 50 GB, 500 GB, 1 TB !!!!
Obviamente que isso não é algo que vale para todo mundo, mas em ambientes que possuem certos recursos esta é uma realidade fácil e rápido de ser alcançada.

Você deve estar se perguntando, mas qual é o "pulo do gato" nisso tudo?

E a resposta está em: SNAPSHOT

Para quem nunca ouviu falar em tecnologia de snapshot, ela existe a muitos anos e o Informix suporta ela também a muitos anos! Desde a versão 7 do Informix (meados de 1998) já era possível extrair backups instantâneos.
Mas este recurso era acessível apenas em grandes storages, aqueles de vários Terabytes que ocupam o espaço de uma geladeira duplex e custam alguns milhões. Acho pouco provavel que você deva ter um desse em casa ou em sua empresa (se for de pequeno ou médio porte).
Hoje este recurso já está acessível gratuitamente através dos Sistemas Operacionais e seus Files Systems. No Linux por exemplo, através do LVM, no Solaris através do ZFS, até no Windows é possível!!! Storages de mid-range também já possuem este tipo de recurso. No caso de de storages IBM este recurso é conhecido como FlashCopy

Não pretendo explicar em detalhes sobre a técnologia de snapshot que utilizei aqui (LVM no Linux), então mais abaixo inclui alguns links com explicações teóricas e técnicas.

  1. Snapshots
  2. Informix - Backup Externo
  3. Informix x Snapshots
  4. Afinal, quais as vantagens do snapshot?
  5. Exemplo prático


Snapshots

Obviamente esta tecnologia não faz milagres, mas está quase lá! :)
Ainda é preciso um meio de extrair os dados dos disco. Para um ambiente onde a execução do backup onera de alguma maneira o ambiente de produção, este recurso é salvador!

Ele pode ser utilizado para banco de dados e File Systems de várias formas diferentes, por exemplo, aqui em casa tenho um desktop que utilizo como meu servidor Linux de testes, nele possuo o XEN (maquina virtual, similar ao VmWare) instalado e mais de 7 máquinas virtuais nele, isso em um disco de apenas 40 GB. O que eu fiz? Utilizando o LVM como base, criei um FS para uma maquina virutal onde instalei um linux completo nele, depois para as próximas maquinas virtuais que fui criando apenas gero um snapshot deste FS com uma alocação de espaço de 200MB, assim tenho 7 maquinas virutais completas e totalmente independentes uma da outra ocupando apenas 2.1GB. Legal!

O snapshot apenas trabalha com os ponteiro dos dados, ele quase não faz movimentação de dados, por isso que ele é tão rápido, ou melhor, praticamente instantâneo. O espaço necessário para cada snapshot é utilizado para salvar as imagens de paginas alteradas após a sua geração (pense nele como se fosse o Physical Log do Informix)
Snapshots podem ser apenas para leitura ou gravavel, isso ira depender de como está gerando este snapshot. Mas posso adianta-los que se utilizar LVM no Linux, ambos podem ser utilizados.
No caso de banco de dados deve-se tomar cuidado em utilizar FS para salvar os chunks e fazer snapshot destes FS, já vi outros DBAs relatarem problemas nesta situação devido a bufferização do SO. Portanto, recomenda-se sempre utilizar acesso RAW aos devices.

Antes de trabalhar com snapshots, estude sobre o funcionamento dele, existem certos cuidados a serem tomados para não ocorrer perda de dados.
Para maiores informações sobre snapshot, leia sobre ele no wikipedia e no Linux Document Project
Para uma introdução ao LVM, leia o pequeno tutorial divido em 6 partes no blog do Amilcar


Informix - Backup Externo

No ponto de vista do Informix, para trabalhar com snapshot precisamos realizar aqui um backup externo, que é algo como simplesmente copiar os chunks do banco.
A grande desvantagem de um backup externo é que ele copia toda área alocada, independentemente se há dados lá ou não. Então, se você tem uma instancia com 5 chunks de 5 GB cada, totalizando 25 GB, mas tem apenas uma pequena base que utiliza 500 MB, seu backup externo será de 25 GB.
Uma outra característica do backup externo é que ele não gera backups incrementais, seria como se fosse sempre um nível 0.

Mas ATENÇÃO, não saia copiando os chunks deliberadamente (sem utilizar o comando certo do Informix) , senão você corre um sério risco de copiar dados corrompidos! Tem o jeito certo de se fazer backups externos.


Informix x Snapshots

Vamos ao que interessa, como o Informix trabalha com o Snapshot!
O processo em sí é muito simples:

  1. Deve bloquear o Informix para gravação
    Este é um bloqueio total da instancia, mas apenas para gravação nos chunks do Informix.
  2. Executa o snapshot
    Aqui deve-se utilizar o comando do seu SO ou Storage para gerar o snapshot
  3. Libera o Informix para gravação, normalmente.
Tudo isso, normalmente ocorre em menos de 5 segundos, independentemente do tamanho do seu banco.

No Informix deve-se ter o cuidado garantir que o snapshot será feito de todos os chunks existentes de uma unica vez.

Como já comentei antes, o recurso de snapshot não faz milagres, em um momento mais oportuno é preciso extrair os dados do disco e para isso você terá de utilizar uma ferramenta de sua preferencia.

Para isso você tem basicamente duas opções:

  • Subir uma segunda instancia apontando para o snapshot e então gerar o backup pelo ontape/onbar
    Neste caso você terá um backup legitimo do Informix, mas esta técnica pode dar um pouco mais de trabalho e só faz sentido se você tiver uma maquina secundária para realizar este processo.
  • Copiar os dados do disco, seja través de um comando "dd" ou de um agente de backup.
    Lembrando que no caso de acessos RAW, é preciso saber exatamente o inicio/fim a ser copiado do LV.


Afinal, quais as vantagens do snapshot?

Depois de ler que é preciso um meio de extrair os dados dos discos, você deve estar se perguntando: Então, qual a finalidade do snapshot se no final tenho que ler todos os dados de qualquer maneira?

As vantagens são relativas a sua infra-estrutura de storage, maquina, discos, politicas de backups e finalidade de utilização do snapshot.
Vamos listar algumas vantagens e situações que o snapshot pode ser muito util e até "salvar o dia!"

  • Para um ambientes 24x7 onde a performance do OLTP é crucial e não pode se dar ao luxo de variações devido processos não relacionados ao sistema, pode-se gerar um backup externo através do snapshot e assim que gerado, este volume pode ser montado em outra maquina e lido a partir dela, sem atrapalhar seu ambiente de produção.
    Para um funcionamento ideal desta situação, considera-se um storage separado da maquina de produção, uma rede SAN ou similar, uma maquina secundária para efetivamente realizar o backup/copia dos dados.
  • Se pela politica da empresa há necessidade de um backup atualizado a cada 2 ou 4 horas (por exemplo) onde apenas o backup no final do dia será realmente extraído da maquina, o snapshot é uma boa solução.
  • Em certas empresas, alguns relatórios gerenciais precisam ser gerados a partir de uma imagem do banco com as alterações até a 23h59m do dia anterior. Com o snapshot você pode fazer isso facilmente sem a necessidade de duplicar todo espaço em disco do banco.
    Supondo que sua base tenha 500 GB de dados, o snapshot não irá alocar 500 GB, em uma situação desta, eu diria que ele alocaria no máximo 5 GB.
  • Se um DBA de um banco de dados ou administrador de um sistema de arquivos quer se "proteger" de usuários desastrosos que as vezes apagam seus dados/tabelas/arquivos. O snapshot é uma solução rápida de recuperação, onde basta montar a ultima versão com o dado válido e copiar.
Com certeza há outras razões, porém no momento só pensei nestes.


Exemplo prático

Que tal ver um exemplo prático de um backup com snapshot em um Linux OpenSuse , Informix 11.50 Innovator-C ?
Acesse a versão completa deste artigo no BRIUG e confira como funciona!
Obs.: É preciso se cadastrar no site para ter acesso ao artigo.

4.5
Média: 4.5 (2 votos)
Sua avaliação: Nenhum
Tags:

Comentar

O conteúdo deste campo é privado não será exibido ao público.
  • Endereços de páginas de internet e emails viram links automaticamente.
  • Você pode usar tags BBCode no texto.
  • Tags HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>

Mais informações sobre as opções de formatação

CAPTCHA
Este teste é para bloquear programas automatizados e previnir spams
CAPTCHA de Imagem
Digite o texto exibido na imagem.