MongoDB के लिए नमूना YAML कॉन्फ़िगरेशन फ़ाइलें?


33

MongoDB कॉन्फ़िगरेशन विकल्प प्रलेखन सूचियों सभी उपलब्ध विकल्प है कि निर्दिष्ट किया जा सकता है, लेकिन किसी को भी पूरी तरह से बनाई उदाहरण YAML विभिन्न भूमिकाओं में MongoDB उदाहरण के लिए फ़ाइलें config स्वरूपित का एक सेट है?

आम भूमिकाओं के लिए उदाहरणों का एक सेट खरोंच से शुरू होने वाले लोगों के लिए बहुत उपयोगी शुरुआती बिंदु होगा, या नवीनतम कॉन्फ़िगरेशन फ़ाइल प्रारूप के साथ परीक्षण करना होगा।

जवाबों:


47

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

सबसे पहले, mongodडिफ़ॉल्ट पोर्ट, पथ, जर्नल सेटिंग्स के साथ एक स्टैंडअलोन - यह स्थानीय परीक्षण के लिए उपयोग किए जाने वाले कॉन्फ़िगरेशन का प्रकार होगा, कुछ अतिरिक्त के साथ सामान्य शैली दिखाते हैं:

storage:
    dbPath: "/data/db"
    directoryPerDB: true
    journal:
        enabled: true
systemLog:
    destination: file
    path: "/data/db/mongodb.log"
    logAppend: true
    timeStampFormat: iso8601-utc
processManagement:
    fork: true
net:
    bindIp: 127.0.0.1
    port: 27017
    wireObjectCheck : false
    unixDomainSocket: 
        enabled : true

इस कॉन्फिगर पर कुछ नोट्स:

  • आप आम तौर पर wireObjectCheck: falseउत्पादन में वस्तु की जांच ( ) करना नहीं चाहते हैं , लेकिन परीक्षण प्रयोजनों के लिए डेटा के एक बड़े भार के लिए, यह चीजों को थोड़ा गति देगा और ऐसे वातावरण में एक न्यूनतम जोखिम है
  • यह प्रतिकृति के लिए तब तक काम नहीं करेगा जब तक कि प्रतिकृति सेट का सभी सदस्य लूपबैक आईपी पते पर न हो (जैसा कि यह केवल निर्दिष्ट बाध्यकारी है), इसलिए सावधान रहें

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

storage:
    dbPath: "/data/db"
    directoryPerDB: true
    journal:
        enabled: true
systemLog:
    destination: file
    path: "/var/log/mongodb.log"
    logAppend: true
    timeStampFormat: iso8601-utc
replication:
    oplogSizeMB: 10240
    replSetName: "rs1"
processManagement:
    fork: true
net:
    bindIp: 192.0.2.1
    port: 27018
security:
    keyFile: "/data/key/rs1.key"
    authorization: "enabled"
sharding:
    clusterRole: "shardsvr"

इस विन्यास पर कुछ नोट्स:

  • फिर से डिफॉल्ट और निहित सेटिंग्स की स्पष्ट घोषणाएं हैं (उदाहरण के लिए क्लस्टर क्लस्टर द्वारा निहित है), आम तौर पर भ्रम से बचने के लिए यह सिफारिश की जाती है
  • IP बाइंडिंग अब केवल बाहरी IP पता है, इसलिए लूपबैक IP पर संचार अब विफल हो जाएगा, लेकिन प्रतिकृति दूरस्थ होस्ट के लिए काम कर सकती है
  • 5% मुक्त स्थान पर अफीम डिफॉल्ट करता है, इसलिए बड़े संस्करणों पर आम है कि यह अधिक रूढ़िवादी हो और स्पष्ट रूप से आवंटित किया गया हो

अगला, एक नमूना mongosविन्यास:

sharding:
    configDB: "config1.example.net:27019,config2.example.net:27019,config3.example.net:27019"
    autoSplit: true
systemLog:
    destination: file
    path: "/var/log/mongos.log"
processManagement:
    fork: true
net:
    port: 27017
    bindIp: 192.0.2.2
    maxIncomingConnections: 5000
security:
    keyFile: "/data/key/mongos.key"
    authorization: "enabled"

यहां केवल आवश्यक परिवर्तन वे निष्कासन हैं जो mongos(डेटा संग्रहीत नहीं करता है) और configDBस्ट्रिंग के अतिरिक्त पर लागू नहीं होते हैं , जो सभी mongosप्रक्रियाओं पर समान होना चाहिए । मैंने एक उदाहरण के रूप में अधिकतम कनेक्शन सेटिंग को जोड़ा, इसकी आवश्यकता नहीं है लेकिन अक्सर बड़े समूहों के लिए एक अच्छा विचार हो सकता है।

शार्प किए गए क्लस्टर को राउंड करने से हमारे पास एक सैंपल कॉन्फिग सर्वर है, जो वास्तव में कुछ छोटे बदलावों के साथ प्रतिकृति सेट सदस्य का सबसेट है:

storage:
    dbPath: "/data/db"
    journal:
        enabled: true
systemLog:
    destination: file
    path: "/var/log/mongodb.log"
    logAppend: true
    timeStampFormat: iso8601-utc
processManagement:
    fork: true
net:
    bindIp: 192.0.2.3
    port: 27019
security:
    keyFile: "/data/key/config.key"
    authorization: "enabled"
sharding:
    clusterRole: "configsvr"

अंत में, MongoDB 3.0 (इसे लिखने के समय अभी तक जारी नहीं किया गया है) विशेष रूप से नए भंडारण इंजनों की शुरूआत के साथ कई नए विकल्प पेश करेगा। इसलिए, यहां एक ही प्रतिकृति सेट सदस्य को कॉन्फ़िगर करने के तरीके का एक उदाहरण दिया गया है, लेकिन इस बार WiredTiger भंडारण इंजन और (डिफ़ॉल्ट) तड़क-भड़क संपीड़न विधि (नोट: SERVER-16266 के कारण मूल से बदल दिया गया है , और जोड़ा नमूना engineConfig:

storage:
    dbPath: "/data/db"
    engine: "wiredTiger"
    wiredTiger:
        engineConfig: 
            cacheSizeGB: 8
        collectionConfig: 
            blockCompressor: snappy        
systemLog:
    destination: file
    path: "/var/log/mongodb.log"
    logAppend: true
    timeStampFormat: iso8601-utc
replication:
    oplogSizeMB: 10240
    replSetName: "rs1"
processManagement:
    fork: true
net:
    bindIp: "192.0.2.1,127.0.0.1"
    port: 27018
security:
    keyFile: "/data/key/rs1.key"
    authorization: "enabled"
sharding:
    clusterRole: "shardsvr"

अंतिम बोनस जोड़ के रूप में, मैंने दिखाया कि एक सूची का उपयोग करके कई आईपी पते को कैसे बांधना है, इस मामले में एक बाहरी आईपी और लूपबैक आईपी।


2
एडम फिर से इसके लिए धन्यवाद क्योंकि यह बहुत उपयोगी जानकारी है। मुझे विशेष रूप से पसंद है कि 2.8 स्टोरेज इंजन कॉन्फ़िगरेशन के लिए कुछ अंतर्दृष्टि दी गई है। एक चीज जो मैं बस जोड़ना चाहता हूं, वह यह है कि "प्रक्रिया प्रबंधन" कॉन्फिगरेशन वह चीज है जिसे ज्यादातर लोग तब छोड़ना चाहते हैं जब दूसरे "प्रोसेस मैनेजर" के तहत चल रहे उबंटू एक आम बात है। इसलिए आप वहां "कांटा" नहीं डालना चाहते हैं और कॉन्फ़िगरेशन के उस हिस्से को संभालने के लिए इसे प्रबंधक पर छोड़ दें। YAML का सबसे अच्छा उदाहरण वहाँ बाहर है, हालांकि मेरे +1
नील लुन

बहुत उपयोगी। दिलचस्प है, क्या यह 2.8 और आगे के साथ पिछड़े संगतता के लिए 2.4 कॉन्फ़िगरेशन फ़ाइल प्रारूप रहेगा?
एंड्री

निश्चित रूप से निश्चित नहीं है कि इसे कब हटाया जाएगा, लेकिन जहां तक ​​मुझे पता है, 2.8 में इसे बरकरार रखा जाएगा। किसी भी निष्कासन को अग्रिम रूप से अच्छी तरह से सूचित किया जाएगा, निश्चित रूप से
एडम सी

बस किसी को भी एक सेटपैरेट उदाहरण चाहिए, इस उत्तर को देखें: dba.stackexchange.com/a/87653/6441
एडम सी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.