ตัวอย่างไฟล์การกำหนดค่า YAML สำหรับ MongoDB?


33

MongoDB เอกสารตั้งค่าตัวเลือกรายชื่อตัวเลือกทั้งหมดที่มีอยู่ที่สามารถระบุ แต่ไม่มีใครมีชุดของตัวอย่างที่เกิดขึ้นอย่างเต็มที่ YAML จัดรูปแบบไฟล์การกำหนดค่าสำหรับกรณี MongoDB ในบทบาทต่าง ๆ หรือไม่?

ชุดของตัวอย่างสำหรับบทบาททั่วไปจะเป็นจุดเริ่มต้นที่มีประโยชน์มากสำหรับผู้ที่เริ่มต้นจากศูนย์หรือค้นหาเพื่อทดสอบกับรูปแบบไฟล์การกำหนดค่าล่าสุด

คำตอบ:


47

ต่อไปนี้เป็นตัวอย่างของYAML configs สำหรับ Linux (เส้นทางและตัวเลือก Windows แตกต่างกันเล็กน้อย) โดยพื้นฐานแล้วจะเป็นการตั้งค่าเริ่มต้นและการตั้งค่าที่ใช้กันทั่วไปอย่างชัดเจน

ขั้นแรกเป็นแบบสแตนด์อโลนที่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) ในการผลิต แต่สำหรับการโหลดข้อมูลจำนวนมากเพื่อการทดสอบมันจะเพิ่มความเร็วขึ้นเล็กน้อยและมีความเสี่ยงน้อยที่สุดในสภาพแวดล้อมดังกล่าว
  • สิ่งนี้จะไม่ทำงานสำหรับการทำซ้ำเว้นแต่ว่าสมาชิกทั้งหมดของชุดเรพลิกาจะอยู่ในที่อยู่ IP ลูปแบ็ค (เนื่องจากนี่เป็นเพียงการเชื่อมโยงที่ระบุเท่านั้น) ดังนั้นระวัง

ตอนนี้เรามาดูตัวอย่างไฟล์ปรับแต่งสำหรับสมาชิกชุดเรพพลิกาทั่วไปที่เปิดใช้งานการรับรองความถูกต้องและทำงานเป็นส่วนหนึ่งของคลัสเตอร์ที่แตกออก:

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"

หมายเหตุบางประการเกี่ยวกับการกำหนดค่านี้:

  • อีกครั้งมีการประกาศอย่างชัดเจนของค่าเริ่มต้นและการตั้งค่าโดยนัย (พอร์ตจะส่อให้เห็นโดย clusterRole เช่น) โดยทั่วไปจะแนะนำให้หลีกเลี่ยงความสับสน
  • ตอนนี้การรวม IP เป็นที่อยู่ IP ภายนอกเท่านั้นดังนั้นการสื่อสารกับ loopback IP จะล้มเหลว แต่การจำลองแบบสามารถทำงานกับโฮสต์ระยะไกลได้
  • ค่าเริ่มต้นของ oplog เป็น 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 และวิธีการบีบอัดแบบ snappy (ค่าเริ่มต้น) (หมายเหตุ: เปลี่ยนแปลงจากต้นฉบับเนื่องจาก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"

ในฐานะที่เป็นการเพิ่มโบนัสขั้นสุดท้ายฉันแสดงวิธีผูกหลายที่อยู่ IP โดยใช้รายการในกรณีนี้ IP ภายนอกและ IP ลูปแบ็ค


2
ขอขอบคุณอดัมอีกครั้งเพราะมันเป็นข้อมูลที่มีประโยชน์มาก ฉันชอบโดยเฉพาะอย่างยิ่งที่มีความเข้าใจที่กำหนดให้กับ 2.8 การกำหนดค่าเครื่องมือจัดเก็บข้อมูล สิ่งหนึ่งที่ฉันต้องการเพิ่มคือ "การจัดการกระบวนการ" การกำหนดค่าเป็นสิ่งที่คนส่วนใหญ่ต้องการละเว้นเมื่อทำงานภายใต้ "ผู้จัดการกระบวนการ" Ubuntu อีกคนพุ่งพรวดเป็นคนธรรมดา ดังนั้นคุณไม่ต้องการ "แยก" ที่นั่นแล้วปล่อยให้ผู้จัดการจัดการส่วนหนึ่งของการกำหนดค่านั้น ตัวอย่างที่ดีที่สุดของ YAML กำหนดไว้ที่นั่นดังนั้น +1 ของฉัน
Neil Lunn

มีประโยชน์มาก. น่าสนใจจะเป็นรูปแบบไฟล์การกำหนดค่า 2.4 จะยังคงอยู่สำหรับความเข้ากันได้ย้อนหลังกับ 2.8 และเพิ่มเติมหรือไม่
Andrey

ไม่แน่ใจว่าเมื่อไหร่จะถูกลบ แต่เท่าที่ฉันรู้มันจะถูกเก็บไว้ใน 2.8 การลบใด ๆ จะได้รับการสื่อสารล่วงหน้าอย่างแน่นอน
Adam C

ในกรณีที่ทุกคนต้องการตัวอย่าง setParameter ดูคำตอบนี้: dba.stackexchange.com/a/87653/6441
อดัมซี
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.