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 }
Copyright © 2018 · GregDonald.io · All Rights Reserved