डेटाबेस बैकअप और कुछ नहीं बल्कि डेटा को सुरक्षित या पुनर्स्थापित करने का एक तरीका है। यह आपके डेटाबेस की परिचालन स्थिति, वास्तुकला और डेटा को संग्रहीत करने की प्रक्रिया है। तकनीकी खराबी या आपदा की स्थितियों में यह बहुत उपयोगी हो सकता है। इसलिए अपने डेटाबेस का बैकअप रखना आवश्यक है और आपके डेटाबेस में बैकअप के लिए एक अच्छी और आसान प्रक्रिया है।
MongoDB आपके डेटाबेस का आसानी से बैकअप लेने के लिए कई टूल/तकनीक प्रदान करता है।
इस लेख में, हम कुछ शीर्ष MongoDB बैकअप पर चर्चा करेंगे और वर्कफ़्लोज़ को पुनर्स्थापित करेंगे।
आम तौर पर, आपके MongoDB सर्वर/क्लस्टर का बैकअप लेने के लिए तीन सबसे आम विकल्प हैं।
- मोंगोडम्प/मोंगोरेस्टोर
- मोंगोडीबी क्लाउड मैनेजर
- डेटाबेस स्नैपशॉट
इन सामान्य विकल्पों के अलावा, आपके MongoDB का बैकअप लेने के अन्य तरीके भी हैं। हम इस लेख में इन सभी विकल्पों पर भी चर्चा करेंगे। आइए शुरू करें।
MongoDump/MongoRestore
यदि आपके पास एक छोटा डेटाबेस (<100GB) है और आप अपने बैकअप का पूरा नियंत्रण रखना चाहते हैं, तो Mongodump और Mongorestore आपके लिए सबसे अच्छे विकल्प हैं। ये मोंगो शेल कमांड हैं जिनका उपयोग आपके डेटाबेस या संग्रह को मैन्युअल रूप से बैकअप करने के लिए किया जा सकता है। Mongodump सभी डेटा को बाइनरी JSON (बीएसओएन) प्रारूप में निर्दिष्ट स्थान पर डंप करता है। Mongorestore आपके डेटाबेस को पुनर्स्थापित करने के लिए इस BSON फ़ाइलों का उपयोग कर सकता है।
एक संपूर्ण डेटाबेस का बैकअप लें
$ sudo mongodump --db mydb --out /var/backups/mongo
आउटपुट:
2018-08-20T10:11:57.685-0500 writing mydb.users to /var/backups/mongo/mydb/users.bson
2018-08-20T10:11:57.907-0500 writing mydb.users metadata to /var/backups/mongo/mydb/users.metadata.json
2018-08-20T10:11:57.911-0500 done dumping mydb.users (25000 documents)
2018-08-20T10:11:57.911-0500 writing mydb.system.indexes to /var/backups/mongo/mydb/system.indexes.bson
इस कमांड में सबसे महत्वपूर्ण तर्क --db है। यह उस डेटाबेस का नाम निर्दिष्ट करता है जिसका आप बैकअप लेना चाहते हैं। यदि आप इस तर्क को निर्दिष्ट नहीं करते हैं तो Mongodump कमांड आपके सभी डेटाबेस का बैकअप लेगा जो बहुत गहन प्रक्रिया हो सकती है।
एकल संग्रह का बैकअप लें
$ mongodump -d mydb -o /var/backups/mongo --collection users
यह आदेश mydb डेटाबेस में केवल उपयोगकर्ता संग्रह का बैकअप लेगा। यदि आप यह विकल्प नहीं देते हैं, तो यह डिफ़ॉल्ट रूप से डेटाबेस में सभी संग्रह का बैकअप ले लेगा।
Mongodump/Mongorestore का उपयोग करके नियमित बैकअप लेना
एक मानक अभ्यास के रूप में, आपको अपने MongoDB डेटाबेस का नियमित बैकअप बनाना चाहिए। मान लीजिए आप हर दिन सुबह 3:03 बजे बैकअप लेना चाहते हैं, तो लिनक्स सिस्टम में आप क्रॉन्टाब में क्रॉन एंट्री जोड़कर ऐसा कर सकते हैं।
$ sudo crontab -e
इस लाइन को क्रोंटैब में जोड़ें:
3 3 * * * mongodump --out /var/backups/mongo
एक संपूर्ण डेटाबेस पुनर्स्थापित करें
डेटाबेस को पुनर्स्थापित करने के लिए, हम --db विकल्प के साथ Mongorestore कमांड का उपयोग कर सकते हैं। यह Mongodump द्वारा बनाई गई BSON फ़ाइलों को पढ़ेगा और आपके डेटाबेस को पुनर्स्थापित करेगा।
$ sudo mongorestore --db mydb /var/backups/mongo/mydb
आउटपुट
2018-07-20T12:44:30.876-0500 building a list of collections to restore from /var/backups/mongo/mydb/ dir
2018-07-20T12:44:30.908-0500 reading metadata file from /var/backups/mongo/mydb/users.metadata.json
2018-07-20T12:44:30.909-0500 restoring mydb.users from file /var/backups/mongo/mydb/users.bson
2018-07-20T12:45:01.591-0500 restoring indexes for collection mydb.users from metadata
2018-07-20T12:45:01.592-0500 finished restoring mydb.users (25000 documents)
2018-07-20T12:45:01.592-0500 done
संपूर्ण संग्रह पुनर्स्थापित करें
डीबी से केवल एक संग्रह को पुनर्स्थापित करने के लिए, आप निम्न आदेश का उपयोग कर सकते हैं:
$ mongorestore -d mydb -c users mydb/users.bson
यदि आपका संग्रह बीएसओएन के बजाय जेएसओएन प्रारूप में बैक अप लिया गया है तो आप निम्न आदेश का उपयोग कर सकते हैं:
$ mongoimport --db mydb --collection users --file users.json --jsonArray
फायदे
- उपयोग में बहुत आसान
- आपके पास अपने बैकअप की पूरी पहुंच है
- आप अपना बैकअप किसी भी स्थान पर रख सकते हैं जैसे NFS शेयर, AWS S3 आदि।
नुकसान
- हर बार यह केवल अंतर ही नहीं, डेटाबेस का पूर्ण बैकअप लेगा।
- बड़े डेटाबेस के लिए, बैकअप लेने और डेटाबेस को पुनर्स्थापित करने में घंटों लग सकते हैं।
- यह डिफ़ॉल्ट रूप से पॉइंट-इन-टाइम नहीं है, जिसका अर्थ है कि यदि आपका डेटा बैकअप लेते समय बदलता है तो आपके बैकअप के परिणामस्वरूप असंगति हो सकती है। आप इस समस्या को हल करने के लिए --oplog विकल्प का उपयोग कर सकते हैं। यह मोंगोडम्प प्रक्रिया के अंत में डेटाबेस का एक स्नैपशॉट लेगा।
MongoDB संचालन प्रबंधक
Ops Manager MongoDB के लिए एक प्रबंधन एप्लिकेशन है जो आपके डेटा सेंटर में चलता है। यह लगातार आपके डेटा का बैकअप लेता है और आपके डेटाबेस के लिए पॉइंट-इन-टाइम रिस्टोर प्रोसेस प्रदान करता है। इस एप्लिकेशन के भीतर, एक एजेंट है जो आपके MongoDB इंस्टेंस से जुड़ता है। यह पहले डेटाबेस की वर्तमान स्थिति का बैकअप लेने के लिए एक प्रारंभिक सिंक करेगा। एजेंट कंप्रेस्ड और एन्क्रिप्टेड ऑप्लॉग डेटा को ऑप्स मैनेजर को भेजता रहेगा ताकि आपके पास लगातार बैकअप हो सके। इस डेटा का उपयोग करके, Ops Manager डेटाबेस स्नैपशॉट बनाएगा। यह हर 6 घंटे में आपके डेटाबेस का एक स्नैपशॉट बनाएगा और 24 घंटे के लिए ओप्लॉग डेटा संग्रहीत किया जाएगा। आप Ops Manager का उपयोग करके किसी भी समय स्नैपशॉट शेड्यूल को कॉन्फ़िगर कर सकते हैं।
फायदे
- यह डिफ़ॉल्ट रूप से पॉइंट-इन-टाइम है
- प्रारंभिक समन्वयन को छोड़कर उत्पादन प्रदर्शन को प्रभावित नहीं करता
- शार्क किए गए क्लस्टर के लगातार स्नैपशॉट के लिए समर्थन
- गैर-महत्वपूर्ण संग्रहों को बाहर करने का लचीलापन
नुकसान
- डेटाबेस को पुनर्स्थापित करते समय स्नैपशॉट आकार के साथ नेटवर्क विलंबता बढ़ जाती है।
MongoDB क्लाउड मैनेजर
MongoDB क्लाउड मैनेजर क्लाउड-आधारित बैकअप समाधान है जो पूरी तरह से प्रबंधित सेवा के रूप में पॉइंट-इन-टाइम पुनर्स्थापना, निरंतर और ऑनलाइन बैकअप समाधान प्रदान करता है। आप बैकअप प्रबंधित करने और अपने डेटाबेस को पुनर्स्थापित करने के लिए बस क्लाउड प्रबंधक एजेंट स्थापित कर सकते हैं। यह आपके बैकअप डेटा को MongoDB क्लाउड में संग्रहीत करेगा।
फायदे
- उपयोग करने में बहुत आसान। अच्छा जीयूआई।
- प्रश्नों और ओप्लॉग का निरंतर बैकअप।
नुकसान
- बैकअप डेटा पर कोई नियंत्रण नहीं। इसे MongoDB क्लाउड में स्टोर किया जाता है।
- लागत डेटा के आकार और ऑप्लॉग परिवर्तन की मात्रा पर निर्भर करती है।
- पुनर्स्थापित करने की प्रक्रिया धीमी है।
स्नैपशॉट डेटाबेस फ़ाइलें
यह आपके डेटाबेस का बैकअप लेने का सबसे सरल उपाय है। आप सभी अंतर्निहित फाइलों (डेटा/निर्देशिका की सामग्री) की प्रतिलिपि बना सकते हैं और इसे किसी भी सुरक्षित स्थान पर रख सकते हैं। सभी फाइलों की प्रतिलिपि बनाने से पहले, आपको डेटा स्थिरता सुनिश्चित करने के लिए डेटाबेस में चल रहे सभी लेखन कार्यों को रोकना चाहिए। आप सभी लेखन कार्यों को रोकने के लिए db.fsyncLock() कमांड का उपयोग कर सकते हैं।
स्नैपशॉट दो प्रकार के होते हैं:एक क्लाउड स्तर का स्नैपशॉट होता है और दूसरा OS स्तर का स्नैपशॉट होता है।
यदि आप AWS जैसे क्लाउड सेवा प्रदाता के साथ डेटाबेस डेटा संग्रहीत कर रहे हैं तो आपको बैकअप के लिए AWS EBS स्नैपशॉट लेना होगा। इसके विपरीत, यदि आप लिनक्स जैसे देशी ओएस में डीबी फाइलों को स्टोर कर रहे हैं तो आपको एलवीएम स्नैपशॉट लेना होगा। LVM स्नैपशॉट अन्य मशीनों के लिए पोर्टेबल नहीं हैं। इसलिए क्लाउड बेस स्नैपशॉट OS आधारित स्नैपशॉट से बेहतर होते हैं।
फायदे
- उपयोग में आसान।
- स्नैपशॉट पर पूर्ण नियंत्रण। आप इसे किसी भी डेटा सेंटर में ले जा सकते हैं।
- ये स्नैपशॉट अलग स्नैपशॉट हैं जो केवल पिछले स्नैपशॉट के अंतर को संग्रहीत करते हैं।
- अपने डेटाबेस को पुनर्स्थापित करने के लिए स्नैपशॉट डाउनलोड करने की आवश्यकता नहीं है। आप बस अपने स्नैपशॉट से एक नया वॉल्यूम बना सकते हैं।
नुकसान
- इस पद्धति का उपयोग करके, आप अपने डेटाबेस को केवल ब्रेकअप बिंदुओं पर पुनर्स्थापित कर सकते हैं।
- रखरखाव कभी-कभी बहुत जटिल हो जाता है।
- सभी रेप्लिका सेट (शार्ड सिस्टम में) में बैकअप को समन्वित करने के लिए, आपको एक विशेष devops टीम की आवश्यकता है।
MongoDB कंसिस्टेंट बैकअप टूल
MongoDB संगत बैकअप MongoDB क्लस्टर के लगातार बैकअप करने के लिए एक उपकरण है। यह डेटाबेस के एक बिंदु पर एक या कई शार्क वाले क्लस्टर का बैकअप ले सकता है। यह डिफ़ॉल्ट बैकअप विधि के रूप में Mongodump का उपयोग करता है। इस टूल का उपयोग करके बैकअप लेने के लिए निम्न कमांड चलाएँ।
$ mongodb-consistent-backup -H localhost -P 27017 -u USERNAME -p PASSWORD -l /var/backups/mongo
इस आदेश द्वारा उत्पन्न सभी बैकअप MongoRestore संगत हैं। आप निरंतरता सुनिश्चित करने के लिए --oplogReplay विकल्प के साथ उपयोगकर्ता mongorestore कमांड कर सकते हैं।
$ mongorestore --host localhost --port 27017 -u USERNAME -p PASSWORD --oplogReplay --dir /var/backups/mongo/mydb/dump
फायदे
- पूरी तरह से खुला स्रोत
- शार्क किए गए क्लस्टर के साथ काम करता है
- रिमोट बैकअप जैसे Amazon S3 के लिए एक विकल्प प्रदान करता है
- ऑटो-स्केलिंग उपलब्ध
- इंस्टॉल करना और चलाना बहुत आसान है
नुकसान
- पूरी तरह से परिपक्व उत्पाद नहीं
- बहुत कम दूरस्थ अपलोड विकल्प
- डिस्क पर सहेजने से पहले डेटा एन्क्रिप्शन का समर्थन नहीं करता
- आधिकारिक कोड भंडार में उचित परीक्षण का अभाव है
ClusterControl बैकअप
ClusterControl एक सभी में एक स्वचालित डेटाबेस प्रबंधन प्रणाली है। यह आपको आसानी से अपने डेटाबेस क्लस्टर की निगरानी, तैनाती, प्रबंधन और स्केल करने देता है। यह MySQL, MongoDB, PostgreSQL, Percona XtraDB और Galera Cluster को सपोर्ट करता है। यह सॉफ़्टवेयर लगभग सभी डेटाबेस संचालन को स्वचालित करता है जैसे क्लस्टर को तैनात करना, किसी क्लस्टर से नोड जोड़ना या निकालना, निरंतर बैकअप, क्लस्टर को स्केल करना आदि। ये सभी चीजें, आप क्लस्टर कंट्रोल सिस्टम द्वारा प्रदान किए गए एक एकल जीयूआई से कर सकते हैं।
ClusterControl शेड्यूलिंग और रचनात्मक रिपोर्ट के समर्थन के साथ MongoDB बैकअप प्रबंधन के लिए एक बहुत अच्छा GUI प्रदान करता है। यह आपको बैकअप विधियों के लिए दो विकल्प देता है।
- मोंगोडम्प
- मोंगोडब संगत बैकअप
इसलिए यूजर्स अपनी जरूरत के हिसाब से कोई भी विकल्प चुन सकते हैं। यह टूल सभी बैकअप को एक विशिष्ट आईडी प्रदान करता है और इसे इस पथ के अंतर्गत संग्रहीत करता है:ClusterControl> सेटिंग्स> बैकअप> बैकअपआईडी। यदि बैकअप लेते समय निर्दिष्ट नोड लाइव नहीं है तो टूल क्लस्टर से स्वचालित रूप से लाइव नोड ढूंढ लेगा और उस नोड पर बैकअप प्रक्रिया को आगे बढ़ाएगा। यह टूल उपरोक्त बैकअप विधियों में से किसी का उपयोग करके बैकअप शेड्यूल करने का विकल्प भी प्रदान करता है। आप केवल एक बटन को टॉगल करके किसी शेड्यूलिंग कार्य को सक्षम/अक्षम कर सकते हैं। ClusterControl बैकअप प्रक्रिया को पृष्ठभूमि में चलाता है ताकि यह कतार में अन्य कार्यों को प्रभावित न करे।
फायदे
- आसान स्थापना और उपयोग में बहुत आसान
- बैकअप विधियों के लिए अनेक विकल्प
- एक साधारण GUI फ़ॉर्म का उपयोग करके बैकअप शेड्यूलिंग बहुत आसान है
- स्वचालित बैकअप सत्यापन
- स्थिति के साथ बैकअप रिपोर्ट
नुकसान
- दोनों बैकअप विधियां आंतरिक रूप से mongodump का उपयोग करती हैं, जिसमें बहुत बड़े डेटाबेस को संभालने में कुछ समस्याएं हैं।
निष्कर्ष
एक अच्छी बैकअप रणनीति किसी भी डेटाबेस प्रबंधन प्रणाली का एक महत्वपूर्ण हिस्सा है। MongoDB बैकअप और पुनर्प्राप्ति/पुनर्स्थापना के लिए कई विकल्प प्रदान करता है। एक अच्छी बैकअप पद्धति के साथ-साथ, डेटाबेस के कई प्रतिरूपों का होना बहुत महत्वपूर्ण है। यह एक सेकंड के डाउनटाइम के बिना डेटाबेस को पुनर्स्थापित करने में मदद करता है। कभी-कभी बड़े डेटाबेस के लिए, बैकअप प्रक्रिया बहुत संसाधन गहन हो सकती है। तो आपका सर्वर इस तरह के लोड को संभालने के लिए अच्छे CPU, RAM और अधिक डिस्क स्थान से लैस होना चाहिए। बैकअप प्रक्रिया इन कारणों से सर्वर पर लोड बढ़ा सकती है इसलिए आपको बैकअप प्रक्रिया को रातों या गैर-पीक घंटों के दौरान चलाना चाहिए।