It doesn't seem you can lose data even when you might otherwise expect to ;)

I setup a small replica set using

mongod --fork --logpath a.log --smallfiles --oplogSize 50 --port 27001 --dbpath data/z1 --replSet z
mongod --fork --logpath b.log --smallfiles --oplogSize 50 --port 27002 --dbpath data/z2 --replSet z
mongod --fork --logpath c.log --smallfiles --oplogSize 50 --port 27003 --dbpath data/z3 --replSet z

And initalized it:

> rs.initiate(
    { _id:'z',
      members:[
        { _id:1, host:'localhost:27001' },
        { _id:2, host:'localhost:27002' },
        { _id:3, host:'localhost:27003' }
      ]
    }
);

Then I killed all three processes:

kill -9 25542 25496 25483

Next I brought one of them back up

mongod --fork --logpath c.log --smallfiles --oplogSize 50 --port 27003 --dbpath data/z3

and inserted a doc

> db.foo.insert({a:1})

Then I killed that process

kill -9 25885

and brought the replica set back online using

mongod --fork --logpath a.log --smallfiles --oplogSize 50 --port 27001 --dbpath data/z1 --replSet z
mongod --fork --logpath b.log --smallfiles --oplogSize 50 --port 27002 --dbpath data/z2 --replSet z
mongod --fork --logpath c.log --smallfiles --oplogSize 50 --port 27003 --dbpath data/z3 --replSet z

and my data is still there:

> mongo --port 27003
MongoDB shell version: 2.4.6
connecting to: 127.0.0.1:27003/test
z:SECONDARY> db.setSlaveOk()
z:SECONDARY> db.foo.find()
{ "_id" : ObjectId("52eb09f9df67edd1c6d33e71"), "a" : 1 }
z:SECONDARY>

In addition, if I insert data into the primary it seems to be perfectly happy to live right there alongside my existing data on the secondary:

> mongo --port 27001
MongoDB shell version: 2.4.6
connecting to: 127.0.0.1:27001/test
z:PRIMARY> db.foo.insert({b:2})
z:PRIMARY> db.foo.find()
{ "_id" : ObjectId("52eb0cefdf3e83d897ae68ec"), "b" : 2 }
z:PRIMARY>
> mongo --port 27003
MongoDB shell version: 2.4.6
connecting to: 127.0.0.1:27003/test
z:SECONDARY> db.setSlaveOk()
z:SECONDARY> db.foo.find()
{ "_id" : ObjectId("52eb09f9df67edd1c6d33e71"), "a" : 1 }
{ "_id" : ObjectId("52eb0cefdf3e83d897ae68ec"), "b" : 2 }

   Recent articles
Console Blackjack written in Perl 6
How-to build latest Linux kernel from Linus' git repo on Debian/Ubuntu
Console Blackjack in C++
.rubyocop.yml
Visual Studio Code Configuration
   Tags
airplane (1) apache (1) apple (1) bash (2) bashrc (1) blackjack (3) callproof (1) college (1) config (1) console (3) cpp (1) data (1) debian (4) diff (1) django (2) electoral (1) enterprise (1) flying (1) freebsd (1) games (1) git (3) github (4) gmail (1) go-lang (3) google (1) gourse (1) kernel (3) latin1 (1) linux (4) lottery (1) microsoft (1) module (1) mongodb (1) mp3s (1) mutt (1) patch (1) perl6 (1) photos (1) postgresql (2) powerball (1) psql (1) python (2) raspberrypi (1) rc (1) rubocopyml (1) sed (1) stack (1) sublime (1) testing (2) trace (1) ubuntu (2) utf8 (1) virus (1) visualstudiocode (1) vote (1) waylon (1)
   Twitter

Copyright © 2017 · GregDonald.io · All Rights Reserved