DEV Community

renanbastos93
renanbastos93

Posted on

Como Fazer Restore do MongoDB usando mongorestore com Arquivos wiredTriger

Introdução

E aí, pessoal! Sejam todos bem-vindos a este guia prático de como realizar a restauração de um backup no MongoDB usando a ferramenta mongorestore. Mas peraí, aqui tem um toque especial – estamos falando de uma restauração com a ausência dos arquivos padrão .bson e a presença dos misteriosos arquivos .wt, também conhecidos como WiredTiger. Vamos desbravar esse terreno e entender como essa peculiaridade pode proporcionar uma compreensão ainda maior do processo. Bora lá! 🚀


Contexto e ferramentas

Para começar esta jornada, gostaria de compartilhar que recebi esse dump do time de SRE para realizar uma restauração em outro ambiente, simulando assim um cenário real. Curiosamente, a base de dados na época tinha 8GB. Então, vamos lá! Para iniciar, precisamos instalar as ferramentas do MongoDB.

$ brew install mongodb-database-tools
Enter fullscreen mode Exit fullscreen mode

Agora, dispomos de algumas ferramentas úteis para interagir com o MongoDB, como o mongodump e o mongorestore. Neste tutorial, concentraremos nossa atenção no workaround utilizando o mongorestore para lidar com o cenário específico em que possuímos apenas os arquivos WiredTiger.

Visualizando os erros

Bom, quais foram os erros que ocorreram ao tentar utilizar o mongorestore? Na verdade, tive apenas dois erros e tentei diversos workarounds que não obtiveram sucesso. Vamos analisar o comando e o respectivo output.

$ mongorestore --username adminuser --password password123 mongodb://127.0.0.1:27017 --gzip dump.tar.gz
# 2023-11-30T11:26:18.319-0300  Failed: file dump.tar.gz does not have .bson extension

# Outra tentativa

$ mongorestore --username adminuser --password password123 mongodb://127.0.0.1:27017 --dir restore-656867ceae3af1227ffa3f59/
# 2023-11-30T11:28:10.196-0300  preparing collections to restore from
# 2023-11-30T11:28:10.199-0300  don't know what to do 
# ...
# 2023-11-30T11:28:10.201-0300  0 document(s) restored successfully. 0 document(s) failed to restore.
Enter fullscreen mode Exit fullscreen mode

Percebemos que, neste caso, não foi possível realizar a restauração conforme o esperado. No entanto, este era o único dump disponível. Diante desse desafio, iniciei uma pesquisa extensiva, explorando várias alternativas em documentações e workarounds. Agora, vamos examinar uma solução que se mostrou eficaz para o meu cenário. Reconheço que pode haver métodos mais simples e precisos, então se alguém tiver alguma sugestão, não hesite em compartilhar nos comentários. Vamos lá!

Pensando na solução e executando

É interessante mencionar que você pode tanto configurar o MongoDB localmente quanto utilizar uma imagem Docker. Pessoalmente, optei por utilizar uma imagem Docker, mas para facilitar o entendimento, vou demonstrar como configurar um MongoDB local sem o uso do Docker.

Se o MongoDB ainda não estiver instalado em sua máquina, basta realizar a instalação da maneira que for mais conveniente para você. Em seguida, subiremos o servidor via linha de comando utilizando o comando mongod e especificando o caminho para o nosso dump.

$ mongod --dbpath ~/dump
Enter fullscreen mode Exit fullscreen mode

Agora, podemos observar que ele conseguiu identificar os arquivos do WiredTiger. Ou seja, o que precisamos fazer agora é gerar um dump desta base que nos forneça os arquivos BSON. Esses arquivos são essenciais para serem utilizados na restauração do nosso ambiente.
Vamos executar o comando:

$ mongodump --host 127.0.0.1 -u myuser -p mypass -d mydatabase --port 27017 --out newDump --authenticationDatabase=admin
Enter fullscreen mode Exit fullscreen mode

Beleza, galera! Agora temos um dump novinho em folha com os arquivos BSON. Uhull! E agora, partiu fazer o restore? 🚀

$ mongorestore --verbose --username adminuser --password password123 mongodb://127.0.0.1:27017 newDump

# 2023-12-01T11:19:17.148-0300  [###.....................]  mydatabase.Collection  1.26GB/8.03GB  (15.7%)
# 2023-12-01T11:19:17.148-0300  [#######################.]     mydatabase.Collection  2.95GB/2.96GB  (99.5%)
# 2023-12-01T11:19:17.148-0300  
# 2023-12-01T11:19:18.878-0300  [########################]  mydatabase.Collection  2.96GB/2.96GB  (100.0%)
Enter fullscreen mode Exit fullscreen mode

Conclusão

Encerrando nossa odisséia pelo universo MongoDB, superamos perrengues, desbravamos soluções e agora brindamos a um novo dump com arquivos BSON. Uhull! Estamos prontos para restaurar e esse processo, embora não seja a única trilha, certamente clareia o caminho para quem encara dilemas similares. Se tiver truques ou dicas na manga, bota aí nos comentários. Juntos, fortalecemos a rede de conhecimento, inspirando novas explorações. Na jornada do aprendizado, cada desafio é um convite para avançar. Até a próxima aventura, exploradores digitais! 🌟🚀

Top comments (0)