Como Fazer Restore do MongoDB usando mongorestore com Arquivos wiredTriger
renanbastos93
Posted on December 3, 2023
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
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.
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
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
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%)
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! 🌟🚀
Posted on December 3, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.