当 oplog 具有默认值时,我无法创建复制,即 rs.initiate()。我的服务器有 400+ GB 的可用空间。在 MongoDB 的官方文档中,MMAP 的默认范围是 990MB 到 50GB 之间可用磁盘空间的 5%,但在Memory Use下:-
使用 MMAPv1,MongoDB 会自动使用机器上的所有空闲内存作为其缓存。
在没有 oplog 大小选项的情况下启动 mongod 后执行 rs.initiate() 时控制台出错:
mmap 因内存不足而失败
“errmsg”:“无法启动:文件 /data/0/local.7 在 createPrivateMap 中打开/创建失败(查看日志以获取更多信息)”
所以,我只用 --oplogSize 4096 开始了 mongod,之后我才能够执行 rs.initiate。现在我知道小 oplog 大小的问题,但我想知道后台到底发生了什么。5% 的可用磁盘空间或 50 GB 上限,无论哪种方式,我的服务器中仍有 300 GB 可用。