O processo de replicação falha mesmo que você inicie o scratch a partir de um novo dbpath no secundário. Então, a coisa é fazer algumas alterações no oplog . O tamanho do oplog deve ser definido como um valor ideal para que ele possa manipular todas as gravações de aplicativos nele.
Aumentando o tamanho do oplog:
Encerrar o servidor principal
use admin
db.shutdownServer()
Comece o primário como autônomo e execute em uma porta diferente, digamos 37017
Entre no mongo na porta 37017
mongo --port 37017
Remova o conteúdo antigo no banco de dados local
Por segurança, tenha backop do antigo oplog antes de soltar
mongodump --db local --collection 'oplog.rs' --port 37017
Solte o conteúdo antigo no banco de dados local
use local
db.oplog.rs.drop()
db.me.drop()
db.replset.election.drop()
db.replset.minvalid.drop()
db.startup_log.drop()
A coleção de conjuntos de réplicas não pode ser descartada; portanto, remova-a com o ID necessário:
db.system.replset.remove({ "_id" : "your_replsetname"})
Crie um novo oplog do tamanho necessário, digamos 50 GB
db.runCommand( { create: "oplog.rs", capped: true, size: (50 * 1024 * 1024 * 1024) } )
Além disso, você pode especificar o tamanho do oplog em MB no arquivo mongod.conf, digamos 50 GB, 429496 MB
replication:
oplogSizeMB: 429496
Espero que isto ajude !!!
Editar:
Como mencionado por Nicholas Tolley Cottrell nos comentários. No MongoDB versão 3.6 , podemos alterar o tamanho do oplog em tempo de execução sem reiniciar.
Verifique o tamanho atual do oplog
use local
db.oplog.rs.stats().maxSize
Para alterar o tamanho do oplog para 10 GB
db.adminCommand({replSetResizeOplog: 1, size: 10000})