Como fazer backup de um banco de dados com milhares de arquivos

2

Estou trabalhando com um servidor Fedora que executa um pacote de software personalizado. O software do servidor é bastante antigo e seu banco de dados consiste em 1.723 arquivos. Os arquivos do banco de dados estão em constante mudança - eles crescem continuamente e as mudanças não são necessariamente anexadas ao final. Agora, atualmente, fazemos o backup a cada 24 horas à meia-noite, quando todos os usuários estão fora do sistema e o banco de dados está em um estado internamente consistente.

O problema é que temos o potencial de perder um dia inteiro de trabalho, o que seria irrecuperável. Então, eu gostaria de saber se existe uma maneira de fazer um instantâneo instantâneo desses arquivos de banco de dados que poderíamos fazer backup a cada 30 minutos ou mais.

Eu li sobre os instantâneos do Linux LVM e estou pensando em conseguir realizar a meta tirando um instantâneo, rsyncando os arquivos em um servidor de backup e removendo o instantâneo. Mas eu nunca fiz isso antes, então não sei se essa é a correção "certa".

Alguma idéia sobre isso? Alguma solução melhor?

Obrigado!

    
por Neal 04.07.2012 / 15:40

2 respostas

6

Tudo depende do banco de dados. Se você não tem uma maneira de dizer ao mecanismo de banco de dados "obter todos os seus arquivos em um estado consistente", então você não pode fazer um instantâneo, porque o instantâneo não tem garantia de que os arquivos dentro dele são consistentes entre si - você poderia tirar o instantâneo no momento em que um arquivo no banco de dados foi alterado e outro não.

Realmente, parece que você tem um clusterfudge real de um aplicativo proprietário e precisará discutir as possibilidades de backup com o fornecedor do aplicativo. Nós não poderemos ajudá-lo em todos sem saber qual é o pesadelo, e mesmo assim ...

No entanto, se você puder descobrir uma maneira de informar ao mecanismo de banco de dados "sincronizar todas as alterações no disco", então sim, um instantâneo LVM é uma maneira perfeitamente razoável de concluir o restante da cópia de dados. Para um exemplo de como fazer todo o processo (sincronizar com disco, snapshot, montar snapshot, copiar dados), dê uma olhada no mylvmbackup. Ele faz exatamente esse processo, para servidores MySQL.

    
por 04.07.2012 / 15:51
2

Eu acho que o LVM é uma boa opção, mas antes de tudo você precisa ter certeza de que seus arquivos estão em um estado consistente. Então, quaisquer que sejam as soluções que você usa se os arquivos estiverem corrompidos, não é importante tê-los.

Digamos que você tire um instantâneo, mas ao mesmo tempo seu banco de dados está gravando alguns dados nos arquivos. Se o instantâneo é tirado quando os arquivos são apenas parcialmente sincronizados, você está com problemas.

Você sabe o que eles dizem que um backup ruim é pior do que nenhum backup.

Portanto, eu recomendaria descobrir como você pode bloquear temporariamente a gravação no banco de dados, sincronizar o disco, tirar um instantâneo e desbloquear o banco de dados novamente. O instantâneo não demorará muito, então, se os usuários puderem sobreviver com algum atraso, eu escolheria esse caminho.

    
por 04.07.2012 / 15:58