Como Fazer Restore do MongoDB usando mongorestore com Arquivos wiredTriger
Tags: mongodb, wiredtriger, restore, bson
Published: 2023-12-03 18:13:57

---
title: Como Fazer Restore do MongoDB usando mongorestore com Arquivos wiredTriger
published: true
description: Ao lidar com backups no formato *.wt, que indicam o uso do mecanismo WiredTiger no MongoDB, podem surgir desafios específicos ao usar mongorestore. Se você encontrar problemas, aqui estão algumas dicas úteis.
tags: mongodb, wiredtriger, restore, bson
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2023-11-30 20:36 +0000
---

## 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.

```sh
$ 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.

```sh
$ 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.
```sh
$ 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:
```sh
$ 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? 🚀
```sh
$ 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! 🌟🚀