by Marc-David Militz
Forum: MongoDB Theorie
Da es sich um eine "Capped Collection" handelt ist dies aber nicht, so ohne weiteres, möglich. Das Oplog muß auf jedem einzelnen Member des Replica Sets neu, mit der neuen Größe, erzeugt werden. Hier nun ein kurzer Überblich über die dafür notwendigen Schritte.
MongoDB bietet zwei Befehle, mit denen man sich über den aktuellen Zustand des Oplogs informieren kann. Beide Befehle erzeugen die gleiche Ausgabe.
db.getReplicationInfo()
rs.printReplicationInfo()
Alle folgenden Schritte sollten immer nur auf einen Replica-Set-Member auf einmal angewendet werden um die Verfügbarkeit des Replica-Sets nicht zu beeinträchtigen.
use admin
db.shutdownServer()
exit
mongod --port 37018 --dbpath /srv/replset-1
z.B. unter Windows
start "mongoDB ReplSet Node 1" /MIN C:\MongoDB\Server\3.4\bin\mongod.exe --port 37018 --dbpath "C:\mongoDB\data\replset-1"
mongodump --d local --c "oplog.rs" --port:37018 -o "replset-1"
z.B. unter Windows
C:\MongoDB\Server\3.4\bin\mongodump.exe /d local /c "oplog.rs" /port:37018 /o "C:\mongoDB\backup\replset-1"
use local
db.temp.drop()
db.temp.save(db.oplog.rs.find( { }, { ts: 1, h: 1 } ).sort( {$natural : -1} ).limit(1).next())
db.temp.find()
db = db.getSiblingDB("local")
db.oplog.rs.drop()
db.runCommand({ create: "oplog.rs", capped: true, size: (2 * 1024 * 1024 * 1024) })
db.oplog.rs.save( db.temp.findOne() )
db.oplog.rs.find()
db.temp.drop()