我正在运行带有两个辅助节点的 mongo 3.4.7 (WiredTiger) 副本集。
根据文档,当启用日志记录并且写入关注时{w: "majority", j: 0}
,在数据写入“内存中”后发送确认。
但是,文档没有具体说明在服务器 ( )上关闭日记功能时会发生什么。--nojournal
在那种情况下会发生什么?write concern 在等什么?
我正在运行带有两个辅助节点的 mongo 3.4.7 (WiredTiger) 副本集。
根据文档,当启用日志记录并且写入关注时{w: "majority", j: 0}
,在数据写入“内存中”后发送确认。
但是,文档没有具体说明在服务器 ( )上关闭日记功能时会发生什么。--nojournal
在那种情况下会发生什么?write concern 在等什么?
您问题的答案:将数据更改写入磁盘。
当日志记录打开时,第一个更改写入日志,然后写入数据块。
由于您将 MongoDB 3.4.7 与 WiredTiger 一起使用,因此如果您使用默认值运行 MongoDB(启用日志),则存在某些默认值:
{w:1}
(见Write Concern){w:'majority'}
,默认情况下{j:true}
是否默认启用日志(请参阅writeConcernMajorityJournalDefault)如果你在没有日志记录的情况下运行 MongoDB,使用
{w:'majority', j:true}
将导致错误(请参阅j 选项的注释部分):请注意,与直觉相反,使用该
--nojournal
选项运行 WiredTiger 可能会使其变慢。这是因为 WiredTiger 在 MongoDB 3.4 中每 60 秒或 2 GB 数据执行一次检查点,并在检查点之间写入日志。禁用日志记录将强制任何日志刷新变成检查点。由于与完整检查点相比,日志同步相对轻量级,因此强制检查点会减慢 WiredTiger 的速度。