คำตอบ:
ใช่คุณสามารถทำได้โดยการระบุหมายเลขพอร์ตที่แตกต่างกันและไดเรกทอรีข้อมูลสำหรับอินสแตนซ์อื่น ๆ ของmongod
แล้วระบุหมายเลขพอร์ตใหม่ในไคลเอนต์
ตัวอย่างเช่น:
./mongod --dbpath /foo/bar/otherpath --port some_other_port
คุณยังสามารถเปลี่ยนเซิร์ฟเวอร์ชาร์ดและกำหนดหมายเลขพอร์ตเซิร์ฟเวอร์ได้หากต้องการ
ขั้นตอนที่ฉันทำคือ:
แก้ไขสคริปต์เริ่มต้น init.d และเปลี่ยนแปลงรายการต่อไปนี้:
กำหนดค่า = "/ etc / mongod2.conf" (mongod3.conf ตามลำดับ)
....
mongod = $ {MONGOD- / usr / bin / mongod2} (mongod3 ตามลำดับ)
แทนที่ / var / lock / subsys / mongod ด้วย / var / lock / subsys / mongod2 (mongod3 ตามลำดับ) ทุกที่ที่ฉันพบ
ต้านทานการล่อลวงเพื่อแทนที่ mongod.lock ด้วย mongod2.lock (หรือเพื่อ mongod3.lock ตามลำดับ) พวกเขาอยู่ในโฟลเดอร์ที่แตกต่างกัน (โฟลเดอร์ฐานข้อมูลแตกต่างกัน) และจะไม่ขัดแย้งกัน
ตอนนี้ฉันสามารถ
service mongod start|stop|status
service mongod2 start|stop|status
service mongod3 start|stop|status
และนอกจากนี้ยังมี
mongo --port <port_number>
สำหรับแต่ละอินสแตนซ์ mongo (จดจำการตั้งค่าพอร์ตจากไฟล์ conf)
ฉันไม่ได้ตระหนักถึงผลข้างเคียงใด ๆ ของการเปลี่ยนชื่อ mongod ไบนารี ..
หวังว่านี่จะช่วยได้
[แก้ไขในภายหลัง] หากต้องการเริ่มต้นอินสแตนซ์โดยอัตโนมัติเพียงแค่ ln -s /etc/init.d/mongod2 /etc/rc.d/rc3.d/S86mongod และ ln -s /etc/init.d/mongod3 / etc / rc .d / rc3.d / S87mongod :)
Ubuntu 16.01
ไม่มีinit.d
สคริปต์ คุณสามารถให้init.d
เนื้อหาสคริปต์ได้หรือไม่