Der Replikationsprozess schlägt fehl, selbst wenn Sie von einem neuen Datenbankpfad auf der Sekundärseite aus neu beginnen. Sie müssen also einige Änderungen im Oplog vornehmen . Die Größe des Oplogs muss auf einen optimalen Wert festgelegt werden, damit es alle Anwendungsschreibvorgänge verarbeiten kann.
Erhöhen der Oplog-Größe:
Fahren Sie den Primärserver herunter
use admin
db.shutdownServer()
Starten Sie primary als Standalone und führen Sie es auf einem anderen Port aus, beispielsweise 37017
Loggen Sie sich im Mongo in Port 37017 ein
mongo --port 37017
Entfernen Sie den alten Inhalt in der lokalen Datenbank
Aus Sicherheitsgründen sollten Sie vor dem Fallenlassen einen alten Oplog-Backop verwenden
mongodump --db local --collection 'oplog.rs' --port 37017
Löschen Sie den alten Inhalt in der lokalen Datenbank
use local
db.oplog.rs.drop()
db.me.drop()
db.replset.election.drop()
db.replset.minvalid.drop()
db.startup_log.drop()
Die Replset-Sammlung kann nicht gelöscht werden. Entfernen Sie sie daher mit der erforderlichen ID:
db.system.replset.remove({ "_id" : "your_replsetname"})
Erstellen Sie ein neues Oplog mit der erforderlichen Größe, beispielsweise 50 GB
db.runCommand( { create: "oplog.rs", capped: true, size: (50 * 1024 * 1024 * 1024) } )
Sie können auch die Oplog-Größe in MB in der Datei mongod.conf angeben, z. B. für 50 GB die Größe von 429496 MB
replication:
oplogSizeMB: 429496
Hoffe das hilft !!!
Bearbeiten:
Wie von Nicholas Tolley Cottrell in Kommentaren erwähnt. In der MongoDB Version 3.6 wir die Oplog-Größe zur Laufzeit ohne Neustart ändern.
Überprüfen Sie die aktuelle Oplog-Größe
use local
db.oplog.rs.stats().maxSize
So ändern Sie die Oplog-Größe auf 10 GB
db.adminCommand({replSetResizeOplog: 1, size: 10000})