El proceso de replicación falla incluso si comienza desde cero desde un nuevo dbpath en el secundario, por lo que la cosa es hacer algunos cambios en el oplog . El tamaño del oplog debe establecerse en un valor óptimo para que pueda manejar todas las escrituras de aplicaciones en él.
Aumento del tamaño del oplog:
Apagar el servidor primario
use admin
db.shutdownServer()
Inicie primario como independiente y ejecute en un puerto diferente, digamos 37017
Inicie sesión en mongo en el puerto 37017
mongo --port 37017
Eliminar el contenido anterior en la base de datos local
Por seguridad, coloque una copia de seguridad del viejo oplog antes de soltar
mongodump --db local --collection 'oplog.rs' --port 37017
Descarte los contenidos antiguos en la base de datos local
use local
db.oplog.rs.drop()
db.me.drop()
db.replset.election.drop()
db.replset.minvalid.drop()
db.startup_log.drop()
La colección Replset no se puede descartar, así que elimínela con la identificación requerida:
db.system.replset.remove({ "_id" : "your_replsetname"})
Cree un nuevo oplog del tamaño requerido, digamos 50 GB
db.runCommand( { create: "oplog.rs", capped: true, size: (50 * 1024 * 1024 * 1024) } )
También puede especificar el tamaño de oplog en MB en el archivo mongod.conf, digamos por 50 GB sus 429496 MB
replication:
oplogSizeMB: 429496
Espero que esto ayude !!!
Editar:
Como mencionó Nicholas Tolley Cottrell en los comentarios. En la versión 3.6 de MongoDB podemos cambiar el tamaño de oplog en tiempo de ejecución sin reiniciar.
Verifique el tamaño actual del registro
use local
db.oplog.rs.stats().maxSize
Para cambiar el tamaño del oplog a 10 GB
db.adminCommand({replSetResizeOplog: 1, size: 10000})