Proses replikasi gagal bahkan jika Anda mulai menggaruk dari dbpath baru di sekunder. Jadi masalahnya adalah membuat beberapa perubahan dalam oplog . Ukuran oplog harus diatur ke nilai optimal sehingga harus dapat menangani semua aplikasi menulis ke dalamnya.
Meningkatkan ukuran oplog:
Matikan server utama
use admin
db.shutdownServer()
Mulai primer sebagai mandiri & jalankan di port yang berbeda katakan 37017
Masuk ke mongo di port 37017
mongo --port 37017
Hapus konten lama di basis data lokal
Untuk keamanan, miliki backop oplog lama sebelum dijatuhkan
mongodump --db local --collection 'oplog.rs' --port 37017
Letakkan konten lama di basis data lokal
use local
db.oplog.rs.drop()
db.me.drop()
db.replset.election.drop()
db.replset.minvalid.drop()
db.startup_log.drop()
Pengumpulan ulang koleksi tidak dapat dibatalkan, jadi hapus dengan id yang diperlukan:
db.system.replset.remove({ "_id" : "your_replsetname"})
Buat oplog baru dengan ukuran yang diperlukan, ucapkan 50 GB
db.runCommand( { create: "oplog.rs", capped: true, size: (50 * 1024 * 1024 * 1024) } )
Anda juga dapat menentukan ukuran oplog dalam MB di file mongod.conf, katakanlah 50 GB-nya 429496 MB
replication:
oplogSizeMB: 429496
Semoga ini membantu !!!
Edit:
Seperti yang disebutkan oleh Nicholas Tolley Cottrell dalam komentar. Dalam MongoDB versi 3.6 kita dapat mengubah ukuran oplog dalam runtime tanpa restart.
Periksa ukuran oplog saat ini
use local
db.oplog.rs.stats().maxSize
Untuk mengubah ukuran oplog menjadi 10 GB
db.adminCommand({replSetResizeOplog: 1, size: 10000})