管理日志
MongoDB 使用预写日志记录到磁盘日志来保证写操作的持久性。
WiredTiger 存储引擎不需要日志来保证崩溃后的一致状态。数据库将在恢复过程中恢复到最后一个一致的检查点 。但是,如果 MongoDB 在检查点之间意外退出,则需要日志记录来恢复在最后一个检查点之后发生的写入。
NOTE
从 MongoDB 4.0 开始,您不能为使用 WiredTiger 存储引擎的副本集节点指定--nojournal
选项或storage.journal.enabled: false
。
启用日志功能后,如果mongod
意外停止,程序可以恢复写入日志的所有内容。MongoDB 将在重新启动时重新应用写操作并保持一致的状态。默认情况下,最大程度的丢失写入(即未对日志进行的写入)是最近 100 毫秒内进行的写入,加上执行实际日志写入所花费的时间。有关 commitIntervalMs
默认值的更多信息,请参阅 。
程序
禁用日志记录
WARNING
不要在生产系统上禁用日志记录。
- 从 MongoDB 4.0 开始,您不能为使用 WiredTiger 存储引擎的副本集节点指定
--nojournal
选项或storage.journal.enabled: false
。
要禁用独立部署日记功能,请使用--nojournal
命令行选项启动 mongod
。
获取提交确认
您可以使用Write Concern和j
选项获得提交确认。有关详细信息,请参阅 Write Concern。
监控期刊状态
serverStatus
命令/db.serverStatus()
方法返回wiredTiger.log
,其中包含有关日志的统计信息。
意外关机后恢复数据
在崩溃后重新启动时,MongoDB 在服务器重新运行可日志目录中的所有日志文件。如果 MongoDB 必须重新执行日志文件,mongod
请在日志输出中记录这些事件。
没有运行的理由--repair
。
更改 WiredTiger Journal Compressor
对于 WiredTiger 存储引擎,MongoDB 默认情况下使用 snappy
日志压缩器。要为mongod
实例指定不同的压缩算法或不压缩 :
TIP
如果您在此过程中遇到 mongod
的不正常关闭,则必须使用旧的压缩器设置来使用日志文件进行恢复。 恢复后,您可以重试该过程。
使用以下过程更改独立mongod
实例的日志压缩器:
将设置更新
storage.wiredTiger.engineConfig.journalCompressor
为新值。如果您使用命令行选项而不是配置文件,则必须
--wiredTigerJournalCompressor
在下面的重新启动期间更新命令行选项。执行
mongod
实例的正常关闭。例如,连接mongosh
实例和问题db.shutdownServer()
:db.getSiblingDB('admin').shutdownServer()
确认进程不再运行后,重新启动
mongod
实例:如果您使用的是配置文件:
mongod -f <path/to/myconfig.conf>
如果您使用的是命令行选项而不是配置文件,请更新该
--wiredTigerJournalCompressor
选项。mongod --wiredTigerJournalCompressor <differentCompressor|none> ...
原文链接 - https://docs.mongodb.com/manual/tutorial/manage-journaling/
译者:陆文龙