管理日志记录
在此页面上
MongoDB 使用预写式记录到磁盘上的日志来保证写入操作的持久性。
WiredTiger 存储引擎崩溃后不需要通过记录日志来保证一致状态。在恢复期间,数据库将恢复到最后一个一致的检查点。但是,如果 MongoDB 在检查点之间意外退出,则需要记录日志来恢复最后一个检查点之后发生的写入操作。
注意
从 MongoDB 4.0 开始,您无法为使用 WiredTiger storage engine 的副本集成员指定 --nojournal
选项或storage.journal.enabled:
false
。
启用日志功能后,如果mongod
意外停止,该程序可以恢复写入日志的所有内容。 MongoDB 将在重启时重新应用写入操作并保持一致的状态。默认情况下,最大的丢失写入(即未对日志进行的写入)是最后100毫秒内进行的写入,加上执行实际日志写入所需的时间。有关默认值的更多信息,请参阅commitIntervalMs
。
步骤
禁用日志
警告
不要在生产系统上禁用日志功能。
从 MongoDB 4.0 开始,您无法为使用 WiredTiger storage engine 的副本集成员指定
--nojournal
选项或storage.journal.enabled: false
。
要为独立运行的实例禁用日志功能,请使用 命令行选项启动mongod
--nojournal
。
获取提交确认
监控日志状态
serverStatus
命令/ db.serverStatus()
方法返回 wiredTiger.log
,其中包含日志的统计信息。
意外关闭后恢复数据
崩溃后重新启动时,MongoDB 会在服务器可用之前播放位于日志目录中的所有日志文件。如果 MongoDB 必须重新播放日志文件,mongod
会在日志输出中记录这些事件。
没有理由运行 --repair
。
更改 WiredTiger 日志压缩器
对于 WiredTiger 存储引擎,MongoDB 默认使用snappy
压缩器作为日志。为mongod
实例指定不同的压缩算法或不进行压缩:
提示
如果在此过程中遇到 mongod
非正常关机,则必须使用旧的压缩器设置来使用日志文件进行恢复。恢复后,您可以重试该过程。