Home > Database > Mysql Tutorial > body text

mongodb 持久化(4)

WBOY
Release: 2016-06-07 16:36:12
Original
1327 people have browsed it

Mongodb在1.8版本之后开始支持journal,就是我们常说的redo log,用于故障恢复和持久化。1. 启动启动journal功能使用mongod --journal选项,也可以关闭--nojournal,在2.0之后的版本,journal都是默认打开的,以确保数据安全。在version 2.0 或者32位的系统

Mongodb在1.8版本之后开始支持journal,就是我们常说的redo log,用于故障恢复和持久化。 1. 启动 启动journal功能使用mongod --journal选项,也可以关闭--nojournal,在2.0之后的版本,journal都是默认打开的,以确保数据安全。在version 其中j.32,j.33是使用中的journal文件,当单个文件达到1GB的时候,就会创建一个新的文件,旧文件不会循环使用,自动删除。 lsn保存最后使用的journal序列号,是个2进制文件,它实际保存的是系统启动到现在的一个时间戳。 prealloc.2是还未使用的初始化的journal文件。使用db.shutdownServer()和kill -2关闭的系统,也就是clean shutdown,journal文件夹下除prealloc.*文件 都会被删除。 如果系统掉电或者运行时死机,再启动时,mongo就会使用journal进行恢复,不用运行repair。 我们可以将journal,oplog,data做快照备份,在数据丢失的时候,可以恢复到最近的状态,保证安全。盛大的云计算系统就是这样做的,同时使用go语言做异步备份,有机会可以跟他们交流。 3.?批量提交 journal除了故障恢复的作用之外,还可以提高写入的性能,批量提交(batch-commit),journal一般默认100ms刷新一次,在这个过程中,所有的写入都可以一次提交,是单事务的,全部成功或者全部失败。关于刷新时间,它是可以更改,范围是2-300ms,但是这并不是绝对的。mongodb提供了journal延迟测试的函数: > db.runCommand("journalLatencyTest") mongodb-2 在实际运行中,刷新时间是--journalCommitInterval设置和延迟测试中较大的一个。 不得不吐槽一下,有的服务器磁盘有cache却没有电池,情何以堪,在不走cache的情况下,延迟相当大,图中就是不走cache的情况。mongo也是支持ssd的,有条件可以使用。在比较繁忙的系统上,当journal和data放在一个volume上的时候,这个值也会比较大。 查看journal运行情况: >?db.serverStatus(): mongodb-3 commits:在journalCommitInterval时间内提交的操作数。 journaledMB:在journalCommitInterval时间内写到journal文件中的数据量 。 writeToDataFilesMB:在journalCommitInterval时间内从journal刷新到磁盘的数据量 。 compression:v>2.0,表示客户端提交写入到journal的数据的压缩比率,注意,写入到journal的数据并不是全部的数据。( journaled_size_of_data / uncompressed_size_of_data ) 。 commitsInWriteLock:在有写锁的情况下提交的数量,这表示写的压力很大。 earlyCommits:表示在journalCommitInterval之前的时间,mongod请求提交的次数。用这个参数确定journalCommitInterval是不是设置的过长。 dur.timeMS.prepLogBuffer:从privateView映射到Logbuffer的时间。 dur.timeMS.writeToJournal:从logbuffer刷新到journalfile 的时间。 dur.timeMS.writeToDataFiles:从journalbuffer映射到MMF,然后从MMF刷新到磁盘的时间,文件系统和磁盘会影响写入性能。 dur.timeMS.remapPrivateView:重新映射数据到PrivateView的时间,越小性能越好。这个之后会介绍,这也是为什么journal会使用更多内存的原因,因为journal会另外使用一个叫PrivateView的内存区域。 4.?总结: mongodb在使用journal之后,备份,容灾得到保障,批量提交也使得写入更加快速(不持久化的不算)。我们也需要选用较高级的文件系统和磁盘还有更多的内存来保障journal的良好运行。 参考: http://docs.mongodb.org/manual/reference/server-status/#dur http://www.mongodb.org/display/DOCS/Journaling http://www.mongodb.org/display/DOCS/Journaling+Administration+Notes 转自:http://blog.chinaunix.net/uid-15795819-id-3381684.html  
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template