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 बैकअप विधियाँ देखें।