MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB चेन प्रतिकृति मूल बातें

श्रृंखला प्रतिकृति क्या है?

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

श्रृंखला प्रतिकृति का उपयोग क्यों करें?

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

चेन रेप्लिका कैसे सेटअप करें

डिफ़ॉल्ट रूप से, MongoDB में जंजीर प्रतिकृति सक्षम है। इसलिए हम श्रृंखला प्रतिकृति को निष्क्रिय करने की प्रक्रिया के बारे में विस्तार से बताएंगे। श्रृंखला प्रतिकृति को अक्षम करने का प्रमुख कारण यह है कि यदि यह अंतराल पैदा कर रहा है। चेन प्रतिकृति की योग्यता हालांकि लैग डिमेरिट से बेहतर है और इसलिए ज्यादातर मामलों में इसे निष्क्रिय करना अनावश्यक है। यदि श्रृंखला प्रतिकृति डिफ़ॉल्ट रूप से सक्रिय नहीं है, तो निम्न आदेश सक्रिय करने में आपकी सहायता करेंगे।

cfg = rs.config()
cfg.settings.chainingAllowed = true
rs.reconfig(cfg)

यह प्रक्रिया प्रतिवर्ती है। जब श्रृंखला प्रतिकृति को निष्क्रिय करने के लिए मजबूर किया जाता है, तो निम्नलिखित प्रक्रिया का धार्मिक रूप से पालन किया जाता है।

cfg = rs.config()
cfg.settings.chainingAllowed = false
rs.reconfig(cfg)

श्रृंखला प्रतिकृति के लिए युक्तियाँ और तरकीबें

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

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

एक अन्य महत्वपूर्ण टिप प्रतिकृति के साथ w का उपयोग कर रही है। w पैरामीटर उन सर्वरों की संख्या को नियंत्रित करता है जिन्हें सफलता वापस करने से पहले एक प्रतिक्रिया लिखी जानी चाहिए। जब w पैरामीटर सेट किया जाता है, तो getlasterror सर्वर के ओप्लॉग की जांच करता है और तब तक प्रतीक्षा करता है जब तक कि दिए गए 'w' सर्वर के ऑपरेशन लागू नहीं हो जाते।

MongoDB मॉनिटरिंग सर्विस (MMS) या ClusterControl जैसे मॉनिटरिंग टूल का उपयोग करने से आप अपने प्रतिकृति नोड्स की स्थिति प्राप्त कर सकते हैं और समय के साथ परिवर्तनों की कल्पना कर सकते हैं। उदाहरण के लिए, एमएमएस में, आप सेकेंडरी नोड्स के रेप्लिका लैग ग्राफ़ पा सकते हैं जो प्रतिकृति लैग टाइम में भिन्नता दिखाते हैं।

श्रृंखला प्रतिकृति प्रदर्शन को मापना

अब तक आप जानते हैं कि श्रृंखला प्रतिकृति का सबसे महत्वपूर्ण प्रदर्शन पैरामीटर प्रतिकृति अंतराल समय है। इसलिए हम चर्चा करेंगे कि प्रतिकृति अंतराल अवधि के लिए परीक्षण कैसे करें। यह परीक्षण MongoDb शेल स्क्रिप्ट के माध्यम से किया जा सकता है। प्रतिकृति अंतराल परीक्षण करने के लिए, हम प्राथमिक नोड पर अंतिम ईवेंट के ओप्लॉग और द्वितीयक नोड पर अंतिम ईवेंट के ऑप्लॉग की तुलना करते हैं।

प्राथमिक नोड के लिए जानकारी की जांच करने के लिए, हम निम्नलिखित कोड चलाते हैं।

db.printSlaveReplicationInfo()

उपरोक्त आदेश प्राथमिक नोड पर हाल के सभी कार्यों के बारे में जानकारी प्रदान करेगा। परिणाम नीचे दिखाई देने चाहिए।

rs-ds046297:PRIMARY db.printSlaveReplicationInfo()
source: ds046297-a1.mongolab.com:46297
synced To: Tue Mar 05 2013 07:48:19 GMT-0800 (PST)
      = 7475 secs ago (2.08hrs)
source: ds046297-a2.mongolab.com:46297
synced To: Tue Mar 05 2013 07:48:19 GMT-0800 (PST)
      = 7475 secs ago (2.08hrs)

प्राथमिक के लिए ओप्लॉग प्राप्त करने के बाद, अब हम द्वितीयक नोड के लिए ओप्लॉग में रुचि रखते हैं। निम्न आदेश हमें oplog प्राप्त करने में मदद करेगा।

db.printReplicationInfo()

यह कमांड ओप्लॉग साइज, लॉग लंबाई, ओप्लॉग फर्स्ट इवेंट के लिए समय, ओप्लॉग लास्ट इवेंट के लिए समय और वर्तमान समय के विवरण के साथ एक आउटपुट प्रदान करेगा। परिणाम नीचे के रूप में दिखाई देते हैं।

rs-ds046297:PRIMARY db.printReplicationInfo()
configured oplog size:   1024MB
log length start to end: 5589 secs (1.55hrs)
oplog first event time:  Tue Mar 05 2013 06:15:19 GMT-0800 (PST)
oplog last event time:   Tue Mar 05 2013 07:48:19 GMT-0800 (PST)
now:                     Tue Mar 05 2013 09:53:07 GMT-0800 (PST)

प्राथमिक सर्वर के ओप्लॉग से, अंतिम सिंक 05 मार्च 2013 07:48:19 GMT-0800 (PST) पर हुआ। सेकेंडरी सर्वर के ओप्लॉग से, अंतिम ऑपरेशन मंगल 05 मार्च 2013 07:48:19 GMT-0800 (PST) पर हुआ। प्रतिकृति अंतराल शून्य था और इसलिए हमारी श्रृंखला प्रतिकृति प्रणाली सही संचालन में है। हालांकि प्रतिकृति समय अंतराल उन परिवर्तनों की मात्रा के आधार पर भिन्न हो सकता है जिन्हें दोहराने की आवश्यकता है।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $एकत्रीकरण ढांचे में किसी वस्तु को खोलना

  2. मोंगोडब एकत्रीकरण $ समूह, सरणी की लंबाई प्रतिबंधित करें

  3. MongoDB 3 जावा जांचें कि क्या संग्रह मौजूद है

  4. MongoDB क्वेरी ऑप्टिमाइज़ेशन

  5. MongoDB एग्रीगेशन फ्रेमवर्क स्टेज और पाइपलाइनिंग