Replication

更改 MongoDB Oplog 大小

  • May 17, 2018

在將數據載入到 mongodb 時,我不斷收到“錯誤 RS102 太陳舊無法趕上”……經過研究,我發現我的 32 位 linux 機器的預設 oplog 大小太小。我希望它是 300 mb .. 有人知道這樣做的步驟嗎?

oplog 在 Linux 上預設為 5% 的可用空間,所以我懷疑你沒有很多可用空間。要調整 oplog 的大小,您需要遵循此處概述的過程:

http://docs.mongodb.org/manual/tutorial/change-oplog-size/

MongoDB 版本 3.6 +

在 MongoDBversion 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 文件中以 MB 為單位指定 oplog 大小,例如 300 MB:

replication:
  oplogSizeMB: 300

希望這可以幫助 !!!

引用自:https://serverfault.com/questions/550887