Bagaimana cara membuat dump MongoDB dari database saya?

163

Perintah apa yang saya gunakan dan jalankan?

TIMEX
sumber
Hanya satu mongodumptanpa bendera dan Anda mendapatkan folder dump
Ivan Aracki

Jawaban:

82

Gunakan 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

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

earldouglas
sumber
4
Untuk memasukkan hasilnya dalam satu file terkompresi, lihat unix.stackexchange.com/questions/93139/…
Donal Lafferty
Di server mongodb di mana basis data akan disimpan?
luar angkasa
157

Untuk membuang basis data Anda untuk cadangan, Anda memanggil perintah ini di terminal Anda

mongodump --db database_name --collection collection_name

Untuk mengimpor file cadangan Anda ke mongodb Anda dapat menggunakan perintah berikut di terminal Anda

mongorestore --db database_name path_to_bson_file
saimadhu.polamuri
sumber
2
Apa pentingnya metadata.json untuk memulihkan?
Nabin
103

Anda juga dapat menggunakan gzipuntuk mengambil cadangan satu koleksi dan mengompresi cadangan dengan cepat:

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

atau dengan tanggal pada nama file:

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

Pembaruan:
Cadangkan semua koleksi database di folder tanggal. File-file tersebut di-gzip:

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

Atau untuk arsip tunggal:

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

Atau ketika mongodb berjalan di dalam docker:

docker exec <CONTAINER> sh -c 'exec mongodump --db somedb --gzip --archive' > dump_`date "+%Y-%m-%d"`.gz
r03
sumber
1
mengatakan: ERROR: tidak tahu apa yang harus dilakukan dengan file! Gunizpped dan mencoba `mongorestore --db db_name 'file
gunzipped
2
salah ketik: "-db" => "--db"
Vivien
7
Dalam versi 3.2 mongodumpatau lebih tinggi, Anda dapat menggunakan --gzipopsi untuk melakukan itu: mongodump_manpage dan opsi yang sama untuk mongorestore
Boop
1
@Pyrejkee, lebih baik ajukan pertanyaan baru untuk hal-hal ini daripada komentar. (tanggal pada windows sangat berbeda)
r03
68

Perintah ini akan membuat dump database yang diberikan dalam format json dan bson.

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

Ada utilitas bernama: mongodump Di baris perintah mongo Anda bisa mengetik:

>./mongodump

Di atas akan membuat dump semua database di localhost Anda. Untuk membuat dump dari satu koleksi gunakan:

./mongodump --db blog --collection posts

Lihatlah: mongodump

aditya_gaur
sumber
11

Anda perlu membuka command prompt sebagai administrator di folder tempat Mongo Anda diinstal (dalam kasus saya: C: \ Program Files \ MongoDB \ Server \ 3.4 \ bin). Jika Anda ingin membuang seluruh database Anda, Anda bisa menggunakan:

mongodump --db database_name

Anda juga memiliki kemungkinan untuk membuang hanya koleksi tertentu, atau untuk membuang semua kecuali koleksi tertentu.

Jika Anda ingin membuang hanya satu koleksi (misalnya pengguna):

mongodump  --db database_name --collection users

Jika Anda ingin membuang semua kecuali koleksi pengguna:

mongodump  --db database_name --excludeCollection=users

Dimungkinkan juga untuk menampilkan dump ke file arsip:

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

Cadangkan / Kembalikan Mongodb dengan timing.

Cadangkan:

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

--db argumen untuk nama databse

--out argumen untuk jalur output

Mengembalikan:

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

--drop argumen untuk drop databse sebelum mengembalikan

Pengaturan waktu:

Anda dapat menggunakan crontab untuk pencadangan waktu:

sudo crontab -e

Itu dibuka dengan editor (misalnya nano)

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

backup setiap hari pukul 03:03 pagi

Bergantung pada ukuran database MongoDB Anda, Anda mungkin segera kehabisan ruang disk dengan terlalu banyak cadangan. Karena itu disarankan untuk membersihkan cadangan lama secara rutin atau mengompresnya. Misalnya, untuk menghapus semua cadangan yang lebih lama dari 7 hari Anda dapat menggunakan perintah bash berikut:

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

hapus semua cadangan yang lebih lama dari 7 hari

Semoga berhasil.

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

ShahRokh
sumber
8

Anda dapat membuang database Anda dan memulihkan dengan perintah di bawah ini

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

misalnya nama database saya melacak saya punya dump di folder dump

mongodb  -d tracking -o dump

Mengembalikan dump

mongorestore -d <databasename> <dum_path>

mongorestore -d tracking  dump/tracking
Nanhe Kumar
sumber
8

Perintah berikut terhubung ke server jarak jauh untuk membuang database:

<> params opsional menggunakannya jika Anda membutuhkannya

  • host - port nama host
  • mendengarkan nama pengguna port
  • nama pengguna db db
  • nama db ssl
  • koneksi aman keluar
  • output ke folder yang dibuat dengan nama

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

Michael Horojanski
sumber
Bagi mereka yang mendapatkan kesalahan ini setelah menjalankan opsi baris perintah parsing query-error yang disarankan: opsi tidak dikenal "ssl". Cobalah untuk menjalankan kueri di atas setelah menghapus --ssl. itu berhasil untuk saya. Terima kasih.
Anurag_BEHS
4

cmd ->

C:\Program Files\MongoDB\Server\3.2\bin>mongodump.exe --db Dintest
arnav
sumber
1
Opsi mudah dan tercepat
Ignacio Ara
Terima kasih banyak Arnav, sangat dihargai.
HassanSh__3571619
2

Jika database Anda di sistem lokal. Kemudian Anda mengetik perintah di bawah ini. untuk terminal Linux

mongodump -h SERVER_NAME:PORT -d DATABASE_NAME

Jika pengguna basis data dan kata sandi ada di sana maka Anda di bawah kode.

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

Ini bekerja sangat baik di terminal Linux saya.

Pooja Khatri
sumber
1

Perintah di bawah ini akan berfungsi untuk mengambil dump mongo db.

mongodump -d -o

Di Windows: coba yang ini di mana c: \ mongodump adalah lokasi file dump, Ini akan membuat metadata di json, dan cadangan dalam format bson

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

Bhasker The Navigator
sumber
1

untuk ekspor

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

untuk mengimpor

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

Atau Anda dapat membuat skrip cadangan di Windows, jangan lupa menambahkan Winrar ke% 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 !!!!!
pengguna956584
sumber
0

Mongo membuang dan mengembalikan dengan uri ke lokal

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

Jika Anda tidak menentukan --colletion COLLECTION_NAME, itu akan membuang seluruh DB.

smartworld-dm
sumber
0

mengambil cadangan mongodb untuk db tertentu dan menghapus cadangan 7 hari menggunakan perintah 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
sumber
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
sumber
0

gunakan "path" untuk windows. Jika tidak maka akan memberikan kesalahan sebagai: argumen posisi tidak diperbolehkan

yogesh chavan
sumber
-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
sumber
1. mongodump - adalah perintah untuk membuat dump mongo bersama dengan kita perlu masukan tentang spesifikasi. 2. -h mewakili nama host mongodb Anda. 3. -u mewakili nama pengguna mongodb Anda. 4. -p mewakili passsword. 5. --db merepresentasikan databasename yang harus kita ambil dump. 6. --port mewakili port yang dijalankan oleh mongo Anda. 7. --out mewakili tujuan dump Anda dengan nama.
Anjankumar HN