none
Ideias para gerar Backup de BD de clientes e pegar pela internet RRS feed

  • Pergunta

  • Ola, pessoal

     

    eu estou estudando a parte de backup: full, diferencial e com o log de transações

     

    Ja entendi a ideia de cada um deles, estou começando a ter algumas ideias para fazer planos de manutenção nos clientes.

     

    Seguinte, tenho uma situação de um cliente que o backup FULL ja esta ficando grandinho, e eu preciso copiar essa base de dados  e restaurar na minha maquina, para fazer algumas analises

     Atualmente, faço um backup FULL e pego pela internet (FTP).

     

    Como está ficando grande, está cada vez mais dificil, e eu estou pensando em fazer um backup diferencial a partir deste FULL que eu fiz antes e baixei, para poder baixar só o diferencial.

     

    Claro que, atualmente tambem já é feito backup FULL diariamente.

    Com isso... cada backup diferencial que eu fizer, vai ter os dados apenas a partir do ULTIMO full???

    nesse caso a minha idéia vai pro brejo... a menos que haja alguma outra maneira de ter um Backup SET com o full que eu gerar manualmente, e, a partir deste, eu poder gerar diferenciais, que eu quero baixar.

     

    Se não dá certo isso, talvez eu consiga fazer o que eu preciso com o log de transações?

     

    Então,  só para resumir a minha ideia é a seguinte:

    - Faria backup Full cliente; copiaria este backup e restauraria no meu PC. Nesse momento, ficaria o mesmo contexto no meu pc e no cliente (o mesmo backup Full)

    - Quando precisar dos dados atualizados, eu faria um backup Diferencial do cliente, em um arquivo separado para baixar somente ele (bem menor).

    - Porém, neste meio tempo - entre eu gerar o full manuamente no cliente (o qual vou ter igual pra mim) e depois gerar o diferencial (com o objetivo de atualizar a base de dados no meu PC) - o Agent pode ter feito outro backup FULL. E o problema que estou pensando nesse caso é:

    eu tenho como fazer um backup Diferencial que vai valer para mim, se no cliente ja foi gerado outros backups full que eu não restaurei no meu???

     

    Alguem me dá uma luz?? há alguma politica boa para isso?

     

    Valeu

    segunda-feira, 23 de maio de 2011 21:29

Respostas

  • Boa Noite,

    Uma vez que o diferencial aponte para o último full e que você não tenha controle sobre a geração de backups full, creio que ele será inútil nesse caso. Com certeza, algum cliente irá tirar algum full entre o full que você possui e o diferencial e aí sua restauração irá falhar. Na sua situação você não terá alternativas senão contar com a restauração de logs. Ainda assim, só vai funcionar se você tiver algumas premissas básicas:

    - O cliente tira backup de log
    - O Recovery Model da base é FULL ou Bulk Logged
    - O cliente não trunca o log (TRUNCATE_ONLY)

    Ainda que o log se encaixe mais nessa situação, acho muito difícil que funcione 100%, pois, você não terá autonomia para influenciar a administração de backups do seu cliente. Para ser sincero me soa até estranho você possuir o backup da base de dados dos seus clientes.

    Não há uma alternativa perfeita para esse cenário. Caso o FULL começe a tornar-se inviável, sugiro procurar outras abordagens como exportação dos dados novos (possivelmente como uma coluna de data_modificação) ou eventualmente o uso de scripts baseados em CDC (Change Data Capture) caso os clientes estejam com 2008 ou superior.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 23 de maio de 2011 23:29

Todas as Respostas

  • Boa Noite,

    Uma vez que o diferencial aponte para o último full e que você não tenha controle sobre a geração de backups full, creio que ele será inútil nesse caso. Com certeza, algum cliente irá tirar algum full entre o full que você possui e o diferencial e aí sua restauração irá falhar. Na sua situação você não terá alternativas senão contar com a restauração de logs. Ainda assim, só vai funcionar se você tiver algumas premissas básicas:

    - O cliente tira backup de log
    - O Recovery Model da base é FULL ou Bulk Logged
    - O cliente não trunca o log (TRUNCATE_ONLY)

    Ainda que o log se encaixe mais nessa situação, acho muito difícil que funcione 100%, pois, você não terá autonomia para influenciar a administração de backups do seu cliente. Para ser sincero me soa até estranho você possuir o backup da base de dados dos seus clientes.

    Não há uma alternativa perfeita para esse cenário. Caso o FULL começe a tornar-se inviável, sugiro procurar outras abordagens como exportação dos dados novos (possivelmente como uma coluna de data_modificação) ou eventualmente o uso de scripts baseados em CDC (Change Data Capture) caso os clientes estejam com 2008 ou superior.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 23 de maio de 2011 23:29
  • Obrigado,  Gustavo!

    Era isso mesmo que eu queria saber, sobre os backups.
    O caminho seria o Transaction LOG então. Vou fazer alguns testes...

     

    Bom, quanto às questões lavantadas, eu tenho acesso aos técnicos do cliente sim, tranquilamente,

    Quanto a rotina de backups, poderia estabelecer algo como eu preciso, sem problemas.

     

    Quanto ao "por que" manter bases de clientes... eu acho que daria uma discussão a parte, mas gostaria de abrir um parentesis e ressaltar alguns pontos, já que estramos no assunto:

     

    Normalmente, claro que não é pratica e não é bem visto o desenvolvedor manter dados dos clientes, se for uma empresa de DESENVOLVIMENTO apenas.
    Mas cada caso é um caso.

    A empresa em que eu trabalho tem alguns clientes que são pequenas empresas (usam uma versão light do software) que mal tem contador.. o que dirá DBA. rs (ou mesmo alguem que saiba fazer backup).

    Então faz parte do pacote (ou é cobrado extra) um serviço "técnico" de estabelecer uma rotina e tambem armazenar os backups.
    Senão eles simplesmente ficam sem backup (nem sabem o que é isso, alias), ou, no máximo, o backup fica somente no disco rigido do servidor (isso numa situação ideal).

    Claro que poderia ser deixado no contrato explicito, se não fosse de nosso interesse esse tipo de serviço, ... mas quem vende programas e serviços na nossa área de atuação, sabe como é dificil convencer o cliente, ainda mais explicar que é "só o desenvolvimento".
    Quero dizer, foi identificado que seria melhor aceitar que seja assim, e ter um planejamento em cima disso, inclusive de preço.


    Alem disso, não fazemos apenas o desenvolvimento e suporte. Para empresas médias em diante, prestamos um serviço de consultoria do uso do sistema no negocio do cliente (somos especialistas na área), e acompanhamento dos resultados.

    Então, são situações diferentes, claro que normalmente trabalhamos no ambiente do cliente (presencialmente ou virtualmente), mas quando queremos analisar alguma situação mais profundamente, pegamos backup sim.

    Em geral os BDs são pequenos e com a velocidade da internet hoje é super viável transmitir o full mesmo.


    E por último, talvez o principal:

    Estamos começando um projeto de BI, em um cliente que não chega a ser de grande porte, mas tem bastante movimento e dados já de vários anos.
    O projeto é especifico para este cliente (poderá vir a ser usado como modelo para outros), mas não está negociado, e nem o cliente está disposto a comprar as ferramentas necessárias (exemplo, uma versão mais robusta do SQL Server, Sharepoint, etc), sem antes ver resultados com seus próprios dados.

    Então o que fizemos foi um projeto para gerar um data warehouse, que com certeza muda bastante no inicio conforme vão sendo identificadas as necessidades ou é revista a forma de trabalhar, e não temos como ficar atualizando e modificando a base no ambiente de produção do cliente.


    Então, é por esses e outros fatores que em algumas situações, para nós, o mais viável é ter a base de dados completa na propria empresa.


    ---> Talvez essa não seja uma pratica comum para os DBA's que trabalham no ambiente interno de grandes empresas.. que têm responsabilidade de manter a base de dados da empresa (e não o proprio desenvolvedor o faz).
    Mas empresas de desenvolvimento, dependendo do nicho de mercado e outros serviços que presta alem do desenvolvimento, é bastante comum (eu sei disso por contato com outros desenvolvedores).


    Mas realmente, ainda há algumas praticas da empresa que foram 'herdadas' de processos errados de antigamente (onde faltava tecnologia e conhecimento)
    Talvez hajam outras formas, e nos estejamos precisando nos atualizar, encontrar outros métodos, em relação a isso.
    Digo isso sinceramente, pois BD nunca foi o nosso foco, e talvez se estudarmos mais sobre isso, podemos resolver vários problemas.

    Talvez seja assunto para outro topico específico sobre isso, ou se alguem quiser, poderia comentar algo aqui mesmo.


    Obrigado!!

    terça-feira, 24 de maio de 2011 15:36