กระบวนการจำลองล้มเหลวแม้ว่าคุณจะเริ่มต้นจากรอยขีดข่วน DBPath ใหม่บน secondary.So สิ่งที่เป็นที่จะทำให้บางเปลี่ยนแปลงใน oplog ขนาดของ oplog ต้องถูกตั้งค่าเป็นค่าที่เหมาะสมที่สุดเพื่อให้สามารถจัดการแอปพลิเคชันทั้งหมดที่เขียนลงไปได้
การเพิ่มขนาด oplog:
ปิดเซิร์ฟเวอร์หลัก
use admin
db.shutdownServer()
เริ่มต้นหลักเป็นแบบสแตนด์อโลนและเรียกใช้บนพอร์ตอื่นบอกว่า 37017
เข้าสู่ระบบ mongo ในพอร์ต 37017
mongo --port 37017
ลบเนื้อหาเก่าในฐานข้อมูลท้องถิ่น
เพื่อความปลอดภัยต้องมี backop ของ oplog เก่าก่อนที่จะวาง
mongodump --db local --collection 'oplog.rs' --port 37017
วางเนื้อหาเก่าลงในฐานข้อมูลท้องถิ่น
use local
db.oplog.rs.drop()
db.me.drop()
db.replset.election.drop()
db.replset.minvalid.drop()
db.startup_log.drop()
ไม่สามารถลบคอลเล็กชัน Replset ได้ดังนั้นให้ลบด้วย id ที่ต้องการ:
db.system.replset.remove({ "_id" : "your_replsetname"})
สร้าง oplog ใหม่ที่มีขนาดที่ต้องการประมาณ 50 GB
db.runCommand( { create: "oplog.rs", capped: true, size: (50 * 1024 * 1024 * 1024) } )
นอกจากนี้คุณสามารถระบุขนาด oplog เป็น MB ในไฟล์ mongod.conf ได้ว่ามีขนาด 509 426,496 MB สำหรับ 50 GB
replication:
oplogSizeMB: 429496
หวังว่านี่จะช่วย !!!
แก้ไข:
ตามที่กล่าวไว้โดย Nicholas Tolley Cottrell ในความคิดเห็น ใน MongoDB เวอร์ชั่น 3.6เราสามารถเปลี่ยนขนาด oplog ใน runtime โดยไม่ต้องทำการรีสตาร์ท
ตรวจสอบขนาด oplog ปัจจุบัน
use local
db.oplog.rs.stats().maxSize
ในการเปลี่ยนขนาด oplog เป็น 10 GB
db.adminCommand({replSetResizeOplog: 1, size: 10000})