ฉันจะสร้างการถ่ายโอนข้อมูล MongoDB ของฐานข้อมูลของฉันได้อย่างไร


163

ฉันใช้คำสั่งอะไรและเรียกใช้


เพียงหนึ่งเดียวที่mongodumpไม่มีธงและคุณจะได้รับโฟลเดอร์การถ่ายโอนข้อมูล
Ivan Aracki

คำตอบ:


82

การใช้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

ที่มา: http://www.mongodb.org/display/DOCS/Import+Export+Tools


4
ในการใส่ผลลัพธ์ในไฟล์บีบอัดไฟล์เดียวโปรดดูunix.stackexchange.com/questions/93139/…
Donal Lafferty

ที่เซิร์ฟเวอร์ mongodb จะเก็บฐานข้อมูลไว้ที่ไหน?
ยานอวกาศโลก

157

เมื่อต้องการดัมพ์ฐานข้อมูลของคุณสำหรับการสำรองข้อมูลคุณเรียกใช้คำสั่งนี้บนเทอร์มินัลของคุณ

mongodump --db database_name --collection collection_name

ในการนำเข้าไฟล์สำรองข้อมูลของคุณไปยัง mongodb คุณสามารถใช้คำสั่งต่อไปนี้บนเทอร์มินัลของคุณ

mongorestore --db database_name path_to_bson_file

2
การเรียกคืน metadata.json มีความสำคัญอย่างไร
Nabin

103

คุณยังสามารถใช้gzipสำหรับการสำรองข้อมูลหนึ่งคอลเลกชันและบีบอัดข้อมูลสำรองได้ทันที:

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

หรือด้วยวันที่ในชื่อไฟล์:

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

อัปเดต:
สำรองข้อมูลคอลเลกชันทั้งหมดของฐานข้อมูลในโฟลเดอร์วันที่ ไฟล์ถูก gziped:

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

หรือสำหรับที่เก็บถาวรเดียว:

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

หรือเมื่อ Mongodb ทำงานอยู่ใน Docker:

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

1
พูดว่า: ข้อผิดพลาด: ไม่ทราบว่าจะทำอย่างไรกับไฟล์! Gunizpped และทดลองใช้ `mongorestore --db db_name 'gunzipped file'
amitchhajer

2
พิมพ์: "-db" => "--db"
Vivien

7
ในรุ่น 3.2 mongodumpขึ้นไปคุณสามารถใช้--gzipตัวเลือกในการทำเช่นนั้นmongodump_manpageและตัวเลือกเดียวกันสำหรับmongorestore
Boop


1
@Pyrejkee ดีกว่าถามคำถามใหม่สำหรับสิ่งเหล่านี้แทนความคิดเห็น (วันที่บน windows จะแตกต่างกันมาก)
r03

68

คำสั่งนี้จะทำการดัมพ์ของฐานข้อมูลที่กำหนดในรูปแบบ json และ bson

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

14

มีโปรแกรมอรรถประโยชน์ที่เรียกว่า: mongodump บนบรรทัดคำสั่ง mongo คุณสามารถพิมพ์:

>./mongodump

ด้านบนจะสร้างดัมพ์ของฐานข้อมูลทั้งหมดบนโลคัลโฮสต์ของคุณ หากต้องการดัมพ์ของคอลเล็กชันเดี่ยวให้ใช้:

./mongodump --db blog --collection posts

ดูที่: mongodump


11

คุณต้องเปิดพรอมต์คำสั่งในฐานะผู้ดูแลระบบในโฟลเดอร์ที่ติดตั้ง Mongo ของคุณ (ในกรณีของฉัน: C: \ Program Files \ MongoDB \ Server \ 3.4 \ bin) หากคุณต้องการถ่ายโอนฐานข้อมูลทั้งหมดของคุณคุณสามารถใช้:

mongodump --db database_name

คุณมีความเป็นไปได้ที่จะถ่ายโอนเฉพาะบางคอลเล็กชันหรือเพื่อถ่ายโอนทั้งหมดยกเว้นบางคอลเล็กชัน

หากคุณต้องการดัมพ์เพียงหนึ่งคอลเล็กชัน (ตัวอย่างเช่นผู้ใช้):

mongodump  --db database_name --collection users

หากคุณต้องการดัมพ์ทั้งหมดยกเว้นการรวบรวมผู้ใช้:

mongodump  --db database_name --excludeCollection=users

นอกจากนี้ยังสามารถส่งออกการถ่ายโอนข้อมูลไปยังไฟล์เก็บถาวร:

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

10

สำรอง / กู้คืน Mongodb ด้วยเวลา

สำรอง:

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

--db อาร์กิวเมนต์สำหรับชื่อ databse

--out อาร์กิวเมนต์สำหรับเส้นทางของผลลัพธ์

Restore:

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

--drop อาร์กิวเมนต์สำหรับการปล่อยข้อมูลก่อนที่จะกู้คืน

เวลา:

คุณสามารถใช้crontabเพื่อสำรองเวลา:

sudo crontab -e

มันเปิดด้วยเครื่องมือแก้ไข (เช่น nano)

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

สำรองข้อมูลทุกวันเวลา 03:03 น

ทั้งนี้ขึ้นอยู่กับขนาดฐานข้อมูล MongoDB ของคุณคุณอาจหมดพื้นที่ดิสก์ที่มีการสำรองข้อมูลมากเกินไป นั่นเป็นสาเหตุที่แนะนำให้ล้างข้อมูลสำรองเก่าเป็นประจำหรือบีบอัดข้อมูล ตัวอย่างเช่นหากต้องการลบข้อมูลสำรองทั้งหมดที่เก่ากว่า 7 วันคุณสามารถใช้คำสั่ง bash ต่อไปนี้:

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

ลบข้อมูลสำรองทั้งหมดที่เก่ากว่า 7 วัน

โชคดี.

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


8

คุณสามารถดัมพ์ฐานข้อมูลของคุณและเรียกคืนด้วยคำสั่งร้อง

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

ตัวอย่างเช่นชื่อฐานข้อมูลของฉันคือการติดตามฉันมีการถ่ายโอนข้อมูลในโฟลเดอร์การถ่ายโอนข้อมูล

mongodb  -d tracking -o dump

กำลังกู้คืนดัมพ์

mongorestore -d <databasename> <dum_path>

mongorestore -d tracking  dump/tracking

8

คำสั่งต่อไปนี้เชื่อมต่อกับรีโมตเซิร์ฟเวอร์เพื่อดัมพ์ฐานข้อมูล:

<> params เผื่อเลือกใช้พวกมันหากคุณต้องการ

  • โฮสต์ - พอร์ตชื่อโฮสต์
  • กำลังฟังชื่อผู้ใช้พอร์ต
  • ชื่อผู้ใช้ของ db db
  • db name ssl
  • การเชื่อมต่อที่ปลอดภัยออก
  • ส่งออกไปยังโฟลเดอร์ที่สร้างขึ้นด้วยชื่อ

    mongodump - โฮสต์ - พอร์ต - ชื่อผู้ใช้ - db --ssl - รหัสผ่าน - ออก _ วันที่ + "% Y-% m-% d"


สำหรับผู้ที่ได้รับข้อผิดพลาดนี้หลังจากทำงานด้านบนข้อเสนอแนะแบบสอบถาม - ข้อผิดพลาดในการแยกตัวเลือกบรรทัดคำสั่ง: ตัวเลือกที่ไม่รู้จัก "ssl" ลองเรียกใช้แบบสอบถามด้านบนหลังจากลบ --ssl มันใช้งานได้สำหรับฉันขอบคุณ
Anurag_BEHS


2

หากฐานข้อมูลของคุณอยู่ในระบบโลคอล จากนั้นให้คุณพิมพ์คำสั่งด้านล่าง สำหรับเทอร์มินัล Linux

mongodump -h SERVER_NAME:PORT -d DATABASE_NAME

หากมีผู้ใช้ฐานข้อมูลและรหัสผ่านอยู่ด้านล่างคุณต้องใช้รหัส

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

สิ่งนี้ทำงานได้ดีมากในสถานี Linux ของฉัน


2

เพื่อการส่งออก

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

เพื่อนำเข้า

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

1

คำสั่งด้านล่างจะทำงานเพื่อถ่ายโอนข้อมูล Mongo db

mongodump -d -o

บน Windows: ลองอันนี้โดยที่ c: \ mongodump เป็นที่ตั้งของไฟล์ดัมพ์มันจะสร้างข้อมูลเมตาใน json และสำรองในรูปแบบ bson

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


0

หรือคุณสามารถสร้างสคริปต์สำรองบน ​​Windows อย่าลืมเพิ่ม Winrar ไปที่% 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 ดัมพ์และกู้คืนด้วย uri เป็นโลคัล

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

หากคุณไม่ได้ระบุ --colletion COLLECTION_NAME จะเป็นการถ่ายโอนฐานข้อมูลทั้งหมด


0

ทำการสำรองข้อมูล mongodb สำหรับฐานข้อมูลเฉพาะและลบข้อมูลสำรอง 7 วันโดยใช้คำสั่ง 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

ใช้"เส้นทาง"สำหรับ windows มิฉะนั้นจะให้ข้อผิดพลาดเป็น: ไม่อนุญาตให้มีการขัดแย้งกับตำแหน่ง


-4

mongodump -h ชื่อโฮสต์ -u dbusername -p dbpassword - db dbname - พอร์ต portnumber - ออก / เส้นทาง / โฟลเดอร์

mongodump -h ชื่อโฮสต์ -u dbusername -p dbpassword - db dbname - พอร์ต portnumber --out /path/folder.gz


1. mongodump - เป็นคำสั่งในการสร้าง mongo dump พร้อมกับเราต้องการข้อมูลเกี่ยวกับ specicification 2. -h แสดงถึงชื่อโฮสต์ mongodb ของคุณ 3. -u แสดงถึงชื่อผู้ใช้ mongodb ของคุณ 4. -p แสดงถึงรหัสผ่าน 5. - ฐานข้อมูลหมายถึงชื่อไฟล์ที่เราจำเป็นต้องใช้ในการถ่ายโอนข้อมูล 6. - พอร์ตแสดงถึงพอร์ตที่ Mongo ของคุณกำลังทำงานอยู่ 7. - ออกหมายถึงปลายทางของการถ่ายโอนข้อมูลของคุณด้วยชื่อ
Anjankumar HN
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.