Ao perguntar ao suporte do Gitlab sobre como fazer um backup de 3 TB no Gitlab local, eles respondem: use nossa ferramenta que produz um tarball.
Isso parece errado para mim em todos os níveis. Este tarball contém o dump postgres, imagens docker, dados de repositório, GIT LFS, configuração etc e assim por diante. Fazer backup de TB de dados estáticos junto com dados muito dinâmicos de KB não parece certo. E então vem a questão de, queremos fazer um backup a cada hora.
Pergunta
Eu realmente gostaria de saber de outros como eles fazem isso, para obter um backup consistente.
O ZFS no Linux ficaria bem para mim, se isso fizer parte da solução.
Eu revisaria o que você está fazendo backup e possivelmente usaria uma abordagem de "vários caminhos". Por exemplo, você pode fazer backup dos repositórios Git executando constantemente os pulls do Git em servidores de backup. Isso copiaria apenas o diff e deixaria você com uma segunda cópia de todos os repositórios Git. Presumivelmente, você pode detectar novos repositórios com a API.
E use os procedimentos de backup "incorporados" para fazer backup dos problemas, etc. Duvido que os 3 TB venham dessa parte para que você possa fazer backups com muita frequência a um custo muito baixo. Você também pode configurar o banco de dados PostgreSQL com uma espera quente com replicação.
Possivelmente, seus 3 TB vêm de imagens de contêiner no registro do Docker. Você precisa fazer backup deles? Se assim for, então pode haver uma abordagem melhor apenas para isso.
Basicamente, eu recomendaria realmente olhar para o que compõe seu backup e fazer backup dos dados em várias partes.
Até a ferramenta de backup do GitLab tem opções para incluir/excluir certas partes do sistema, como o Docker Registry.
Para um período tão curto entre os backups (1h), sua melhor aposta é contar com o suporte e o instantâneo no nível do sistema de arquivos.
send/recv
Se o uso do ZoL não for um problema em seu ambiente, eu recomendo fortemente que o use. ZFS é um sistema de arquivos muito robusto e você vai gostar muito de todos os extras (por exemplo: compressão) que ele oferece. Quando combinado com
sanoid/syncoid
o , pode fornecer uma estratégia de backup muito forte. A principal desvantagem é que ele não está incluído no kernel principal, então você precisa instalá-lo/atualizá-lo separadamente.Alternativamente, se você realmente precisa se restringir a coisas incluídas na linha principal, você pode usar o BTRFS. Mas não deixe de entender suas (muitas) desvantagens e pita .
Finalmente, uma solução alternativa é usar
lvmthin
para fazer backups regulares (por exemplo: comsnapper
), contando com ferramentas de terceiros (por exemplo:bdsync
,blocksync
etc) para copiar/enviar apenas deltas.Uma abordagem diferente seria ter duas máquinas replicadas (via
DRBD
) onde você tira instantâneos independentes vialvmthin
.