İkincil üzerinde yeni bir dbpath sıfırdan başlamak bile çoğaltma işlemi başarısız olur. Yani şey oplog bazı değişiklikler yapmaktır . Oplogun boyutu, içine tüm uygulama yazmalarını işleyebilmesi için en uygun değere ayarlanmalıdır.
Artan oplog boyutu:
Birincil sunucuyu kapatma
use admin
db.shutdownServer()
Birincil olarak bağımsız olarak başlayın ve farklı bağlantı noktasında çalıştırın 37017
Bağlantı noktası 37017'de mongo'ya giriş yapın
mongo --port 37017
Yerel veritabanındaki eski içeriği kaldırma
Güvenlik için düşürmeden önce eski oplog'u geri al
mongodump --db local --collection 'oplog.rs' --port 37017
Eski içerikleri yerel veritabanına bırakma
use local
db.oplog.rs.drop()
db.me.drop()
db.replset.election.drop()
db.replset.minvalid.drop()
db.startup_log.drop()
Replset koleksiyonu atılamaz, bu nedenle gerekli kimlikle kaldırın:
db.system.replset.remove({ "_id" : "your_replsetname"})
50 GB gibi gerekli büyüklükte yeni bir oplog oluşturun
db.runCommand( { create: "oplog.rs", capped: true, size: (50 * 1024 * 1024 * 1024) } )
Ayrıca mongod.conf dosyasında MB cinsinden oplog boyutunu belirtebilirsiniz, diyelim ki 50 GB için 429496 MB
replication:
oplogSizeMB: 429496
Bu yardımcı olur umarım !!!
Düzenle:
Nicholas Tolley Cottrell tarafından belirtildiği gibi yorumlarda. MongoDB 3.6 sürümünde , yeniden başlatmadan çalışma zamanında oplog boyutunu değiştirebiliriz.
Mevcut oplog boyutunu kontrol edin
use local
db.oplog.rs.stats().maxSize
Oplog boyutunu 10 GB olarak değiştirmek için
db.adminCommand({replSetResizeOplog: 1, size: 10000})