在将数据加载到 mongodb 时,我不断收到“错误 RS102 太陈旧,无法赶上”...经过研究,我发现 32 位 Linux 机器的默认 oplog 大小太小。我希望它是 300 mb。有人知道这样做的步骤吗?
答案1
Linux 上的 oplog 默认占用 5% 的可用空间,所以我怀疑你没有太多可用空间。要调整 oplog 的大小,你需要遵循此处概述的步骤:
答案2
MongoDB 版本 3.6 +
在 MongoDB 中,version 3.6
可以更轻松地在运行时更改 oplog 大小,而无需重新启动。
检查当前 oplog 大小
use local
db.oplog.rs.stats().maxSize
将 oplog 大小更改为 300 MB
db.adminCommand({replSetResizeOplog: 1, size: 300})
MongoDB 版本低于 3.6
对于旧版本,您必须遵循以下步骤:
关闭主服务器
use admin
db.shutdownServer()
启动主服务器作为独立服务器并在不同的端口上运行,比如 37017
在端口 37017 登录 mongo
mongo --port 37017
删除本地数据库中的旧内容
为了安全起见,在删除之前备份旧的 oplog
mongodump --db local --collection 'oplog.rs' --port 37017
删除本地数据库中的旧内容
use local
db.oplog.rs.drop()
db.me.drop()
db.replset.election.drop()
db.replset.minvalid.drop()
db.startup_log.drop()
Replset 集合无法删除,因此请使用所需的 id 将其删除:
db.system.replset.remove({ "_id" : "your_replsetname"})
创建所需大小的新 oplog,例如 300 MB
db.runCommand( { create: "oplog.rs", capped: true, size: (300 * 1024 * 1024) } )
您还可以在 mongod.conf 文件中指定 oplog 大小(以 MB 为单位),例如 300 MB:
replication:
oplogSizeMB: 300
希望这可以帮助 !!!