为自托管部署配置日志记录
本页内容
MongoDB 使用 预写日志 记录到磁盘上的日志 来保证 写操作 的持久性。
WiredTiger 存储引擎不需要日志记录来保证崩溃后的数据一致性。在恢复过程中,数据库将恢复到最后一个一致性的 检查点。然而,如果 MongoDB 在检查点之间意外退出,则需要日志记录来恢复最后一次检查点之后发生的写入操作。
如果mongod
意外停止,程序可以恢复写入到日志的所有内容。MongoDB在重启时会重新应用写入操作,并保持一致状态。默认情况下,丢失写入的最大范围,即未写入日志的写入,是最后100毫秒内进行的写入,加上实际执行日志写入所需的时间。有关默认值更多信息,请参阅commitIntervalMs
。
程序
获取提交确认
监控日志状态
命令 serverStatus
以及方法 db.serverStatus()
返回 wiredTiger.log
,其中包含关于日志的统计数据。
意外关闭后恢复数据
在崩溃后的重启过程中,MongoDB会在服务器可用之前重新播放日志目录中的所有日志文件。如果MongoDB必须重新播放日志文件,则会在日志输出中记录这些事件。
没有必要运行 --repair
。
更改WiredTiger日志压缩器
使用WiredTiger存储引擎时,MongoDB默认使用snappy
压缩器进行日志压缩。要为mongod
实例指定不同的压缩算法或不对日志进行压缩
提示
如果在执行此过程时遇到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> ...
使用以下步骤更改副本集成员的日志压缩程序
执行
mongod
实例的干净关闭。例如,连接mongosh
到实例并发出db.shutdownServer()
:db.getSiblingDB('admin').shutdownServer() 将
storage.wiredTiger.engineConfig.journalCompressor
更新为新值。如果您使用的是命令行选项而不是配置文件,则在以下重启过程中必须更新命令行选项。
重新启动
mongod
实例如果您使用配置文件
mongod -f <path/to/myconfig.conf> 如果您使用的是命令行选项而不是配置文件,则更新
--wiredTigerJournalCompressor
为新值。mongod --wiredTigerJournalCompressor <differentCompressor|none> ...
使用以下步骤更改分片副本集成员或配置服务器副本集成员的日志压缩程序
执行
mongod
实例的干净关闭。例如,连接mongosh
到实例并发出db.shutdownServer()
:db.getSiblingDB('admin').shutdownServer() 将
storage.wiredTiger.engineConfig.journalCompressor
更新为新值。如果您使用的是命令行选项而不是配置文件,则在以下重启过程中必须更新命令行选项。
重新启动
mongod
实例如果您使用配置文件
mongod -f <path/to/myconfig.conf> 如果您使用的是命令行选项而不是配置文件,则更新
--wiredTigerJournalCompressor
为新值。mongod --shardsvr --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...