Existem várias maneiras de fazer backup de um banco de dados no MongoDB. Uma maneira rápida de fazer backup de um banco de dados é usar o
mongodump ferramenta. mongodump lê dados de um banco de dados MongoDB e cria arquivos BSON de alta fidelidade que o mongorestore utilitário pode usar para restaurar um banco de dados MongoDB. Com
mongodump , você pode fazer backup de uma coleção, de um banco de dados ou de todos os bancos de dados. Verificar ferramentas de banco de dados MongoDB
mongodump faz parte do pacote MongoDB Database Tools. As ferramentas de banco de dados do MongoDB são um conjunto de utilitários de linha de comando para trabalhar com o MongoDB. Você pode ou não ter o MongoDB Database Tools/
mongodump instalado. Tente executar o seguinte comando no seu Terminal ou Prompt de Comando para verificar:mongodump --version Se você não tiver, você pode usar as instruções de instalação no site do MongoDB para instalá-lo em seu sistema.
Onde executar os comandos?
Você precisa executar o
mongodump comandos da linha de comando do seu sistema (por exemplo, um novo Terminal ou janela de prompt de comando). Não os execute a partir do
mongo Concha. Fazer backup de todos os bancos de dados
Para fazer backup de todos os bancos de dados e coleções na instância local em execução na porta padrão 27017, use o
mongodump comando sem argumentos. mongodump A execução do código acima despeja todos os bancos de dados em uma pasta chamada
dump/ . Observe que ele exclui o
local e config bancos de dados. Observe também que
mongodump captura apenas os documentos no banco de dados. Quando você faz uma restauração, mongorestore ou mongod deve reconstruir os índices depois de restaurar os dados. Aqui está a aparência dos arquivos no
dump/ pasta. tree dump Resultado:
dump
├── PetHotel
│ ├── employees.bson
│ ├── employees.metadata.json
│ ├── owners.bson
│ ├── owners.metadata.json
│ ├── pets.bson
│ ├── pets.metadata.json
│ ├── pettypes.metadata.json
│ ├── players.bson
│ ├── players.metadata.json
│ ├── scores.bson
│ ├── scores.metadata.json
│ ├── students.bson
│ └── students.metadata.json
├── admin
│ ├── system.users.bson
│ ├── system.users.metadata.json
│ ├── system.version.bson
│ └── system.version.metadata.json
└── krankykranes
├── employees.bson
├── employees.metadata.json
├── products.bson
└── products.metadata.json
Esses arquivos são obviamente específicos para minha instalação do MongoDB, que contém bancos de dados de teste. No meu caso, 3 bancos de dados foram despejados:
PetHotel , admin , e krankykranes . Fazer backup em um local específico
Você pode usar
--out ou -o para especificar um local para colocar os arquivos para os bancos de dados despejados. Exemplo:
mongodump --out=data/backups/ Ou:
mongodump -o=data/backups/ Nesse caso, cada pasta de banco de dados é enviada diretamente para o
data/backups/ pasta (ou seja, não há /dump/ pasta). Fazer backup de um banco de dados específico
Você pode usar o
--db parâmetro para especificar um banco de dados para fazer backup. mongodump --db=krankykranes Isso despeja os
krankykranes banco de dados para o padrão dump/ pasta. Fazer backup de uma coleção específica
Você pode usar
--collection ou -c para especificar uma coleção para fazer backup. Exemplo:
mongodump --db=krankykranes --collection=products Ou:
mongodump --db=krankykranes -c=products Isso despeja os
products coleção para o dump/krankykranes pasta. Excluindo coleções
Você também pode usar o
--excludeCollection parâmetro para especificar uma coleção específica para excluir do backup (ou seja, não incluir no backup). Exemplo:
mongodump --db=PetHotel --excludeCollection=employees Isso despeja todas as coleções do
PetHotel banco de dados, exceto para os employees coleção. Para excluir mais de uma coleção, use um
--excludeCollection separado parâmetro para cada coleção que você deseja excluir. Exemplo:
mongodump --db=PetHotel --excludeCollection=employees --excludeCollection=students Isso exclui os
employees e students coleções do backup. Você também pode usar o
--excludeCollectionsWithPrefix parâmetro para excluir coleções com um determinado prefixo. mongodump --db=PetHotel --excludeCollectionsWithPrefix=p Isso despeja todas as coleções, exceto aquelas que começam com a letra
p . O seguinte exclui todas as coleções que começam com
pet . mongodump --db=PetHotel --excludeCollectionsWithPrefix=pet Você pode usar vários
--excludeCollectionsWithPrefix argumentos para excluir coleções com vários prefixos. Exemplo:
mongodump --db=PetHotel --excludeCollectionsWithPrefix=p --excludeCollectionsWithPrefix=s Compactar a saída
Você pode usar o
--gzip parâmetro para compactar a saída. mongodump --gzip --db=krankykranes Isso compacta os arquivos individuais.
tree dump Resultado:
dump
└── krankykranes
├── employees.bson.gz
├── employees.metadata.json.gz
├── products.bson.gz
└── products.metadata.json.gz Podemos ver que todos os arquivos têm o
.gz extensão. Ao enviar para um arquivo compactado ou o fluxo de saída padrão, o
--gzip opção compacta o arquivo morto ou a saída de dados para o fluxo. Converter visualizações em coleções
Você pode usar o
--viewsAsCollections parâmetro para exportar exibições somente leitura como coleções. mongodump --db=PetHotel --viewsAsCollections Quando você exporta uma visualização como uma coleção,
mongodump produz um arquivo BSON contendo os documentos na visualização. Se você usa mongorestore para restaurar o arquivo BSON produzido, a visualização será restaurada como uma coleção. Sem usar este argumento,
mongodump exporta os metadados de cada visualização. Se você incluir o arquivo de metadados de uma visualização em um mongorestore operação, a visualização é recriada. Usando
--viewsAsCollections também omite todas as coleções padrão. Portanto, quando executo o código acima, meu dump/ estrutura de pastas fica assim:tree dump Resultado:
dump
└── PetHotel
├── pettypes.bson
└── pettypes.metadata.json No meu
PetHotel banco de dados, tenho uma visão chamada pettypes . Quando exporto isso como uma visualização, apenas os metadados são exportados. Mas quando eu converto em uma coleção, um pettypes.bson é criado o arquivo que não estaria lá se eu tivesse exportado a exibição como uma exibição. Aqui está o que acontece se eu exportar essa visualização sem convertê-la em uma coleção.
mongodump --db=PetHotel --collection=pettypes Em seguida, execute o comando tree, para obter a estrutura de pastas.
tree dump Resultado:
dump
└── PetHotel
└── pettypes.metadata.json Assim, podemos ver que apenas os metadados da exibição são despejados.
Modo Silencioso
Você pode usar o comando
--quiet parâmetro para limitar a saída em sua janela Terminal ou Prompt de Comando. mongodump --quiet Sem usar isso, você provavelmente verá uma grande lista de visualizações, coleções, etc. com backup.
Modo detalhado
Por outro lado, você pode usar o
--verbose ou -v parâmetros para aumentar a saída em sua janela Terminal ou Prompt de Comando. mongodump --verbose Você pode aumentar a verbosidade repetindo o
-v forma várias vezes. Exemplo:
mongodump -vvvv Executando isso no meu sistema aumentou significativamente a verbosidade.
Resultados da consulta de backup
Você pode usar o
--query ou -q parâmetros para despejar o resultado de uma consulta. Exemplo:
mongodump --db=PetHotel --collection=pets --query='{ "type": "Dog" }' Ao fazer isso, coloque a consulta entre aspas simples. Você pode usar aspas duplas para os campos.
Arquivos e saída padrão
Você pode usar o
--archive ou parâmetro para gravar a saída em um arquivo especificado ou, se o arquivo não for especificado, na saída padrão (stdout ) para que você possa canalizar para outro processo. Exemplo de saída para um arquivo compactado:
mongodump --archive=PetHotel.20201230.archive --db=PetHotel No próximo exemplo, escrevo no fluxo de saída padrão e, em seguida, canalizo para
mongorestore :mongodump --archive --db=PetHotel --collection=pets --query='{ "type": "Dog" }' | mongorestore --archive --nsFrom='PetHotel.pets' --nsTo='PetHotel.dogs' Isso resulta em uma nova coleção chamada
dogs aparecendo no PetHotel banco de dados (e a coleção contém apenas documentos que têm um type campo com um valor de dog ). Controle de acesso
Os exemplos anteriores foram feitos na máquina local usando a porta padrão. Isso significa que fomos capazes de executar o
mongodump sem especificar coisas como --host , --port , --username , etc Aqui está um exemplo que usa esses parâmetros para autenticar como
homer :mongodump --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --out=/backups/mongodump-2020-12-30 Também poderíamos ter usado o
--password parâmetro, mas não o fizemos. Se você passar --user mas não --password , você será solicitado a fornecer a senha. Mais informações sobre mongodump
O
mongodump O utilitário aceita muitos outros parâmetros úteis e também há vários fatores a serem considerados ao usá-lo como parte de uma estratégia de backup e recuperação. Veja o
mongodump documentação no site do MongoDB para mais informações. Outras opções
mongodump e mongorestore são ferramentas simples e eficientes para fazer backup e restaurar pequenas implantações do MongoDB, mas não são ideais para capturar backups de sistemas maiores. Consulte Métodos de backup do MongoDB no site do MongoDB para outros métodos de backup de seus bancos de dados do MongoDB.