2012-08-15 17 views
6

मैं एक एकल mongodb डेटाबेस के लिए दैनिक बैकअप करना चाहता हूं, शायद मोंगोडम्प के साथ। किसी भी डेटा को खोने के लिए, मैं इसे बढ़ाना चाहूंगा ताकि अगर दिन के मध्य में कुछ गलत हो जाए, तो मुझे उस दिन के लिए बदलावों को फिर से चलाने में सक्षम होना चाहिए, जो कि मैंगोरस्टोर करने के बाद विफलता के बिंदु तक है।mongodb के लिए एक incremental बैकअप करना चाहते हैं। Journaling? Oplog?

क्या मैं सही ढंग से समझ रहा हूं कि मुझे इसके लिए एक ओप्लोग का उपयोग करने की आवश्यकता है? या जवाब जर्नल कर रहा है? मैंने निम्नलिखित करने का प्रयास किया:

  1. मेरे मोंगो डेटाबेस को केवल एक के प्रतिकृति सेट में बदलना, ताकि यह एक ओप्लॉग बनाता है। (यह सुंदर hacky महसूस करता है)
  2. --oplog विकल्प
  3. परिवर्तन है कि oplog

हालांकि कुछ भी नहीं कभी oplog में संग्रहीत हो जाता है में दर्ज किया जाना चाहिए प्रदर्शन के साथ mongod पुन: प्रारंभ हो। ऐसे वृद्धिशील बैकअप करने का सबसे अच्छा तरीका क्या है? मैं मूल रूप से mysql binlog को फिर से चलाने के लिए एक समान दृष्टिकोण की तलाश में हूं।

धन्यवाद

उत्तर

5

MongoDB बॉक्स से बाहर एक वृद्धिशील बैकअप विकल्प प्रदान नहीं करता है, लेकिन यह एक फ़ाइल स्नैपशॉट करते हैं और oplog पुनः चलाने के लिए संभव है। क्या आपने दस्तावेज़ में उल्लिखित चरणों के बाद अपना सर्वर एक प्रतिकृति सेट के रूप में स्थापित किया था? http://www.mongodb.org/display/DOCS/Replica+Sets+-+Basics

क्या आप हमें इन बैकअप का उद्देश्य भी बता सकते हैं? क्या आपने डेटा स्थायित्व के लिए अपने प्रतिकृति सेट में दूसरा नोड जोड़ने पर विचार किया है?

यदि आप प्रतिकृति सेट के सदस्य के रूप में सर्वर सेट अप करने के चरणों के माध्यम से चले गए हैं, तो क्या आप खोल में rs.status() चला सकते हैं?

एक अन्य नोट (केवल स्पष्टीकरण के लिए) - जर्नलिंग बैकअप रणनीति नहीं है; जर्नलिंग केवल यह सुनिश्चित करता है कि डेटाबेस विफलता की स्थिति में एक सतत स्थिति में वापस आ सकता है। जर्नलिंग सक्षम के साथ चलाना अत्यधिक अनुशंसित है।

यहाँ बैकअप के लिए MongoDB प्रलेखन है: http://www.mongodb.org/display/DOCS/Backups

+0

स्पष्टीकरण के लिए धन्यवाद, मैंने कल और अधिक देखा है और मैं समझता हूं कि क्या होने की आवश्यकता है। मैं जो करना चाहता हूं वह एक दैनिक मोंगोडम्प करता है, इसे एस 3 में सहेजें, और हर घंटे मेरे ओप्लॉग को एस 3 में भी बचाता है। मेरे पास दो अनुवर्ती प्रश्न हैं यदि आप बहुत दयालु होंगे: 1. मेरा ओप्लोग स्थानीय डेटाबेस में संग्रहीत है और मैं अब इसे मोंगो शैल से एक्सेस करने में सक्षम हूं। ओप्लॉग का बैकअप लेने के लिए, क्या मैं बस अपने सभी स्थानीय प्रतिलिपि बना सकता हूं। (1-एन) और local.ns फाइलें s3 पर? 2. oplogs को फिर से चलाने का सबसे अच्छा तरीका क्या है? क्या mongorestore --oplog इस के लिए पर्याप्त प्रदर्शन है? बहुत बहुत धन्यवाद! –

+2

mongodump --oplog सुनिश्चित करता है कि डंप होने पर बनाई गई किसी भी ओप्लॉग प्रविष्टियों को mongorestore --oplogReplay के साथ फिर से चलाया जा सकता है। डंप समाप्त होने के बाद हुई ओप्लॉग ऑपरेशंस को फिर से चलाने के लिए आप mongorestore --oplogReplay का उपयोग नहीं कर सकते। एक समाधान जिसे आप जांच सकते हैं, हर घंटे ओप्लॉग संग्रह को डंप करना और applyOps कमांड का उपयोग करना है: http://docs.mongodb.org/manual/reference/commands/#applyOps – Jenna

+1

यह हैकी हो सकता है .. लेकिन मुझे लगता है कि मॉन्गोरस्टोर का उपयोग करना --oplogReplay वास्तव में काम किया। मैंने जो किया वह ओप्लोग को मिलाकर, परिणामस्वरूप 'oplog.rs को स्थानांतरित कर दिया गया।bson 'to' dump/oplog.bson 'और mongorestore --oplogReplay चलाया। क्या यह खतरनाक है? यदि यह है तो मैं निश्चित रूप से applyOps तकनीक के साथ जाऊंगा। –

0

बैकअप करने का सबसे अच्छा तरीका है अपने MongoDB बुनियादी ढांचे के भाग के रूप Ops Manager कॉन्फ़िगर करने के लिए है, लेकिन यह इतना अधिक की तुलना में सिर्फ बैकअप है ...

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^