为自管理部署配置日志
在此页面上
MongoDB使用预写入式记录到磁盘上的日志来保证写入操作的持久性。
WiredTiger 存储引擎崩溃后不需要通过记录日志来保证一致状态。在恢复期间,数据库将恢复到最后一个一致的检查点。但是,如果 MongoDB 在检查点之间意外退出,则需要记录日志来恢复最后一个检查点之后发生的写入操作。
如果 mongod
意外停止,该程序可以恢复写入日志的所有内容。MongoDB 将在重启时重新应用写入操作并保持一致的状态。默认情况下,最大的丢失写入(即未对日志进行的写入)是最后 100 毫秒内进行的写入,加上执行实际日志写入所需的时间。有关默认值的更多信息,请参阅 commitIntervalMs
。
步骤
获取提交确认
监控日志状态
serverStatus
命令/ db.serverStatus()
方法返回 wiredTiger.log
,其中包含日志的统计信息。
意外关闭后恢复数据
崩溃后重新启动时,MongoDB 会在服务器可用之前播放位于日志目录中的所有日志文件。如果 MongoDB 必须重新播放日志文件,mongod
会在日志输出中记录这些事件。
没有理由运行 --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 ...