Beberapa Mongo di satu server

11

Saya tidak berbicara tentang pecahan . Kami memiliki server pengujian (linux) dan sudah ada satu mongoyang dimiliki oleh proyek / subteam lain. Apakah mungkin untuk menjalankan beberapa, contoh terisolasi dari mongodbpada satu mesin? Bagaimana saya bisa melakukannya?

om-nom-nom
sumber

Jawaban:

14

Ya, Anda bisa melakukan ini dengan menentukan nomor port dan direktori data yang berbeda untuk instance lain mongod, dan kemudian menentukan nomor port baru di klien.

Sebagai contoh:

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

Anda juga dapat mengubah server shard dan mengkonfigurasi nomor port server jika perlu.

dsolimano
sumber
1
Apakah mungkin untuk menentukan ini di dalam mongodb.conf? Atau haruskah saya membuat skrip untuk melakukan itu? (pada * nix)
Justin
@Justin, Anda tentu dapat menentukan opsi ini dalam file konfigurasi - lihat mongodb.org/display/DOCS/File+Based+Configuration . Tetapi kemudian Anda masih harus meneruskan file konfigurasi yang berbeda ke instance yang berbeda.
dsolimano
Terima kasih @dsimano, saya punya dua skrip di rc.d untuk dua contoh Mongo. Saya telah menentukan jalur berbeda untuk db, pid, masuk dan memberi mereka port yang berbeda untuk didengarkan. Itu juga bercabang dua, dan ketika skrip kedua berjalan, gagal karena mongo sudah berjalan (contoh pertama). Jadi saya kira pertanyaan saya yang sebenarnya adalah (A-saya tidak punya banyak keberuntungan menemukan ini di web) adalah dapatkah Anda menjalankan dua contoh bercabang pada saat yang sama? Terima kasih
Justin
@ Justin, saya pikir ini mungkin naik ke tingkat pertanyaan baru, mungkin Anda harus menanyakannya di situs ini? Sepertinya ada sesuatu tentang cara Anda memulai Mongo yang menyebabkan masalah.
dsolimano
3

Langkah-langkah yang saya ambil adalah:

  1. Salin file conf /etc/mongod.conf ke mongod2.conf dan juga ke mongod3.conf
  2. Edit file conf untuk memiliki port dan jalur basis data yang berbeda
  3. Salin init.d mulai script /etc/init.d/mongod ke mongod2 dan juga ke mongod3
  4. Salin binari mongod / usr / bin / mongod ke / usr / bin / mongod2 dan juga ke / usr / bin / mongod3
  5. Edit skrip init.d mulai dan ubah yang berikut:

    CONFIGFILE = "/ etc / mongod2.conf" (masing-masing mongod3.conf)

    ....

    mongod = $ {MONGOD- / usr / bin / mongod2} (masing-masing mongod3)

Digantikan / var / lock / subsys / mongod dengan / var / lock / subsys / mongod2 (mongod3, masing-masing) di mana pun saya menemukannya.

Tahan godaan untuk mengganti mongod.lock dengan mongod2.lock (atau ke mongod3.lock, masing-masing). Mereka berada di folder yang berbeda (folder database berbeda) dan tidak akan konflik.

Sekarang saya bisa

service mongod start|stop|status

service mongod2 start|stop|status

service mongod3 start|stop|status

dan juga

mongo --port <port_number> 

untuk setiap instance mongo (ingat pengaturan port dari file conf)

Saya tidak mengetahui adanya efek samping dari penggantian nama biner mongod ..

Semoga ini membantu.

[Kemudian edit] Untuk memulai instans secara otomatis, cukup ln -s /etc/init.d/mongod2 /etc/rc.d/rc3.d/S86mongod dan ln -s /etc/init.d/mongod3 / etc / rc .d / rc3.d / S87mongod :)

aemilianvs
sumber
Ah, bagus! melakukan hal yang sama tanpa banyak keberuntungan sebelumnya karena saya tidak berpikir kita harus juga menduplikasi executable mongod itu sendiri. Semuanya baik sekarang.
Bach
Dalam kasus saya, menggunakan Ubuntu 16.01, tidak ada init.dskrip. Bisakah Anda memberikan init.dkonten skrip?
Shubham A.