बड़े MongoDB डेटाबेस का बैकअप कैसे लें


15

MongoDB में बड़े डेटा सेट का बैकअप लेने का अनुशंसित तरीका क्या है? मान लीजिए कि हमारे पास 10TB के क्रम में एक डेटा आकार है - आप इसे कैसे वापस करेंगे?

हम एक छिपे हुए, संभवतः विलंबित, प्रतिकृति सेट नोड पर विचार कर रहे हैं। देरी पूरे डेटाबेस की आकस्मिक बूंदों से हमारी रक्षा करेगी। क्या यह एक व्यवहार्य समाधान है, और आप अन्य किन विकल्पों की जाँच करने की सलाह देंगे?

धन्यवाद!

जवाबों:


21

10TB की आवश्यकता होने के साथ यह थोड़ा जटिल हो जाता है।

प्रतिकृतियां उचित बैकअप के लिए कोई प्रतिस्थापन नहीं हैं

जबकि विलंबित प्रतिकृति सेट सदस्य आकस्मिक संचालन में आपकी सहायता करने के लिए अपेक्षाकृत आसान तरीका प्रदान कर सकते हैं, उचित बैकअप के लिए कोई प्रतिस्थापन नहीं है, बहुत हद तक RAID फ़ाइल सिस्टम आधारित बैकअप के लिए प्रतिस्थापन नहीं है।

अनुशंसाएँ

यह बहुत हद तक इस बात पर निर्भर करता है कि आपका सेटअप कैसा दिखता है।

सैन स्नैपशॉट्स

10TB के साथ, मुझे लगता है कि आपके पास किसी प्रकार का SAN संलग्न है। उन वातावरणों में MongoDB का समर्थन करने का सबसे आसान तरीका यह सुनिश्चित करना है कि आपने फाइलिंग सिस्टम और MongoDB दोनों पर सक्रिय जर्नलिंग की है और बस सेकंड में से किसी एक के SAN वॉल्यूम पर एक स्नैपशॉट लें, जो आपके ऑपरेशन डॉन को सुनिश्चित करने के लिए एक छिपा हुआ है। 'बाधित नहीं हो। यह आमतौर पर मात्र सेकंड लेता है, लेकिन कृपया सुनिश्चित करें कि आपकी प्रतिकृति oplog विंडो पर्याप्त है। अन्यथा, आपको द्वितीयक को फिर से सिंक करने की आवश्यकता हो सकती है।

मोंगोडम्प का प्रयोग न करें

मुझे रोंगांडोएमक्यूडीबीबीए से मोंगोडम्प के उपयोग के बारे में असहमत होना है। सबसे पहले, यह सर्वर पर ताले लगाता है। यद्यपि वे अपेक्षाकृत तेजी से उठाए जाते हैं, तालों की कम संख्या को जोड़ सकते हैं और आपके संचालन में हस्तक्षेप कर सकते हैं, जब तक कि एक छिपे हुए नोड पर नहीं चलता है या जब कोई दूसरी वरीयता नहीं होती है, तो दूसरी तरफ। साथ ही, यह बिल्कुल तेज नहीं है। मुझे उम्मीद है कि यह घंटों तक चलेगा, कम से कम, सबसे अधिक संभावना है कि आपकी बैकअप विंडो से अधिक समय लगेगा। साइड नोट: विकल्प के साथ हमेशा मोंगोडंप चलाएं--oplog। यह भी ध्यान रखें कि मोंगोडंप सूचकांकों का बैकअप नहीं लेता है, बल्कि सूचकांक बनाने के लिए संचालन करता है। उन सूचकांकों को एक पुनर्स्थापना के दौरान फिर से बनाना पड़ता है, जो आपके लिए आवश्यक समय को बड़े पैमाने पर बढ़ा सकते हैं। मेरे अनुभव से, यदि आपको एक डेटाबेस को पुनर्स्थापित करना है, तो आप इसे जितनी जल्दी हो सके उतना जल्दी करना चाहते हैं। एक और बिंदु क्यों mongodump 10TB का समर्थन करने के लिए अनुकूल नहीं है।

LVM स्नैपशॉट पर नोट्स

आप LVM स्नैपशॉट को रनिंग मोंगॉड उदाहरण पर कर सकते हैं बशर्ते कि आपके पास मोंगॉड में सक्षम जर्नलिंग है (और मेरे अनुभव से, यह एफएस स्तर पर भी सक्षम होने के लिए चोट नहीं करता है)। हालांकि, LVM स्नैपशॉट कुछ निहितार्थों के साथ आते हैं। सबसे पहले, आपको स्पष्ट रूप से पर्याप्त डिस्क स्थान होना चाहिए जो बैकअप संचालन के दौरान परिवर्तन ले सकता है। मैं स्पष्ट कर दूं कि।

मान लेते हैं कि आपके पास प्रति घंटा परिवर्तन दर 500GB है। और यह कि आप अपने बैकअप को कुछ स्टोरेज में अपलोड करने से पहले फेक देना चाहते हैं। यहां तक ​​कि समानांतर bzip2 का उपयोग करते समय , 10TB के संपीड़न को समाप्त करने के लिए कुछ घंटों की आवश्यकता होगी, सिर्फ इसलिए कि तथ्य यह है कि सबसे अधिक संभावना है कि आप बड़े पैमाने पर भंडारण थ्रूपुट आपके सीमित कारक बन जाएंगे। मान लें कि डेटा को 2TB तक संपीड़ित करने में 2 घंटे का समय लगेगा। तो अब तक हमें कुछ 2TB + 2 * 500GB मुफ्त डिस्क स्पेस की आवश्यकता होगी, LVM स्नैपशॉट के लिए 1TB की आवश्यकता होगी। यह कम से कम आपके फाइलसिस्टम को प्रावधान करने की आवश्यकता पैदा करेगा30%। यदि आप एक उचित सुरक्षा मार्जिन चाहते हैं, तो यह आसानी से 60-70% तक बढ़ सकता है (मूल फ़ाइल सिस्टम के लिए 0.8 के उपयोग कारक के लिए 20%, स्नैपशॉट आकार के लिए समान है और bzipped बैकअप के लिए आवश्यक स्थान ही है )। अधिकांश उत्पादन परिवेशों में, यह अस्वीकार्य होगा, क्योंकि उस पर प्रावधान स्थिर होगा (आप अपने एलवीएम के साथ गतिशील रूप से जुड़ने के लिए बैकअप स्क्रिप्ट नहीं चाहेंगे, क्या आप?)।

एमएमएस बैकअप

जबकि एमएमएस बैकअप में कुछ कमाल की विशेषताएं हैं (निरंतर बैकअप, समय में पुनर्प्राप्ति में आसान बिंदु), यह कुछ गंभीर खामी के साथ आता है: बड़ी तैनाती के लिए इसका मूल्य टैग आसानी से हजारों में हो सकता है। उन 10TB पर 500GB की प्रति घंटा परिवर्तन दर के साथ, यह क्लाउड बैकअप के लिए एक मध्यम छह-आंकड़ा योग होगा । महीने के।

मेरा सुझाव है कि वह आपके सर्वर के लिए एंटरप्राइज़ सदस्यता लेने के लिए योग्य होगा, जिसमें बैकअप सहित एमएमएस उदाहरण पर पात्र होना चाहिए।

सारांश

यहां वे विकल्प दिए गए हैं जिन्हें मैं वरीयता के क्रम में ले जाऊंगा।

  1. सैन स्नैपशॉट्स: कार्यान्वयन में आसान, अपेक्षाकृत सस्ते
  2. एंटरप्राइज़ सदस्यता: सर्वश्रेष्ठ सुविधाएँ। इसे स्थापित करें, इसे कॉन्फ़िगर करें, इसे भूल जाएं, यह तब होता है जब आपको इसकी आवश्यकता होती है
  3. LVM स्नैपशॉट: लागू करना आसान है, लेकिन प्रावधान से अधिक आवश्यक लागत समय के साथ समाप्त हो सकती है।

5

दो विकल्प हैं

भौतिक बैकप

यदि आप समय से पहले बुरा नहीं मानते हैं, तो सबसे आसान काम है

service mongod stop

LVM स्नैपशॉट करें या किसी cpअन्य डिस्क पर Mongo डेटा फ़ोल्डर की एक क्रूर शक्ति

service mongod start

यदि 10TB डेटा स्टैंडअलोन मशीन पर है, तो निश्चित रूप से आप डाउनटाइम नहीं चाहते हैं।

DELPLED REPLICA सेट करें

यदि आपके पास तीन नोड्स के साथ एक प्रतिकृति सेट है, तो बैकअप के लिए नोड्स में से एक का उपयोग करें

{
        "_id" : "myreplica",
        "version" : 1,
        "members" : [
                {
                        "_id" : 1,
                        "host" : "10.20.30.40:27017",
                        "priority" : 2
                },
                {
                        "_id" : 2,
                        "host" : "10.20.30.41:27017"
                },
                {
                        "_id" : 3,
                        "host" : "10.20.30.42:27017",
                        "priority" : 0,
                        "slaveDelay" : 3600
                }
        ]
}

"_id' : 3अपने सभी भौतिक बैकअप के साथ नोड का उपयोग करें । इसलिए, कोई डाउनटाइम नहीं। आधी रात का स्नैपशॉट प्राप्त करने के लिए, आप बैकअप को 1:00 पूर्वाह्न पर लॉन्च कर सकते हैं क्योंकि छिपा हुआ नोड 1 घंटे पीछे है।

बेशक, दोष यह है कि 10TB के साथ दो और सर्वर हैं और जोखिम में sysadmin की पवित्रता।

MONGODUMP

आप स्टैंडअलोन मशीन के खिलाफ मोंगोडम्प का उपयोग कर सकते हैं लेकिन आपको प्रदर्शन में गिरावट की उम्मीद करनी चाहिए क्योंकि मोंगोडम्प किसी अन्य कनेक्शन की तरह एक कनेक्शन का उपयोग करके एक क्लाइंट प्रोग्राम है।

यदि आप समय-समय पर बैकअप चाहते हैं, तो आपको उपयोग करना चाहिए

mongodump --oplog 

तार्किक BSON बैकअप भौतिक बैकअप की तुलना में छोटा होगा (विशेषकर gzipped या bzipped)।

का उपयोग mongodump --oplogकरना सबसे अच्छा छिपे हुए नोड के खिलाफ किया जाएगा। इस तरह, मास्टर पर कोई प्रदर्शन हिट नहीं है।

अस्वीकरण

मैं MongoDB (आकस्मिक / आकस्मिक MongoDBA) के लिए अपेक्षाकृत नया हूं। मुझे उम्मीद है कि मेरा जवाब मदद करता है।


1
MongoDB में एक भुगतान सेवा भी है जो आपके डेटा का बैकअप लेगी और पॉइंट-इन-टाइम रिस्टोर की अनुमति देगी: mms.mongodb.com/signup/…
जेम्स

मैं एक विलंबित प्रतिकृति सेट सदस्य के उपयोग को नहीं देख सकता। यह कृत्रिम रूप से लाइव डेटा और बैकअप के बीच एक अंतर बनाता है। किसी भी सामान्य प्रतिकृति सेट सदस्य का उपयोग उस के लिए किया जा सकता है, क्योंकि बैकअप को प्रतिकृति oplog खिड़की के दौरान वैसे भी किया जाना है।
मार्कस डब्ल्यू महलबबर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.