Como crio um despejo de MongoDB do meu banco de dados?

163

Que comando eu uso e executo?

TIMEX
fonte
Apenas um único mongodumpsem bandeiras e você começa despejo pasta
Ivan Aracki

Respostas:

82

Use mongodump:

$ ./mongodump --host prod.example.com
connected to: prod.example.com
all dbs
DATABASE: log    to   dump/log
        log.errors to dump/log/errors.bson
                713 objects
        log.analytics to dump/log/analytics.bson
                234810 objects
DATABASE: blog    to    dump/blog
        blog.posts to dump/log/blog.posts.bson
                59 objects
DATABASE: admin    to    dump/admin

Fonte: http://www.mongodb.org/display/DOCS/Import+Export+Tools

Earldouglas
fonte
4
Para colocar os resultados em um único arquivo compactado, consulte unix.stackexchange.com/questions/93139/…
Donal Lafferty
No servidor mongodb em que local o banco de dados será armazenado?
space earth
157

Para despejar seu banco de dados para backup, você chama este comando no seu terminal

mongodump --db database_name --collection collection_name

Para importar seu arquivo de backup para o mongodb, você pode usar o seguinte comando no seu terminal

mongorestore --db database_name path_to_bson_file
saimadhu.polamuri
fonte
2
Qual é o significado do metadata.json para restaurar?
Nabin
103

Você também pode usar gzippara fazer backup de uma coleção e compactar o backup rapidamente:

mongodump --db somedb --collection somecollection --out - | gzip > collectiondump.gz

ou com uma data no nome do arquivo:

mongodump --db somedb --collection somecollection --out - | gzip > dump_`date "+%Y-%m-%d"`.gz

Atualização: faça
backup de todas as coleções de um banco de dados em uma pasta de data. Os arquivos estão com o gzip:

mongodump --db somedb --gzip --out /backups/`date +"%Y-%m-%d"`

Ou para um único arquivo:

mongodump --db somedb --gzip --archive > dump_`date "+%Y-%m-%d"`.gz

Ou quando o mongodb estiver sendo executado dentro da janela de encaixe:

docker exec <CONTAINER> sh -c 'exec mongodump --db somedb --gzip --archive' > dump_`date "+%Y-%m-%d"`.gz
r03
fonte
1
diz: ERRO: não sabe o que fazer com o arquivo! Gunizpped e tentou `mongorestore --db db_name 'arquivo zipado' '
amitchhajer
2
erro de digitação: "-db" => "--db"
Vivien
7
Na versão 3.2 mongodumpou superior, você pode usar a --gzipopção para fazer isso: mongodump_manpage e a mesma opção para mongorestore
Boop
1
@ Pyrejkee, é melhor fazer novas perguntas para essas coisas, em vez de um comentário. (data no Windows é muito diferente)
r03
68

Este comando fará um despejo do banco de dados especificado no formato json e bson.

mongodump -d <database name> -o <target directory>
jatin
fonte
14

Existe um utilitário chamado: mongodump Na linha de comando do mongo, você pode digitar:

>./mongodump

O exemplo acima criará um despejo de todos os bancos de dados no seu host local. Para fazer dump de uma única coleção, use:

./mongodump --db blog --collection posts

Dê uma olhada em: mongodump

aditya_gaur
fonte
11

Você precisa abrir o prompt de comando como administrador em uma pasta onde o Mongo está instalado (no meu caso: C: \ Arquivos de Programas \ MongoDB \ Server \ 3.4 \ bin). Se você deseja despejar todo o banco de dados, basta usar:

mongodump --db database_name

Você também tem a possibilidade de despejar apenas determinadas coleções ou despejar todas, exceto determinadas coleções.

Se você deseja despejar apenas uma coleção (por exemplo, usuários):

mongodump  --db database_name --collection users

Se você deseja despejar todos, exceto a coleção de usuários:

mongodump  --db database_name --excludeCollection=users

Também é possível enviar o dump para um arquivo morto:

mongodump --archive=test.archive --db database_name
Jery
fonte
10

Faça backup / restaure o Mongodb com tempo.

Cópia de segurança:

sudo mongodump --db db_name --out /path_of_your_backup/`date +"%m-%d-%y"`

--db argumento para o nome do banco de dados

--out argumento para o caminho da saída

Restaurar:

sudo mongorestore --db db_name --drop /path_of_your_backup/01-01-19/db_name/

--drop argumento para eliminar o banco de dados antes da restauração

Cronometragem:

Você pode usar o crontab para cronometrar o backup:

sudo crontab -e

Abre com o editor (por exemplo, nano)

3 3 * * * mongodump --out /path_of_your_backup/`date +"%m-%d-%y"`

backup todos os dias às 03:03

Dependendo do tamanho do banco de dados do MongoDB, você poderá ficar sem espaço em disco em breve com muitos backups. É por isso que também é recomendável limpar regularmente os backups antigos ou compactá-los. Por exemplo, para excluir todos os backups anteriores a 7 dias, você pode usar o seguinte comando bash:

3 1 * * * find /path_of_your_backup/ -mtime +7 -exec rm -rf {} \;

exclua todos os backups com mais de 7 dias

Boa sorte.

ref: https://www.digitalocean.com/community/tutorials/how-to-back-up-restore-and-migrate-a-mongodb-database-on-ubuntu-14-04

ShahRokh
fonte
8

Você pode despejar seu banco de dados e restaurar com o comando abaixo

mongodb  -d <Your_db_name> -o <path of your folder>

por exemplo, o nome do meu banco de dados está rastreando tenho despejo na pasta despejo

mongodb  -d tracking -o dump

Restaurando despejo

mongorestore -d <databasename> <dum_path>

mongorestore -d tracking  dump/tracking
Nanhe Kumar
fonte
8

O comando a seguir se conecta ao servidor remoto para despejar um banco de dados:

<> parâmetros opcionais os usam se você precisar deles

  • host - porta do nome do host
  • nome de usuário da porta de escuta
  • nome de usuário de db db
  • nome db ssl
  • conexão segura
  • saída para uma pasta criada com um nome

    mongodump --host --port --username --db --ssl --password --out _date + "% Y-% m-% d"

Michael Horojanski
fonte
Para quem está recebendo esse erro depois de executar acima, as opções de linha de comando sugeridas para análise de erro de consulta: opção desconhecida "ssl". Tente executar a consulta acima após remover --ssl. funcionou para mim.
Anurag_BEHS
4

cmd ->

C:\Program Files\MongoDB\Server\3.2\bin>mongodump.exe --db Dintest
arnav
fonte
1
Opção fácil e rápida
Ignacio Ara
Muito obrigado Arnav, realmente apreciado.
HassanSh__3571619
2

Se o seu banco de dados estiver no sistema local. Então você digita o comando abaixo. para terminal Linux

mongodump -h SERVER_NAME:PORT -d DATABASE_NAME

Se o usuário e a senha do banco de dados estiverem lá, você verá o código abaixo.

mongodump -h SERVER_NAME:PORT -d DATABASE_NAME -u DATABASE_USER -p PASSWORD

Isso funcionou muito bem no meu terminal Linux.

Pooja Khatri
fonte
1

Abaixo o comando trabalhará para tirar o dump do mongo db.

mongodump -d -o

No Windows: tente este em que c: \ mongodump é o local do arquivo de despejo, ele criará metadados no json e o backup no formato bson

C: \ MongoDB \ bin> mongodump -d -oc: \ mongodump

Bhasker The Navigator
fonte
1

Exportar

mongodump -d <database name> <backup-folder>

importar

mongorestore -d <database name> <backup-folder>
Fayaz
fonte
0

Ou você pode criar um script de backup no Windows, lembre-se de adicionar o Winrar a% PATH%

bin\mongodump --db=COL1 -o D:\BACK\COL1
rar.exe a -ep1 -r COL1.rar COL1
rename COL1.rar "COL1_%date:~10,4%_%date:~7,2%_%date:~4,2%_%time:~0,2%_%time:~3,2%.rar"

#rmdir /s /q COL1 -> don;t run this on your mongodb/ dir !!!!!
user956584
fonte
0

Mongo despejar e restaurar com uri para local

mongodump --uri "mongodb: // USERNAME: PASSWORD @ IP_OR_URL: PORT / DB_NAME" - coleção COLLECTION_NAME -o LOCAL_URL

Se você não especificar --colletion COLLECTION_NAME, ele descartará o banco de dados inteiro.

smartworld-dm
fonte
0

faça o backup do mongodb para um banco de dados específico e exclua o backup de 7 dias usando o comando bin sh: -

#!/bin/bash

MONGO_DATABASE="nexgtv_16"
APP_NAME="test"
MONGO_HOST="127.0.0.1"
MONGO_PORT="27017"
TIMESTAMP=`date +%F-%H%M`
MONGODUMP_PATH="/usr/bin/mongodump"
BACKUPS_DIR="/home/mongodbbackups/backups/$APP_NAME"
BACKUP_NAME="$APP_NAME-$TIMESTAMP"
$MONGODUMP_PATH -d $MONGO_DATABASE
mkdir -p $BACKUPS_DIR
mv dump $BACKUP_NAME
tar -zcvf $BACKUPS_DIR/$BACKUP_NAME.tgz $BACKUP_NAME
rm -rf $BACKUP_NAME
find /home/mongodbbackups/backups/test/ -mindepth 1 -mtime +7 -delete
manoj tiwari
fonte
0
 Use -v to see progress of backup data
    mongodump -v --db dbname --out /pathforbackup/NewFolderforBackupData

 you can use it for restore also
    mongorestore -v --db dbname --drop /pathforbackup/NewFolderforBackupData/dbname

with multile v like -vvvv you will get more information
Nivrutti
fonte
0

use "caminho" para o Windows. Caso contrário, ele fornece o erro como: argumentos posicionais não permitidos

yogesh chavan
fonte
-4

mongodump -h hostname -u dbusername -p dbpassword --db dbname --port portnumber --out / path / folder

mongodump -h hostname -u dbusername -p dbpassword --db dbname --port portnumber --out /path/folder.gz

Anjankumar HN
fonte
1. mongodump - é um comando para criar um mongo dump junto com a necessidade de informações sobre especificações. 2. -h representa o nome do host do mongodb. 3. -u representa seu nome de usuário mongodb. 4. -p representa a senha. 5. --db representa o nome do banco de dados que precisamos executar no dump. 6. --port representa a porta que seu mongo está executando. 7. --out representa o destino do seu dump com o nome.
Anjankumar HN 31/03