Làm cách nào để tạo kết xuất MongoDB của cơ sở dữ liệu của tôi?


163

Tôi sử dụng và chạy lệnh gì?


Chỉ cần một mongodumplá đơn mà không có bất kỳ cờ nào và bạn nhận được thư mục kết xuất
Ivan Aracki

Câu trả lời:


82

Sử dụng 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

Nguồn: http://www.mongodb.org/display/DOCS/Import+Export+Tools


4
Để đưa các kết quả trong một file nén duy nhất, thấy unix.stackexchange.com/questions/93139/...
Donal Lafferty

Tại máy chủ mongodb tại nơi cơ sở dữ liệu sẽ được lưu trữ?
không gian trái đất

157

Để kết xuất cơ sở dữ liệu của bạn để sao lưu, bạn gọi lệnh này trên thiết bị đầu cuối của bạn

mongodump --db database_name --collection collection_name

Để nhập tệp sao lưu của bạn vào mongodb, bạn có thể sử dụng lệnh sau trên thiết bị đầu cuối của mình

mongorestore --db database_name path_to_bson_file

2
Tầm quan trọng của metadata.json đối với việc khôi phục là gì?
Nabin

103

Bạn cũng có thể sử dụng gzipđể sao lưu một bộ sưu tập và nén sao lưu nhanh chóng:

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

hoặc có ngày tháng trong tên tệp:

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

Cập nhật:
Sao lưu tất cả các bộ sưu tập của cơ sở dữ liệu trong một thư mục ngày. Các tập tin được nén lại:

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

Hoặc cho một kho lưu trữ duy nhất:

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

Hoặc khi mongodb đang chạy bên trong docker:

docker exec <CONTAINER> sh -c 'exec mongodump --db somedb --gzip --archive' > dump_`date "+%Y-%m-%d"`.gz

1
nói: LRI: không biết phải làm gì với tệp! Gunizpping và đã thử 'mongorestore --db db_name' tập tin gunzipped '
amitchhajer

2
lỗi đánh máy: "-db" => "--db"
Vivien

7
Trong phiên bản 3.2 mongodumptrở lên, bạn có thể sử dụng --gziptùy chọn để thực hiện điều đó: mongodump_manpage và tùy chọn tương tự cho mongorestore
Boop


1
@Pyrejkee, tốt hơn nên đặt câu hỏi mới cho những điều này thay vì nhận xét. (ngày trên windows rất khác nhau)
r03

68

Lệnh này sẽ tạo một bãi chứa cơ sở dữ liệu đã cho ở định dạng json và bson.

mongodump -d <database name> -o <target directory>

14

Có một tiện ích gọi là: mongodump Trên dòng lệnh mongo bạn có thể gõ:

>./mongodump

Ở trên sẽ tạo ra một bãi chứa tất cả các cơ sở dữ liệu trên localhost của bạn. Để tạo kết xuất của một bộ sưu tập duy nhất, sử dụng:

./mongodump --db blog --collection posts

Có một cái nhìn tại: mongodump


11

Bạn cần mở dấu nhắc lệnh với tư cách quản trị viên trong thư mục cài đặt Mongo của bạn (trong trường hợp của tôi: C: \ Program Files \ MongoDB \ Server \ 3.4 \ bin). Nếu bạn muốn kết xuất toàn bộ cơ sở dữ liệu của mình, bạn chỉ cần sử dụng:

mongodump --db database_name

Bạn cũng có khả năng kết xuất chỉ một số bộ sưu tập nhất định hoặc để đổ tất cả trừ (các) bộ sưu tập nhất định.

Nếu bạn muốn kết xuất chỉ một bộ sưu tập (ví dụ: người dùng):

mongodump  --db database_name --collection users

Nếu bạn muốn kết xuất tất cả trừ bộ sưu tập người dùng:

mongodump  --db database_name --excludeCollection=users

Cũng có thể xuất kết xuất thành tệp lưu trữ:

mongodump --archive=test.archive --db database_name

10

Sao lưu / Khôi phục Mongodb với thời gian.

Sao lưu:

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

--db đối số cho tên databse

--out đối số cho đường dẫn đầu ra

Khôi phục:

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

--drop đối số cho thả dữ liệu trước khi khôi phục

Thời gian:

Bạn có thể sử dụng crontab để sao lưu thời gian:

sudo crontab -e

Nó mở bằng trình chỉnh sửa (ví dụ nano)

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

sao lưu mỗi ngày vào lúc 03:03 AM

Tùy thuộc vào kích thước cơ sở dữ liệu MongoDB của bạn, bạn có thể sắp hết dung lượng đĩa với quá nhiều bản sao lưu. Đó là lý do tại sao cũng nên thường xuyên dọn dẹp các bản sao lưu cũ hoặc nén chúng. Ví dụ: để xóa tất cả các bản sao lưu cũ hơn 7 ngày, bạn có thể sử dụng lệnh bash sau:

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

xóa tất cả các bản sao lưu cũ hơn 7 ngày

Chúc may mắn.

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


8

Bạn có thể kết xuất cơ sở dữ liệu của mình và khôi phục bằng lệnh dưới đây

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

ví dụ tên cơ sở dữ liệu của tôi đang theo dõi tôi có kết xuất trong thư mục kết xuất

mongodb  -d tracking -o dump

Khôi phục bãi chứa

mongorestore -d <databasename> <dum_path>

mongorestore -d tracking  dump/tracking

8

Lệnh sau kết nối với máy chủ từ xa để kết xuất cơ sở dữ liệu:

<> params tùy chọn sử dụng chúng nếu bạn cần chúng

  • máy chủ - cổng tên máy chủ
  • tên người dùng cổng nghe
  • tên người dùng của db db
  • tên ssl
  • kết nối an toàn
  • xuất ra một thư mục đã tạo có tên

    mongodump --host --port - tên người dùng --db --ssl - mật khẩu --out _date + "% Y-% m-% d"


Đối với những người đang gặp lỗi này sau khi chạy ở trên, các tùy chọn dòng lệnh phân tích lỗi truy vấn được đề xuất: tùy chọn không xác định "ssl". Cố gắng chạy truy vấn trên sau khi loại bỏ --ssl. nó làm việc cho tôi. Cảm ơn.
Anurag_BEHS

4

cmd ->

C:\Program Files\MongoDB\Server\3.2\bin>mongodump.exe --db Dintest

1
Tùy chọn dễ dàng và nhanh nhất
Ignacio Ara

Cảm ơn rất nhiều Arnav, thực sự đánh giá cao.
HassanSh__3571619

2

Nếu cơ sở dữ liệu của bạn trong hệ thống địa phương. Sau đó, bạn gõ lệnh dưới đây. cho thiết bị đầu cuối Linux

mongodump -h SERVER_NAME:PORT -d DATABASE_NAME

Nếu người dùng cơ sở dữ liệu và mật khẩu ở đó thì bạn bên dưới mã.

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

Điều này làm việc rất tốt trong thiết bị đầu cuối Linux của tôi.


1

Lệnh dưới đây sẽ hoạt động để kết xuất db mongo.

mongodump -d -o

Trên Windows: hãy thử cái này trong đó c: \ mongodump là vị trí tệp kết xuất, Nó sẽ tạo siêu dữ liệu trong json và sao lưu ở định dạng bson

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


1

xuất khẩu

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

nhập khẩu

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

0

Hoặc bạn có thể tạo tập lệnh sao lưu trên Windows, hãy nhớ thêm Winrar vào% 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 !!!!!

0

Mongo đổ và khôi phục với uri đến địa phương

mongodump --uri "mongodb: // USERNAME: PASSWORD @ IP_OR_URL: PORT / DB_NAME" - bộ sưu tập COLLMENT_NAME -o LOCAL_URL

Nếu bạn không chỉ định --colletion COLLMENT_NAME, nó sẽ kết xuất toàn bộ DB.


0

lấy bản sao lưu mongodb cho db cụ thể và xóa bản sao lưu 7 ngày cũ bằng lệnh 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

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

0

sử dụng "đường dẫn" cho các cửa sổ. Khác nó đưa ra lỗi như: đối số vị trí không được phép


-4

mongodump -h tên máy chủ -u dbusername -p dbpassword --db dbname - portnumber --out / path / thư mục

mongodump -h tên máy chủ -u dbusername -p dbpassword --db dbname - portnumber --out /path/folder.gz


1. mongodump - là một lệnh để tạo một bãi chứa mongo cùng với chúng ta cần đầu vào về đặc tả. 2. -h đại diện cho tên máy chủ mongodb của bạn. 3. -u đại diện cho tên người dùng mongodb của bạn. 4. -p đại diện cho passsword. 5. --db đại diện cho tên dữ liệu tha chúng ta cần lấy kết xuất. 6. --port đại diện cho cổng mongo của bạn đang chạy. 7. --out đại diện cho đích của bãi chứa của bạn với tên.
Anjankumar HN
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.