参考文章:
http://database.51cto.com/art/201110/295772.htm
http://blog.chinaunix.net/uid-15795819-id-3381684.html
http://blog.chinaunix.net/uid-15795819-id-3419051.html
http://docs.mongodb.org/manual/core/journaling/
http://www.cnblogs.com/guoyuanwei/p/3308199.html
简要介绍:
开启Journaling选项相当于启用redo-log,当系统宕机后可以通过redo-log来实现恢复丢失数据的目的。若没有开启Jounaling(使用--nojournal启动的mongod)那么数据会每60秒执行一个fsync提交到磁盘,而开启之后Jounaling的数据默认每100ms(可通过--journalCommitInterval arg修改)提交到磁盘,也就是如果宕机最多丢失100ms的数据。
关于原理:开启Journal后会有两个内存映射,分别为shard view, private view,这是所有的读写操作都会到private view中。写操作过程,现将数据写入到private view,将操作写入到Journal日志文件,然后从Journal日志中将操作应用到shard view,最后再将shard view的内容映射到private view之中,实现两个视图一致。
下面内容转载自(写的很好,非常感谢):http://f.dataguru.cn/thread-139560-1-1.html
|
|