Descubra como realizar migrações de bancos de dados no Atlas MongoDB usando snapshot, mongodump/mongorestore, mongoexport/mongoimport, mongomirror e Live Migration
Tempo de Leitura: 4 minutos
Uma tarefa quase rotineira entre DBAs e desenvolvedores é a necessidade de migração de banco de dados utilizados por suas aplicações. Os motivos que levam a essa necessidade podem ser inúmeros, as mais comuns são, o banco de dados ficou maior do que previsto no projeto inicial, a importância do banco de dados aumentou e com isso a necessidade de isolamento da carga de trabalho é necessária, um banco de dados pode estar causando instabilidade em outras aplicações e muitos outros.
Pensando nesse cenário, nesse artigo iremos discutir sobre algumas formas de migrar bancos de dados do Atlas MongoDB. São elas:
- Restore via snapshot
- mongodump/mongorestore
- mongoexport/mongoimport
- mongomirror
- Live Migration
Para estarmos todos na mesma página, o Atlas é a plataforma multi-cloud disponível para uso dos bancos de dados MongoDB, que se enquadra como Software as a Service (SaaS). Um detalhe importante de citar aqui no início também é que não entraremos em discussão entre a diferença de MongoDB replica set ou sharded cluster, as ferramentas citadas foram testadas apenas em réplica set.
Restore via Snapshot
Os snapshot são realizados automaticamente pelo Atlas, mas também podem ser feitos de forma manual. Com o snapshot realizado, todos os dados do seu cluster estão contidos nele, assim se restauramos esse snapshot em outro cluster teremos uma cópia idêntica. Mas lembre-se o snapshot é a cópia momentânea do cluster, por isso é necessário garantir que novos dados não sejam inseridos durante o processo. A única forma de garantir isso é a aplicação estando parada ou sem gravar dados no banco, desde o início do snapshot até a finalização do restore.
Pode ser realizado pela interface web do Atlas ou via CLI ambas as opções são gratuitas, os únicos custos cobrados nessa migração serão os de transferência de dados para a mesma região ou região diferente, depende do seu cenário.
Nessa opção é copiado todo o cluster e as opções de destino podem ser no mesmo projeto em cluster diferente ou projeto e cluster diferente.
Mongodump/Mongorestore
O termo dump/restore é bem conhecido quando se trata de backup de banco de dados relacionais, para o MongoDB o conceito é parecido. O mongodump é a exportação do banco de dados e o mongorestore é a importação.
Ambas as ferramentas são usada via linha de comando e estão disponível para download aqui.
Como toda ferramenta por linha de comando possui sua sintaxe própria que não entraremos em detalhe, mas você pode consultar a documentação oficial.
Para realizar uma migração usando essas opções temos o mesmo detalhe de usar o restore via snapshot, o mongodump ele faz uma cópia momentaneamente dos dados, logo a aplicação também deve estar parada durante todo o processo. O tempo de conclusão dessa ação pode ser muito relativo de acordo com a quantidade de dados envolvidos, poder computacional e tráfego de rede.
Utilizando mongodump é possível escolher ao nível de database, collections e até mesmo uma query. O arquivo final gerado será um binário do conteúdo do banco de dados.
Mongoexport/Mongoimport
Essas ferramentas podem causar confusão a primeiro momento, mas te garanto que elas não são iguais às anteriores, mas o funcionamento em si é bem-parecido. Também são ferramentas usadas via linha de comando, necessário download e possuem sua própria sintaxe.
Utilizando mongoexport é possível escolher ao nível de database, collections, campos e via uma query. A grande diferença entre elas é o arquivo final gerado, enquanto no mongodump é gerado um arquivo binário, com o mongoexport é gerado um arquivo JSON ou CSV dos dados armazenados no seu banco de dados. Sim, tem uma diferença, exemplo os seus index não são contidos no arquivo final.
Mongomirror
Ferramenta usada via linha de comando, por tanto também é necessário download dela aqui. Ter mirror que em tradução livre é espelho no nome já nos dá uma ideia de como funciona. Essa ferramenta faz um espelho do seu banco de dados de origem para o banco de dados destino, através da replicação dos dados em tempo real.
E o melhor? Sem downtime da sua aplicação! Permite escolher database que será replicado (dados e indexes). Após a cópia de todos os dados faz uma verificação dos novos dados que chegaram e quando ambos estiverem iguais o relógio de sincronização mostra 0s. Então basta apontar a aplicação para o novo banco, garantir que nenhum dado novo será inserido no banco antigo e sua migração está concluída.
Live Migration
Essa é a ferramenta de migração gerenciada pelo Atlas, por tanto a configuração é realizada diretamente na interface web. Por ser gerenciada e natural na interface web do Atlas todo o poder computacional e tráfego de dados é de responsabilidade do Atlas, logo temos um maior poder computacional do que teríamos em nossas máquinas pessoais, como também um nível de segurança maior.
Uma ferramenta tão boa assim deve ter custo, você deve estar se perguntando, mas acredite não tem, ela é totalmente gratuita. Porém, não pode ser usada em cluster de nível gratuito M0 ou cluster compartilhados M2/M5. A ferramenta em si não tem custo, assim como o consumo de poder computacional também não, mas cobranças de transferência de dados serão vistas na próxima fatura.
Por utilizar o mongomirror em seu processo, a forma de replicação é a mesma, com adição de uma forma visual de acompanhar o processo em andamento mais agradável ao usuário. Em caso de dúvidas durante o processo, o suporte via chat pode auxiliar.
Todas as ferramentas citadas neste artigo possuem suas vantagens e desvantagens, o intuito aqui não é afirmar qual é melhor, mas sim um breve resumo com alguns detalhes de seu funcionamento. A melhor ferramenta sempre será a que atender a sua necessidade dentro das suas regras de negócio, por isso recomendo que leia as documentações linkadas durante o artigo para uma maior compreensão e em casa de dúvidas use nosso fórum.
Para participar do nosso fórum, basta clicar no botão abaixo: