Antes de perder qualquer dado, deixe-me tentar introduzir uma perspectiva sysadmin para esta questão.
Existe apenas uma razão para criar backups: para possibilitar a restauração quando algo der errado, como invariavelmente ocorrerá. Como tal, um sistema de backup adequado tem requisitos que vão muito além do que o git pode lidar razoavelmente.
Aqui estão alguns dos problemas que posso prever ao tentar fazer backup do banco de dados no git:
- O repositório crescerá drasticamente com cada "backup". Desde que o git armazena objetos inteiros (embora compactados) e então difesta-os mais tarde (por exemplo, quando você executa
git gc
) e mantém o histórico para sempre , você tem uma quantidade muito grande de dados armazenados que você realmente não precisa ou nem deseja. Pode ser necessário limitar o período ou o período de retenção de backups que você faz para economizar espaço em disco ou por motivos legais, mas é difícil remover revisões antigas de um repositório do git sem muitos danos colaterais. - A restauração é limitada a pontos no tempo que você armazenou no repositório e, como os dados são muito grandes, voltar mais do que uma quantidade de tempo trivial pode ser lento. Um sistema de backup projetado para esse propósito limita a quantidade de dados armazenados enquanto potencialmente fornece mais granularidade e fornece restaurações mais rápidas, reduzindo o tempo de inatividade no caso de um desastre. As soluções de backup com reconhecimento de banco de dados ( exemplo ) também podem fornecer backup contínuo , garantindo que nem uma única transação é perdida.
- As confirmações provavelmente também são lentas e ficam mais lentas à medida que o banco de dados aumenta. Lembre-se que o git é essencialmente um armazenamento de dados de valores-chave mapeado em um sistema de arquivos e, portanto, está sujeito às características de desempenho do sistema de arquivos subjacente. É possível que esse período eventualmente exceda o intervalo de backup e, nesse ponto, você não poderá mais atender ao seu SLA. Os sistemas de backup apropriados também demoram mais para fazer backup, à medida que os dados aumentam, mas não tão drasticamente, já que eles gerenciam automaticamente seu próprio tamanho com base na política de retenção que você configurou.
Apesar do fato de que existem aparentemente várias coisas interessantes você pode fazer com um despejo de banco de dados Se você colocá-lo no git, no geral eu não posso recomendá-lo com a finalidade de manter backups. Especialmente desde que os sistemas de backup estão amplamente disponíveis (e muitos são mesmo de código aberto) e funcionam muito melhor para manter seus dados seguros e possível recuperar o mais rápido possível.