Existem algumas opções para fazer o backup de bancos de dados como este, e supondo que haja um mecanismo fácil para garantir a consistência (temporariamente interrompendo o banco de dados / bloqueando o acesso de gravação, etc.), eles são aproximadamente semelhantes.
O principal (como Craig Estey menciona em seu comentário) é usar algum mecanismo para garantir que o que você escreve seja consistente. Não há sentido em fazer backup de um banco de dados se você for buscar lixo!
Eu encontrei este link da Swift que mostra como eles alavancaram LD_PRELOAD
e flock()
para bloquear os arquivos Whisper e fazer backup dos bancos de dados em um estado consistente. Parece que eles também abriram o código
Em geral, para fazer o backup de coisas assim:
Alcance
Prós:
- Simples
- Portátil
- Nenhuma ferramenta adicional necessária
- A taxa de compactação é flexível (xz, gzip, bz2)
Contras:
- Potencialmente lento
- Backups incrementais são possíveis, mas um pouco faff
Rsync
Prós:
- Também é simples
- Rápido
- Backups incrementais são fáceis
- Compactação em trânsito
Contras:
- Usa SSH, portanto, se você não estiver copiando para um servidor remoto, poderá ser mais lento que outras ferramentas
- A compactação não está disponível no final sem usar tar / gzip, etc.
Instantâneos do Sistema de Arquivos
Prós:
- Quase instantâneo
- Simples
- Provavelmente eficiente em termos de espaço?
Contras:
- Requer a configuração das unidades com LVM / similar
- Não tão simples quanto outras soluções.