Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to avoid data loss on server failure with MongoDB on a single machine?

I have read that mongoDB don't write data to disk right away, it does this periodically.

Any thoughts on how to deal with this?

like image 597
HappyDeveloper Avatar asked Sep 26 '11 04:09

HappyDeveloper


2 Answers

You can enable journaling with --journal.

Check out http://www.adathedev.co.uk/2011/03/mongodb-journaling-performance-single.html and http://www.mongodb.org/display/DOCS/Durability+and+Repair

like image 127
Dave Avatar answered Nov 06 '22 11:11

Dave


Besides --journal that is enabled by default since MongoDB 2.0 (only on 64 bit machines), there is a flag that you can set when persisting data:

  • safe => false: do not wait for a db response
  • safe => true: wait for a db response
  • safe => num: wait for that many servers to have the write before returning
  • fsync => true: fsync the write to disk before returning. fsync => true implies safe=>true, but not visa versa.

If fsync=>false and safe=>true and the write could be in successfully applied to a mmapped file but not yet written to disk

like image 3
tolitius Avatar answered Nov 06 '22 12:11

tolitius