2014-05-15 3 views
7

के साथ मोंगो डीबी उदाहरणों को माइग्रेट करना हम उत्पादन पर्यावरण में मोंगोडीबी का उपयोग कर रहे हैं और अब, मौजूदा सर्वर के कुछ मुद्दों के कारण, मैं सर्वर को बदलने और एक नया मोंगोडीबी उदाहरण शुरू करने जा रहा हूं।कोई डाउन-टाइम

हमारे पास एक प्रतिकृति सेट है और एक mongod उदाहरण (विभिन्न उद्देश्यों के लिए दो अलग मोंगोडीबी नेटवर्क) हैं। अब, पहले मुझे एकल mongod इंस्टेंस माइग्रेट करना चाहिए और फिर संपूर्ण प्रतिकृति को नए सर्वर पर सेट करना चाहिए।

मैं क्या जानना चाहता हूं, मैं बिना किसी समय के दोनों उदाहरण कैसे माइग्रेट कर सकता हूं? मैं सर्वर को बंद करना या लिखना संचालन बंद नहीं करना चाहता हूं।

अग्रिम धन्यवाद।

उत्तर

7

तो सबसे पहले आपको उत्पादन के लिए एक उदाहरण के रूप में कभी भी mongodb नहीं चलाना चाहिए। कम से कम आपके पास 1 प्राथमिक, 1 माध्यमिक और 1 आर्बिटर होना चाहिए।

दूसरा, प्रतिकृति सेट के साथ भी, जब आप प्राइमरी स्विच करते हैं तो आपके पास हमेशा लिखने का थोड़ा सा समय होगा, क्योंकि चुनाव प्रक्रिया के दौरान लिखना संभव नहीं है। दस्तावेज़ों से:

प्रतिकृति सेट के स्वतंत्र संचालन के लिए महत्वपूर्ण चुनाव आवश्यक हैं; हालांकि, चुनाव पूरा करने में समय लगता है। जबकि चुनाव प्रक्रिया में है, प्रतिकृति सेट में कोई प्राथमिक नहीं है और स्वीकार स्वीकार नहीं कर सकता है। मोंगोडीबी जब तक आवश्यक हो चुनावों से परहेज करता है।

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

आप दूसरे विकल्पों के विरुद्ध प्रश्नों को चलाने की अनुमति देने के लिए उपयुक्त विकल्पों को सेट करके मौजूदा प्रतिकृति सेट के साथ न्यूनतम समय तक डाउनटाइम रख सकते हैं। दस्तावेज़ों से फिर से:

एक विफलता के दौरान उपलब्धता को बनाए रखना। प्राथमिक यदि आप प्राथमिक परिस्थितियों के तहत प्राथमिक से पढ़ने के लिए आवेदन चाहते हैं, तो आपात स्थिति में दूसरी बार से स्टेल पढ़ने की अनुमति दें। यह एक विफलता के दौरान आपके आवेदन के लिए "केवल-पढ़ने योग्य मोड" प्रदान करता है।

यह कम से कम पढ़ने की देखभाल करता है। आपके एप्लिकेशन को पुनः प्रयास करने में विफलता लिखने या उन्हें कतार में लिखने के साथ सबसे अच्छी तरह से निपटाया जाता है।

अपने स्टैंडअलोन एक प्रतिकृति सेट करने के लिए परिवर्तित करने के लिए प्रलेखित कार्यप्रणालियां के बारे में अच्छी तरह से जांच की जाती है और कम से कम डाउनटाइम के साथ बहुत जल्दी पूरा किया जा सकता:

http://docs.mongodb.org/manual/tutorial/convert-standalone-to-replica-set/

+0

क्या डाउनटाइम तब भी होता है जब मैन्युअल रूप से माध्यमिक सर्वर की प्राथमिकता को प्राथमिकता के रूप में प्राथमिकता दी जाती है (जैसा कि यह पता लगाने के लिए सिस्टम की प्रतीक्षा करने के विपरीत प्राथमिक है)? –

1

जॉन जवाब सही है, btw आपके मामले में आप कोई है डाउनटाइम से बचने के लिए, आप इसे जितना संभव हो सके कम करने की कोशिश कर सकते हैं।

  1. आप नई प्रतिकृति सेट तैयार कर सकते हैं और इसकी कॉन्फ़िगरेशन को सहेज सकते हैं।
  2. एकल मोंगोड उदाहरण के लिए, विशिष्ट विन्यास के साथ एक जेएस फ़ाइल तैयार करें (यानी: व्यवस्थापक डेटाबेस पर सामान चल रहा है)।
  3. उत्पादन सर्वर पर क्लाइंट कनेक्शन अक्षम करें।
  4. पुराने सर्वर से डेटाफाइल को नए (http://docs.mongodb.org/manual/core/backups/#backup-with-file-copies)
  5. अपनी पिछली सहेजी गई प्रतिकृति सेट कॉन्फ़िगरेशन और कॉन्फ़िगरेशन लागू करें।
  6. किया

आप के रूप में प्रतिकृति सेट करता है, तो आप डेटा की एक बहुत कुछ है पर एक छिपा माध्यमिक सदस्य जोड़ने diffent तरीकों का उपयोग कर सकते हैं, तो आप इसे करने की तारीख उत्पादन सर्वर रुकने से पहले है इंतजार कर सकते हैं। असल में प्रतिकृति सेट के लिए आपके पास माइग्रेशन को संभालने के कई तरीके हैं, एक उदाहरण के साथ आपके पास ऐसी विशेषताएं नहीं हैं।

2

प्रतिकृति सेट उच्च उपलब्धता और स्वचालित विफलता प्राप्त करने के लिए मोंगोड डेटाबेस द्वारा प्रदान की गई सुविधा है।

यह पारंपरिक मास्टर-गुलाम कॉन्फ़िगरेशन है लेकिन स्वचालित विफलता की क्षमता है।

यह मूल रूप से समूह/mongod उदाहरण हैं जिनमें संचार के समूह, प्रतिकृति एक दूसरे को उच्च उपलब्धता प्रदान करने के लिए और

मूल रूप से स्वत: विफलता क्या करने के लिए, प्रतिकृति में सेट है देखते हैं कम से कम 2 और 12 mongod आवृत्तियों की अधिकतम कर सकते हैं मौजूद

प्रतिकृति सेट में निम्नलिखित प्रकार के सर्वर मौजूद हैं। सबसे बाहर, एक सर्वर हमेशा प्राथमिक होता है।

http://blog.ajduke.in/2013/05/31/setup-mongodb-replica-set-in-4-steps/

+0

मोंगोड --पोर्ट "पोर्ट" - डीबीपीएथ "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME" –

+0

प्रतिलिपि सेट में सर्वर की न्यूनतम संख्या एक है। –

2

(ताकि आप कम से कम यह करने के लिए कनेक्ट करने की आवश्यकता है एक नया mongod नया आईपी पर चलेगा) आप कोई डाउनटाइम नहीं हो सकता। लेकिन आप भौगोलिक रूप से वितरित प्रतिकृति सेट बनाकर डाउनटाइम को कम कर सकते हैं।

कृपया पढ़ें http://docs.mongodb.org/manual/tutorial/deploy-geographically-distributed-replica-set/

दिया प्रक्रिया का उपयोग करें लेकिन कृपया ध्यान दें:

  1. नए स्थान पर उदाहरणों में से प्राथमिकता 0 पर सेट न करें, ताकि वे प्राथमिक हो जाते हैं जब पुराने स्थान पर पुराने लोगों पद से इस्तीफा।
  2. आपको अभी भी पुराने स्थान पर प्रतिकृति सेट मोड में मोंगोड को पुनरारंभ करने की आवश्यकता है।
  3. यदि आप प्रतिकृति सेट होना चाहते हैं, तो आपको नए स्थान पर एक आर्बिटर समेत 3 उदाहरणों की आवश्यकता है।
  4. जब पूरा डेटा नए स्थान पर उदाहरणों के साथ समन्वयित होता है, तो पुराने स्थान पर एक से नीचे उदाहरण (एक-एक करके)। अब सबकुछ नए स्थान पर जाएगा लेकिन समस्या यह है कि यह एक दूरस्थ मोंगोड के माध्यम से निर्देशित है।
  5. तो पुराने स्थान पर मोंगोड को रोकें और नए स्थान पर एक नया शुरू करें। अपने अनुप्रयोगों को नए स्थान मोंगो से कनेक्ट करें।

नोट: मैंने अभी तक ऐसा नहीं किया है। मैंने इसे एक बार योजना बनाई थी लेकिन फिर मुझे समस्या मिली और यह प्रदाता होस्टिंग का नहीं था। व्यावहारिक रूप से आपको कुछ समस्याएं मिल सकती हैं।

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