Como devo fazer backup de vários bancos de dados MS Access em uso?

1

Isenção de responsabilidade: Sou engenheiro de software, não profissional de TI, desculpe se algumas das minhas sugestões são tolas ou ridículas.

Um aplicativo do Windows, que continuará sendo executado sempre, está conectado a vários bancos de dados do MS Access e interage constantemente com eles. O aplicativo pode estar lendo ou gravando em qualquer um desses bancos de dados a qualquer momento. Alguns dos bancos de dados são pequenos e têm aproximadamente o mesmo tamanho. Alguns dos bancos de dados são (relativamente) grandes (algumas centenas de milhares de linhas) e são anexados constantemente. Gostaríamos de fazer um backup desse conjunto de bancos de dados a cada X minutos sem encerrar o aplicativo. O backup estará no localhost (2º disco rígido) ou na rede local (100mbit).

O aplicativo será executado no Windows XP ou no Windows 7.

Eu sei que a solução real é "parar de usar o MS Access", que atualmente não é uma opção.

Opção 1: copiar arquivos

Poderíamos apenas copiar os arquivos, usando o comando de cópia do Windows (ou xcopy?) ou alguma copiadora de arquivos de terceiros (de preferência livre). Existe algum problema com isso?

Uma desvantagem dessa opção é que os bancos de dados maiores são totalmente copiados a cada vez, o que pode levar mais de alguns segundos. O que acontece quando um banco de dados do MS Access está sendo gravado enquanto está sendo copiado? (Corrupção de dados? Falha ao copiar?)

Opção 2: Sincronizar

Poderíamos ter algum processo de terceiros em execução, que mantém os bancos de dados de backup do MS Access em sincronia com seus correspondentes ativos. Muitos programas existentes que eu olhei para suportar mecanismos de banco de dados "reais" como SQL Server, Postgres, etc, mas parece que o MS Access não tem suporte aqui (ou talvez eu simplesmente não esteja procurando pelas palavras corretas).

Opção 3?

    
por epalm 19.04.2012 / 19:59

2 respostas

5

Sempre que tiver um arquivo aberto, você corre o risco de ter uma cópia corrompida quando copiá-lo para outro local. Como você mencionou, o Access não é realmente um banco de dados multiusuário e eu não sei de utilitários que despejam o conteúdo com segurança em outro arquivo da maneira que você puder com a maioria dos bancos de dados SQL.

Você pode ter alguma sorte usando cópias de sombra de volume. Obter um programa de backup real para o Windows deve permitir que você faça isso, pois ele funciona no nível do bloco; O utilitário de backup integrado do Windows pode fazer isso por você. Isso contornaria o problema de bloqueio de arquivos.

Se a solução de backup do Windows não funcionar, talvez seja necessário ter uma janela de manutenção em que você feche todas as conexões de acesso remoto e crie uma cópia simples em outro local.

Sua melhor aposta seria obter um programa de backup que suporta backups apesar dos bloqueios de arquivos no NTFS. Vai poupar-lhe dores de cabeça de gestão no futuro e evitar soluções de fita adesiva.

E, até onde eu saiba, não há como agrupar ou espelhar um banco de dados do Access. Simplesmente não foi feito para isso, e quando uma organização atinge esse nível, eles geralmente usam um verdadeiro mecanismo de banco de dados que pode suportar backups via dump, clustering ou espelhamento, para que haja outras instalações para fazer backups "ao vivo" .

    
por 19.04.2012 / 20:11
3

Opção 3: COMPRAR A FERRAMENTA DIREITA!

Você está usando o Access para algo para o qual nunca foi projetado - armazenamento de dados de alto volume, alta simultaneidade e alta simultaneidade.

O acesso é um TOY - Um pretendente ao trono do banco de dados que é adequado para projetos muito pequenos que não são críticos para os negócios. O caso de uso que você descreve é o que o SQL Server foi criado. Gaste o dinheiro e consiga o que você precisa: um banco de dados que possa lidar com utilização de alto volume e alta concorrência, com replicação e / ou backups que podem ser executados sem afetar substancialmente seus usuários.

    
por 19.04.2012 / 20:23