MongoDB için örnek YAML Konfigürasyon Dosyaları?


33

MongoDB yapılandırma seçenekleri dokümantasyon listeleri tüm belirtilebilir, ancak kimse tam olarak oluşmuş örneğin YAML çeşitli roller MongoDB örnekleri için yapılandırma dosyalarını biçimlendirilmiş bir dizi var mı kullanılabilir seçenekler?

Ortak roller için bir dizi örnek, sıfırdan başlayanlar veya en son yapılandırma dosyası formatıyla test etmek isteyenler için çok yararlı bir başlangıç ​​noktası olacaktır.

Yanıtlar:


47

Aşağıda Linux için YAML yapılandırmalarının birkaç örneği verilmiştir (Windows yolları ve seçenekler biraz farklıdır);

İlk olarak, mongodvarsayılan bağlantı noktası, yol, günlük ayarları olan bir bağımsız - bu, yerel test için kullanılan yapılandırma türüdür, birkaç ekstra ile genel stili gösterir:

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

Bu yapılandırma hakkında bazı notlar:

  • Genelde nesnenin wireObjectCheck: falseüretimde kontrol edilmesini istemezsiniz ( ), ancak test amacıyla büyük miktarda veri yüklüyorsa, işleri biraz hızlandıracak ve böyle bir ortamda minimum risk oluşturacaktır
  • Bu, çoğaltma kümesinin tüm üyeleri geridöngü IP adresinde bulunmadıkça çoğaltma için işe yaramaz (bu yalnızca belirtilen bağlayıcı olduğundan),

Şimdi, kimlik doğrulamayı etkin kılan ve paylaşılan bir kümenin parçası olarak çalışan tipik bir üretim kopyası küme üyesi için örnek bir yapılandırma dosyasına bakalım:

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"

Bu yapılandırma hakkında bazı notlar:

  • Yine, belirli varsayılan ve açık ayar bildirimleri vardır (örneğin, port clusterRole ile belirtilmiştir), genellikle bu karışıklığı önlemek için önerilir.
  • IP bağlaması şimdi yalnızca dış IP adresidir, bu nedenle geridöngü IP üzerinden iletişim artık başarısız olur, ancak çoğaltma uzak ana bilgisayarlarda çalışabilir
  • Oplog varsayılan olarak% 5 boş alana sahiptir, bu nedenle büyük hacimlerde daha muhafazakar olması ve tahsis edilen boyutu açıkça belirlemesi yaygındır.

Sonra, örnek bir mongosconfig:

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"

Buradaki tek gerekli değişiklikler mongos(veri depolamamasından dolayı) ve configDBtüm mongosişlemlerde aynı olması gereken dizenin eklenmesidir . Örnek olarak maksimum bağlantı ayarını ekledim, zorunlu değil, ancak daha büyük kümeler için iyi bir fikir olabilir.

Parçalı kümeyi yuvarlayarak, bazı küçük değişikliklerle birlikte çoğaltma kümesi üyesinin bir alt kümesi olan örnek bir yapılandırma sunucusuna sahibiz:

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"

Son olarak, MongoDB 3.0 (henüz bunu yazarken henüz yayınlanmadı), özellikle yeni depolama motorlarının tanıtılmasıyla birlikte birçok yeni seçenek sunacaktır. Bu nedenle, aynı kopya kümesi üyesini nasıl yapılandıracağınıza bir örnek, ancak bu sefer WiredTiger depolama motoru ve (varsayılan) çabuk sıkıştırma yöntemiyle (not: SERVER-16266 nedeniyle orijinalinden değiştirilmiş ve eklenmiş örnek 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"

En son bonus olarak, bir liste kullanarak birden fazla IP adresini nasıl bağlayacağımı, bu durumda harici bir IP ve geridöngü IP'sini gösterdim.


2
Bunun için çok teşekkürler Adam, bunun için çok yararlı bir bilgi. Özellikle 2.8 depolama motoru konfigürasyonuna ilişkin bazı iç görüler olduğunu seviyorum. Sadece eklemek istediğim şey, "processManagement" config'in çoğu kişinin başka bir "işlem yöneticisi" altında çalışırken göz ardı etmek istediği bir şey olduğudur. Yani orada “çatal” yapmak istemez ve konfigürasyonun bu kısmını idare etmek için yöneticiye bırakabilirsiniz. En iyi YAML örneği orada olsa da + 1
Neil Lunn

Çok kullanışlı. İlginçtir, 2,4 yapılandırma dosyası formatı 2,8 ve daha fazlası ile geriye dönük uyumluluk için kalır mı?
Andrey,

Ne zaman çıkarılacağından tam olarak emin değilim, ancak bildiğim kadarıyla 2.8'de tutulacak. Herhangi bir kaldırma işlemi elbette önceden bildirilecektir.
Adam C

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.