Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting up MongoDB replica set

I have a fast Windows 7 PC with 8Gb RAM. I want to test this MongoDB replica set: http://www.mongodb.org/display/DOCS/Replica+Sets for my development. I dont want to buy 3 PCs though, as it's kind of expensive. Is there a way to use some kind of technology, like Hyper-V, to be able to set it up? If not, how many PC and what kind should I buy?

like image 321
LikeToCode Avatar asked Sep 14 '25 05:09

LikeToCode


2 Answers

You can run multiple mongod processes on the same machine on different ports and pointing to different data directories and make them a part of the same replicaset.

http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo

mongod --dbpath c:/data1 --port 12345 --replSet foo

mongod --dbpath c:/data2 --port 12346 --replSet foo

and then connect to one of the mongod processes using the mongo console and add initiate the replica set using instructions outlined here:

http://www.mongodb.org/display/DOCS/Replica+Sets+-+Basics

like image 108
Deep Kapadia Avatar answered Sep 17 '25 04:09

Deep Kapadia


On Ubuntu 18.04, MongoDb : shell version v4.2.6

In The Terminal (1) (Secure the port using a firewall since we are using 0.0.0.0)

sudo systemctl stop mongod
sudo systemctl status mongod
sudo mongod --auth --port 27017 --dbpath /var/lib/mongodb --replSet rs0 --bind_ip 0.0.0.0

Then open another instance of terminal (2) (Keep the previous one open)

mongo -u yourUserName -p (it will ask for password - follow on)
rs.initiate()

Then open yet another instance of terminal (3) Here you will run server.js with your connection url like this :

const url = 'mongodb://' + user + ':' + password + 
        '@localhost:27017/?replicaSet=rs0' 

MongoClient.connect(url, { useUnifiedTopology: true, authSource: 'admin' }, 
        function (err, client) {
                if (err) {
                    throw err;
                }
            });
like image 42
DragonFire Avatar answered Sep 17 '25 04:09

DragonFire