रेप्लिका सेट सदस्य: Primary, Secondary, Arbiter
शिक्षार्थी प्रत्येक रेप्लिका सेट सदस्य की भूमिका बताएँगे और देखेंगे कि oplog के माध्यम से लेखन Primary से Secondary सदस्यों तक कैसे पहुँचता है।
रेप्लिका सेट सदस्य: Primary, Secondary, Arbiter, CoddyKit पर MongoDB Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह MongoDB Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। MongoDB Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
रेप्लिका सेट क्या है
रेप्लिका सेट MongoDB सर्वरों का एक समूह है, जिनमें सभी एक ही डेटा रखते हैं और उच्च उपलब्धता तथा अतिरिक्त सुरक्षा प्रदान करते हैं। यदि कोई सर्वर विफल हो जाए, तो दूसरा सर्वर अपने-आप उसकी जगह ले लेता है। सामान्य रेप्लिका सेट में तीन या अधिक सदस्य होते हैं: कम-से-कम एक प्राइमरी, एक या अधिक सेकेंडरी और वैकल्पिक रूप से एक आर्बिटर।
प्राइमरी: सत्य का स्रोत
प्राइमरी ही एकमात्र सदस्य है जो लेखन क्रियाएँ स्वीकार करता है। सभी क्लाइंट इंसर्ट, अपडेट और डिलीट प्राइमरी को भेजते हैं। यह हर लेखन क्रिया को oplog (ऑपरेशंस लॉग) नामक विशेष लॉग में दर्ज करता है, जिसे सेकेंडरी समकालिक बने रहने के लिए पढ़ते हैं।
// Check which member is primary in mongosh
rs.isMaster()
// or
rs.status()सेकेंडरी: सक्रिय स्टैंडबाय
सेकेंडरी प्राइमरी के oplog को लगातार पढ़कर और उन्हीं क्रियाओं को डेटा की अपनी प्रति पर लागू करके डेटा की प्रतिकृति बनाता है। सेकेंडरी रीड क्वेरी दे सकते हैं (उचित रीड प्राथमिकता के साथ) और वर्तमान प्राइमरी अनुपलब्ध होने पर उसकी जगह प्राइमरी बन सकते हैं।
// View oplog on a secondary
use local
db.oplog.rs.find().sort({$natural: -1}).limit(5)Oplog: प्रतिकृति की रीढ़
oplog (ऑपरेशंस लॉग) एक विशेष सीमित संग्रह है, जो हर रेप्लिका सेट सदस्य के local डेटाबेस में संग्रहीत होता है। प्राइमरी पर होने वाला हर लेखन oplog में जोड़ दिया जाता है। सेकेंडरी oplog पढ़ते हैं और प्रत्येक प्रविष्टि को क्रम से दोबारा लागू करते हैं, जिससे उनका डेटा प्राइमरी के समान बना रहता है। oplog का आकार तय करता है कि पूर्ण पुनःसमकालिकीकरण की आवश्यकता पड़ने से पहले कोई सेकेंडरी कितना पीछे रह सकता है।
// Check oplog size and time range
use local
db.oplog.rs.stats().maxSize
db.oplog.rs.find({},{ts:1,op:1,ns:1}).sort({$natural:-1}).limit(3)आर्बिटर: बराबरी तोड़ने वाला सदस्य
आर्बिटर एक हल्का रेप्लिका सेट सदस्य है, जो कोई डेटा नहीं रखता। इसका एकमात्र उद्देश्य चुनावों में भाग लेना और नए प्राइमरी के चयन के समय वोट देना है। आर्बिटर का उपयोग सम-सदस्य वाले सेट में (जैसे दो डेटा रखने वाले सदस्य) किया जाता है, ताकि तीसरे पूर्ण डेटा नोड की लागत के बिना हमेशा बहुमत प्राप्त किया जा सके।
// Add an arbiter to the replica set
rs.addArb('hostname:27017')वोट और चुनाव का अवलोकन
हर रेप्लिका सेट सदस्य के पास एक वोट (0 या 1) होता है। प्राइमरी का चुनाव बहुमत के वोट से होता है। 3 सदस्यों में, जिनमें प्रत्येक के पास 1 वोट है, बहुमत 2 होता है। यदि प्राइमरी बंद हो जाए, तो बचे हुए दो सदस्य चुनाव करते हैं और जिसका oplog सबसे अधिक अद्यतन होता है, वह सामान्यतः जीतता है। सामान्य नेटवर्क परिस्थितियों में चुनाव कुछ सेकंड में पूरा हो जाता है।
// View all members and their vote configuration
rs.conf().members.forEach(m => {
print(m.host, 'votes:', m.votes, 'priority:', m.priority)
})सदस्यों की प्राथमिकताएँ
हर सदस्य का एक प्राथमिकता मान होता है (डिफ़ॉल्ट 1)। अधिक प्राथमिकता वाले सदस्य को चुनाव में प्राइमरी बनने के लिए प्राथमिकता दी जाती है। प्राथमिकता को 0 पर सेट करने से सदस्य कभी प्राइमरी नहीं बन सकता—यह दूरस्थ डेटा केंद्रों के सेकेंडरी के लिए उपयोगी है, जिन्हें स्थानीय रीड उपलब्ध कराने हैं, लेकिन प्राइमरी क्षेत्र से लेखन स्वीकार नहीं करना है।
// Set a member to never become primary (priority 0)
let cfg = rs.conf()
cfg.members[2].priority = 0
rs.reconfig(cfg)छिपे और विलंबित सेकेंडरी
छिपे हुए सेकेंडरी (priority 0, hidden: true) ड्राइवरों से अदृश्य होते हैं और प्राइमरी चुनाव समूह को प्रभावित किए बिना केवल बैकअप या विश्लेषण के लिए उपयोग किए जाते हैं। विलंबित सेकेंडरी जानबूझकर कॉन्फ़िगर की गई सेकंड की संख्या से प्राइमरी से पीछे रहते हैं। इससे आकस्मिक डेटा क्षति की स्थिति में क्रमिक पुनर्प्राप्ति की अवधि मिलती है।
// Configure a delayed secondary (e.g., 1 hour behind)
let cfg = rs.conf()
cfg.members[2].hidden = true
cfg.members[2].priority = 0
cfg.members[2].secondaryDelaySecs = 3600
rs.reconfig(cfg)प्रतिकृति विलंब की जाँच
प्रतिकृति विलंब उस समय का अंतर है, जब लेखन प्राइमरी पर प्रतिबद्ध होता है और जब वह सेकेंडरी पर दिखाई देता है। अधिक विलंब का अर्थ है कि सेकेंडरी पुराना डेटा दे रहे हैं। आप rs.printSecondaryReplicationInfo() से या सदस्यों के बीच oplog टाइमस्टैम्प की तुलना करके विलंब की निगरानी कर सकते हैं। Atlas में विलंब के लिए अंतर्निहित चेतावनियाँ उपलब्ध हैं।
// Print replication lag for each secondary
rs.printSecondaryReplicationInfo()
// Example output:
// source: secondary1:27017
// syncedTo: Sat Jun 21 2025 10:00:00
// 0 secs (0 hrs) behind the primaryrs.status() के आउटपुट की व्याख्या
rs.status() रेप्लिका सेट की पूरी स्वास्थ्य स्थिति लौटाता है। जाँचने योग्य प्रमुख फ़ील्ड हैं: stateStr (PRIMARY / SECONDARY / ARBITER / DOWN), optimeDate (अंतिम लागू की गई oplog प्रविष्टि), health (1 = स्वस्थ, 0 = पहुँच से बाहर) और समस्याग्रस्त सदस्यों की त्रुटि संबंधी जानकारी के लिए lastHeartbeatMessage।
rs.status().members.forEach(m => {
print(m.name, m.stateStr, 'health:', m.health)
})डेटा लेखन का आरंभ से अंत तक प्रवाह
जब कोई क्लाइंट दस्तावेज़ लिखता है, तो प्रवाह इस प्रकार होता है: 1) ड्राइवर लेखन को प्राइमरी को भेजता है। 2) प्राइमरी लेखन को WiredTiger संग्रहण पर लागू करता है। 3) प्राइमरी क्रिया को अपने oplog में जोड़ता है। 4) सेकेंडरी oplog प्रविष्टि प्राप्त करके उसे लागू करते हैं। 5) प्राइमरी कॉन्फ़िगर किए गए writeConcern के अनुसार क्लाइंट को पुष्टि भेजता है।
// Write with w:majority ensures secondaries have acknowledged
db.orders.insertOne(
{ item: 'laptop', qty: 1 },
{ writeConcern: { w: 'majority', wtimeout: 5000 } }
)त्वरित जाँच
इस पाठ में MongoDB और NoSQL डेटाबेस की अवधारणाओं के बारे में अपनी समझ जाँचें।
पाठ का पुनरावलोकन
इस पाठ में आपने सीखा: प्राइमरी सभी लेखन स्वीकार करता है और उन्हें oplog में दर्ज करता है, सेकेंडरी समान प्रतियाँ बनाए रखने के लिए oplog से प्रतिकृति बनाते हैं, और आर्बिटर कोई डेटा नहीं रखते, लेकिन चुनावों में वोट देते हैं। अब हम जानेंगे कि वर्तमान प्राइमरी के विफल होने पर MongoDB अपने-आप नए प्राइमरी का चुनाव कैसे करता है।
एआई शिक्षक के साथ JavaScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “रेप्लिका सेट सदस्य: Primary, Secondary, Arbiter” पाठ निःशुल्क है?
हाँ—“रेप्लिका सेट सदस्य: Primary, Secondary, Arbiter” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और MongoDB Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। MongoDB Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“रेप्लिका सेट सदस्य: Primary, Secondary, Arbiter” में मैं क्या सीखूँगा?
शिक्षार्थी प्रत्येक रेप्लिका सेट सदस्य की भूमिका बताएँगे और देखेंगे कि oplog के माध्यम से लेखन Primary से Secondary सदस्यों तक कैसे पहुँचता है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ MongoDB Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या MongoDB Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर MongoDB Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“रेप्लिका सेट सदस्य: Primary, Secondary, Arbiter” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस MongoDB Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर MongoDB Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- रेप्लिका सेट सदस्य: Primary, Secondary, Arbiter
- चुनाव और स्वचालित फ़ेलओवर
- राइट कन्सर्न और स्वीकृत टिकाऊपन
- रीड प्रेफ़रेंसेज़: रीड लोड वितरित करना