Bir sunucuda birden fazla Moğol


11

Parçalama hakkında konuşmuyorum . Bir test sunucumuz vardı (linux) ve zaten mongobaşka bir projeye / alt takıma ait bir tane var. O çalıştırmak mümkün mü birden izole örneklerini ait mongodbbir makinede? Nasıl yapabilirim?

Yanıtlar:


14

Evet, bunu, diğer örnekleri için farklı bağlantı noktası numaraları ve veri dizinleri mongodbelirterek ve sonra istemcideki yeni bağlantı noktası numarasını belirterek yapabilirsiniz.

Örneğin:

./mongod --dbpath /foo/bar/otherpath --port some_other_port

Sen olabilir de değişir eğer gerekiyorsa kırığından sunucu ve yapılandırma sunucusu bağlantı noktası numaralarını.


1
Bunu mongodb.conf içinde belirtmek mümkün mü? Yoksa bunu yapmak için bir komut dosyası oluşturmam gerekir mi? (üzerinde * nix)
Justin

@Justin, bu seçenekleri kesinlikle bir yapılandırma dosyası içinde belirtebilirsiniz - bkz. Mongodb.org/display/DOCS/File+Based+Configuration . Ancak yine de farklı örneklere farklı yapılandırma dosyaları aktarmanız gerekir.
dsolimano

Teşekkürler @dsolimano, iki Moğol örneği için rc.d'de iki senaryom var. Ben db, pid, günlüğü için farklı yollar belirledim ve onlara dinlemek için farklı bağlantı noktaları verdim. Ayrıca çatallanır ve ikinci komut dosyası çalıştırıldığında, mongo zaten çalıştığından başarısız olur (ilk örnek). Yani sanırım asıl sorum şuydu (bunu web'de bulmakta pek şansım olmadı) Aynı anda çalışan iki çatallı örneğiniz olabilir mi? Teşekkürler
Justin

@ Justin, bence bu muhtemelen yeni bir soru seviyesine yükseliyor, belki de bu sitede sormalısın? Mongo'ya başlama şeklinizde soruna neden olan bir şey var gibi görünüyor.
dsolimano

3

Attığım adımlar:

  1. Conf dosyasını /etc/mongod.conf dosyasını mongod2.conf dosyasına ve ayrıca mongod3.conf dosyasına kopyalayın
  2. Conf dosyalarını farklı bağlantı noktalarına ve farklı veritabanı yollarına sahip olacak şekilde düzenleyin
  3. İnit.d start script /etc/init.d/mongod dosyasını mongod2'ye ve ayrıca mongod3'e kopyalayın
  4. İkili mongod / usr / bin / mongod'u / usr / bin / mongod2'ye ve ayrıca / usr / bin / mongod3'e kopyalayın
  5. İnit.d start komut dosyalarını düzenleyin ve aşağıdakileri değiştirin:

    CONFIGFILE = "/ etc / mongod2.conf" (sırasıyla mongod3.conf)

    ....

    mongod = $ {MONGOD- / usr / bin / mongod2} (sırasıyla mongod3)

/ Var / lock / subsys / mongod, bulduğum her yerde / var / lock / subsys / mongod2 (sırasıyla mongod3) ile değiştirildi.

Mongod.lock öğesini mongod2.lock (veya sırasıyla mongod3.lock) ile değiştirmek için günaha karşı koyun. Farklı klasörlerde bulunurlar (veritabanı klasörleri farklıdır) ve çakışmazlar.

Şimdi yapabilirim

service mongod start|stop|status

service mongod2 start|stop|status

service mongod3 start|stop|status

ve ayrıca

mongo --port <port_number> 

her mongo örneği için (conf dosyalarındaki bağlantı noktası ayarlarını unutmayın)

Mongod ikilisini yeniden adlandırmanın herhangi bir yan etkisinin farkında değilim.

Bu yardımcı olur umarım.

[Daha sonra düzenleme] Örnekleri otomatik olarak başlatmak için ln -s /etc/init.d/mongod2 /etc/rc.d/rc3.d/S86mongod ve ln -s /etc/init.d/mongod3 / etc / rc .d / rc3.d / S87mongod :)


Ah güzel olan! aynı şeyi daha önce de çok şans olmadan yaptım çünkü aynı zamanda mongod çalıştırılabilir dosyasını da çoğaltmamız gerektiğini düşünmedim. Şimdi her şey yolunda.
Bach

Benim durumumda, komut dosyası Ubuntu 16.01yoktu init.d. init.dKomut dosyası içeriği sağlayabilir misiniz ?
Shubham A.16
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.