MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

Mongodump का उपयोग करके एक MongoDB डेटाबेस का बैकअप लें

MongoDB में डेटाबेस का बैकअप लेने के कई तरीके हैं। डेटाबेस का बैकअप लेने का एक त्वरित तरीका mongodump . का उपयोग करना है उपकरण।

mongodump MongoDB डेटाबेस से डेटा पढ़ता है और उच्च निष्ठा BSON फ़ाइलें बनाता है जो mongorestore उपयोगिता एक MongoDB डेटाबेस को पुनर्स्थापित करने के लिए उपयोग कर सकती है।

mongodump के साथ , आप किसी संग्रह, डेटाबेस या सभी डेटाबेस का बैकअप ले सकते हैं।

MongoDB डेटाबेस टूल के लिए जाँच करें

mongodump MongoDB डेटाबेस टूल्स पैकेज का हिस्सा है। MongoDB डेटाबेस टूल्स MongoDB के साथ काम करने के लिए कमांड-लाइन उपयोगिताओं का एक सूट है।

आपके पास MongoDB डेटाबेस टूल्स/mongodump . हो भी सकता है और नहीं भी स्थापित। जाँच करने के लिए अपने टर्मिनल या कमांड प्रॉम्प्ट में निम्न कमांड चलाकर देखें:

mongodump --version

यदि आपके पास यह नहीं है, तो आप इसे अपने सिस्टम पर स्थापित करने के लिए MongoDB वेबसाइट पर इंस्टॉलेशन निर्देशों का उपयोग कर सकते हैं।

कहां कमांड चलाएं?

आपको mongodump चलाने की जरूरत है आपके सिस्टम की कमांड लाइन से कमांड (जैसे एक नया टर्मिनल या कमांड प्रॉम्प्ट विंडो)।

उन्हें mongo . से न चलाएं सीप।

सभी डेटाबेस का बैकअप लें

डिफ़ॉल्ट पोर्ट 27017 पर चल रहे स्थानीय उदाहरण में सभी डेटाबेस और संग्रह का बैकअप लेने के लिए, mongodump का उपयोग करें बिना किसी तर्क के आदेश दें।

mongodump

उपरोक्त कोड को चलाने से सभी डेटाबेस dump/ . नामक फ़ोल्डर में डंप हो जाते हैं ।

ध्यान दें कि इसमें local . शामिल नहीं है और config डेटाबेस।

यह भी ध्यान दें कि mongodump केवल डेटाबेस में दस्तावेजों को कैप्चर करता है। जब आप एक पुनर्स्थापना करते हैं, mongorestore या mongod डेटा को पुनर्स्थापित करने के बाद अनुक्रमणिका का पुनर्निर्माण करना चाहिए।

यहाँ फ़ाइलें dump/ में कैसी दिखती हैं फ़ोल्डर।

tree dump

परिणाम:

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

वे फ़ाइलें स्पष्ट रूप से मेरे MongoDB स्थापना के लिए विशिष्ट हैं, जिसमें परीक्षण डेटाबेस शामिल हैं। मेरे मामले में, 3 डेटाबेस डंप किए गए:PetHotel , admin , और krankykranes

किसी विशिष्ट स्थान पर वापस जाएं

आप --out का उपयोग कर सकते हैं या -o डंप किए गए डेटाबेस के लिए फ़ाइलों को रखने के लिए स्थान निर्दिष्ट करने के लिए।

उदाहरण:

mongodump --out=data/backups/

या:

mongodump -o=data/backups/

इस स्थिति में, प्रत्येक डेटाबेस फ़ोल्डर सीधे data/backups/ . में आउटपुट होता है फ़ोल्डर (यानी कोई /dump/ नहीं है) फ़ोल्डर)।

किसी विशिष्ट डेटाबेस का बैकअप लें

आप --db का उपयोग कर सकते हैं बैक अप लेने के लिए डेटाबेस निर्दिष्ट करने के लिए पैरामीटर।

mongodump --db=krankykranes

यह krankykranes को डंप करता है डेटाबेस को डिफ़ॉल्ट dump/ फ़ोल्डर।

किसी खास संग्रह का बैक अप लें

आप --collection का उपयोग कर सकते हैं या -c बैकअप लेने के लिए एक संग्रह निर्दिष्ट करने के लिए।

उदाहरण:

mongodump --db=krankykranes --collection=products

या:

mongodump --db=krankykranes -c=products

यह products . को डंप करता है dump/krankykranes में संग्रह करें फ़ोल्डर।

संग्रह को छोड़कर

आप --excludeCollection . का भी उपयोग कर सकते हैं बैकअप से बाहर करने के लिए एक विशिष्ट संग्रह निर्दिष्ट करने के लिए पैरामीटर (यानी बैकअप में शामिल नहीं)।

उदाहरण:

mongodump --db=PetHotel --excludeCollection=employees

यह PetHotel . के सभी संग्रहों को डंप कर देता है employees . को छोड़कर डेटाबेस संग्रह।

एक से अधिक संग्रह को बाहर करने के लिए, एक अलग --excludeCollection . का उपयोग करें प्रत्येक संग्रह के लिए पैरामीटर जिसे आप बहिष्कृत करना चाहते हैं।

उदाहरण:

mongodump --db=PetHotel --excludeCollection=employees --excludeCollection=students

इसमें employees शामिल नहीं है और students बैकअप से संग्रह।

आप --excludeCollectionsWithPrefix . का भी उपयोग कर सकते हैं दिए गए उपसर्ग के साथ संग्रह को बाहर करने के लिए पैरामीटर।

mongodump --db=PetHotel --excludeCollectionsWithPrefix=p

यह p . अक्षर से शुरू होने वाले संग्रह को छोड़कर सभी संग्रह को डंप करता है ।

निम्नलिखित में pet . से शुरू होने वाले सभी संग्रह शामिल नहीं हैं ।

mongodump --db=PetHotel --excludeCollectionsWithPrefix=pet

आप कई --excludeCollectionsWithPrefix . का इस्तेमाल कर सकते हैं एकाधिक उपसर्गों वाले संग्रहों को बाहर करने के लिए तर्क।

उदाहरण:

mongodump --db=PetHotel --excludeCollectionsWithPrefix=p  --excludeCollectionsWithPrefix=s

आउटपुट को कंप्रेस करें

आप --gzip . का उपयोग कर सकते हैं आउटपुट को संपीड़ित करने के लिए पैरामीटर।

mongodump --gzip --db=krankykranes

यह व्यक्तिगत फ़ाइलों को संपीड़ित करता है।

tree dump

परिणाम:

dump
└── krankykranes
    ├── employees.bson.gz
    ├── employees.metadata.json.gz
    ├── products.bson.gz
    └── products.metadata.json.gz

हम देख सकते हैं कि सभी फाइलों में .gz . है विस्तार।

किसी संग्रह फ़ाइल या मानक आउट स्ट्रीम में आउटपुट करते समय, --gzip विकल्प संग्रह फ़ाइल या डेटा आउटपुट को स्ट्रीम में संपीड़ित करता है।

दृश्यों को संग्रह में बदलें

आप --viewsAsCollections . का उपयोग कर सकते हैं केवल-पढ़ने के दृश्यों को संग्रह के रूप में निर्यात करने के लिए पैरामीटर।

mongodump --db=PetHotel --viewsAsCollections

जब आप किसी दृश्य को संग्रह के रूप में निर्यात करते हैं, mongodump दृश्य में दस्तावेज़ों वाली एक बीएसओएन फ़ाइल तैयार करता है। अगर आप mongorestore का इस्तेमाल करते हैं उत्पादित बीएसओएन फ़ाइल को पुनर्स्थापित करने के लिए, दृश्य को संग्रह के रूप में पुनर्स्थापित किया जाएगा।

इस तर्क का उपयोग किए बिना, mongodump प्रत्येक दृश्य के मेटाडेटा को निर्यात करता है। अगर आप किसी दृश्य की मेटाडेटा फ़ाइल को mongorestore . में शामिल करते हैं ऑपरेशन, दृश्य फिर से बनाया गया है।

--viewsAsCollections का उपयोग करना सभी मानक संग्रहों को भी छोड़ देता है। इसलिए, जब मैं उपरोक्त कोड चलाता हूं, तो मेरा dump/ फ़ोल्डर संरचना इस तरह दिखती है:

tree dump

परिणाम:

dump
└── PetHotel
    ├── pettypes.bson
    └── pettypes.metadata.json

मेरे PetHotel . में डेटाबेस, मेरे पास pettypes . नामक एक दृश्य है . जब मैं इसे एक दृश्य के रूप में निर्यात करता हूं, तो केवल मेटाडेटा निर्यात किया जाता है। लेकिन जब मैं इसे एक संग्रह में परिवर्तित करता हूं, तो एक pettypes.bson फ़ाइल बनाई गई है जो वहां नहीं होगी यदि मैंने दृश्य के रूप में दृश्य निर्यात किया था।

अगर मैं उस दृश्य को संग्रह में परिवर्तित किए बिना निर्यात करता हूं तो यहां क्या होता है।

mongodump --db=PetHotel --collection=pettypes

फिर फ़ोल्डर संरचना प्राप्त करने के लिए ट्री कमांड चलाएँ।

tree dump

परिणाम:

dump
└── PetHotel
    └── pettypes.metadata.json

तो हम देख सकते हैं कि दृश्य के लिए केवल मेटाडेटा डंप किया गया है।

शांत मोड

आप --quiet का उपयोग कर सकते हैं आपके टर्मिनल या कमांड प्रॉम्प्ट विंडो में आउटपुट को सीमित करने के लिए पैरामीटर।

mongodump --quiet

इसका उपयोग किए बिना, आपको संभवतः बैक अप लेने वाले दृश्यों, संग्रहों आदि की एक बड़ी सूची दिखाई देगी।

वर्बोज़ मोड

दूसरी ओर, आप --verbose . का उपयोग कर सकते हैं या -v बढ़ाने . के लिए पैरामीटर आपके टर्मिनल या कमांड प्रॉम्प्ट विंडो में आउटपुट।

mongodump --verbose

आप -v . दोहरा कर शब्दाडंबर बढ़ा सकते हैं कई बार फॉर्म।

उदाहरण:

mongodump -vvvv

इसे मेरे सिस्टम पर चलाने से वाचालता काफी बढ़ गई है।

बैकअप क्वेरी परिणाम

आप --query का उपयोग कर सकते हैं या -q किसी क्वेरी के परिणाम को डंप करने के लिए पैरामीटर।

उदाहरण:

mongodump --db=PetHotel --collection=pets --query='{ "type": "Dog" }'

ऐसा करते समय, क्वेरी को सिंगल कोट्स से घेरें। आप फ़ील्ड के लिए दोहरे उद्धरण चिह्नों का उपयोग कर सकते हैं।

संग्रह और मानक आउटपुट

आप --collection का उपयोग कर सकते हैं या किसी निर्दिष्ट संग्रह फ़ाइल में आउटपुट लिखने के लिए पैरामीटर या, यदि संग्रह फ़ाइल निर्दिष्ट नहीं है, तो मानक आउटपुट (stdout) पर ) स्ट्रीम करें ताकि आप दूसरी प्रक्रिया में पाइप कर सकें।

संग्रह फ़ाइल में आउटपुट का उदाहरण:

mongodump --archive=PetHotel.20201230.archive --db=PetHotel

अगले उदाहरण में, मैं मानक आउटपुट स्ट्रीम को लिखता हूं, फिर पाइप को mongorestore . पर लिखता हूं :

mongodump --archive --db=PetHotel --collection=pets --query='{ "type": "Dog" }' | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHotel.dogs'

इसका परिणाम dogs . नामक एक नए संग्रह में होता है PetHotel . में दिखाई दे रहा है डेटाबेस (और संग्रह में केवल ऐसे दस्तावेज़ होते हैं जिनमें type . होता है dog . के मान वाला फ़ील्ड )।

पहुंच नियंत्रण

पिछले उदाहरण डिफ़ॉल्ट पोर्ट का उपयोग करके स्थानीय मशीन पर किए गए थे। इसका मतलब था कि हम mongodump run चलाने में सक्षम थे --host . जैसी चीज़ों को निर्दिष्ट किए बिना , --port , --username , आदि.

यहां एक उदाहरण दिया गया है जो homer . के रूप में प्रमाणित करने के लिए उन पैरामीटर का उपयोग करता है :

mongodump --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --out=/backups/mongodump-2020-12-30

हम --password . का भी प्रयोग कर सकते थे पैरामीटर, लेकिन हमने नहीं किया। यदि आप --user . पास करते हैं लेकिन नहीं --password , आपको पासवर्ड के लिए संकेत दिया जाएगा।

मोंगोडंप के बारे में अधिक जानकारी

mongodump उपयोगिता कई अन्य उपयोगी मापदंडों को स्वीकार करती है, और बैकअप और पुनर्प्राप्ति रणनीति के हिस्से के रूप में इसका उपयोग करते समय विचार करने के लिए विभिन्न कारक भी हैं।

देखें mongodump अधिक जानकारी के लिए MongoDB वेबसाइट पर प्रलेखन।

अन्य विकल्प

mongodump और mongorestore छोटे MongoDB परिनियोजन का बैकअप लेने और पुनर्स्थापित करने के लिए सरल और कुशल उपकरण हैं, लेकिन बड़े सिस्टम के बैकअप को कैप्चर करने के लिए आदर्श नहीं हैं।

अपने MongoDB डेटाबेस का बैकअप लेने के अन्य तरीकों के लिए MongoDB वेबसाइट पर MongoDB बैकअप विधियाँ देखें।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb _id . के लिए स्ट्रिंग का उपयोग करना

  2. JSON दस्तावेज़ों की एक सरणी से MongoDB में दस्तावेज़ आयात करें

  3. मोंगोडीबी $objectToArray

  4. MongoDB:सरणी में न्यूनतम तत्व खोजें और इसे हटा दें

  5. मोंगो क्वेरी के आउटपुट को एक सीएसवी फ़ाइल में रीडायरेक्ट करें