MongoDB journaling 工作原理

默北 mongodb223,862字数 637阅读2分7秒阅读模式

journaling 是如何工作的? 将MongoDB的数据文件,journal 文件表示如下:

journaling文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

启动mongod,数据文件映射到共享视图 .文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

journaling文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

这时候内存依然依靠文件做后盾: 内存中的变化,操作系统刷新到底层文件. 这是MongoDB在没有journaling时候的工作方式: 操作系统每60秒将内存中的变化刷新到文件.文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

然而, 启用 journaling时, mongod 会再做一次映射, 映射到私有视图. 附带的, 启用journalling mongod使用的虚拟内存将会翻倍.文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

journaling文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

注意到私有视图没有映射到数据文件, 所以操作系统不能将任何改变刷新到磁盘.文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

现在写数据时, mongod 写到私有视图.文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

journaling文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

mongod 然后将数据的变化写到 journal 文件,并加上文件变化的一些描述.私有视图刷新到journal的是100ms.默认情况下,journal刷新到磁盘的周期是每100ms.文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

journaling文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

journal 将关于变化的描述追加到文件文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

journaling文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

这时候, 写是安全的. 如果mongod 崩溃,journal可以重放变化, 虽然还没有写到数据文件文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

journal 将在共享视图上重放变化.文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

journaling文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

然后,mongod 将共享视图 重新映射到私有视图. 这样防止私有视图太"脏"(有许多变化从共享视图刷新).文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

journaling文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

最后, 与其它的相比,以很慢的速度, 共享视图将刷新到磁盘. 默认情况下,mongod 请求操作系统每60秒刷新一次.文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

journaling文章源自运维生存时间-https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/

参考:http://www.kchodorow.com/blog/2012/10/04/how-mongodbs-journaling-works/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 20/01/2014 21:52:25
  • 转载请务必保留本文链接:https://www.ttlsa.com/mongodb/how-mongodbs-journaling-works/
评论  2  访客  1
    • 呵呵
      呵呵 9

      看完了,就是觉得作者的字真的不是一般的丑啊,很好,难度太大,我还是没有看明白啊

    • 来自外部的引用

    评论已关闭!