Quá trình sao chép thất bại ngay cả khi bạn bắt đầu cào từ một dbpath mới trên phụ. Vì vậy, điều cần làm là thực hiện một số thay đổi trong oplog . Kích thước của oplog phải được đặt thành một giá trị tối ưu để nó có thể xử lý tất cả các ứng dụng ghi vào nó.
Tăng kích thước oplog:
Tắt máy chủ chính
use admin
db.shutdownServer()
Bắt đầu chính là độc lập và chạy trên cổng khác nhau, nói 37017
Đăng nhập vào mongo trong cổng 37017
mongo --port 37017
Xóa nội dung cũ trong cơ sở dữ liệu cục bộ
Để an toàn, hãy sao lưu oplog cũ trước khi thả
mongodump --db local --collection 'oplog.rs' --port 37017
Bỏ nội dung cũ vào cơ sở dữ liệu cục bộ
use local
db.oplog.rs.drop()
db.me.drop()
db.replset.election.drop()
db.replset.minvalid.drop()
db.startup_log.drop()
Bộ sưu tập thay thế không thể bị loại bỏ vì vậy hãy xóa nó với id yêu cầu:
db.system.replset.remove({ "_id" : "your_replsetname"})
Tạo một oplog mới có kích thước yêu cầu là 50 GB
db.runCommand( { create: "oplog.rs", capped: true, size: (50 * 1024 * 1024 * 1024) } )
Ngoài ra, bạn có thể chỉ định kích thước oplog tính bằng MB trong tệp mongod.conf, giả sử 50 GB là 429496 MB
replication:
oplogSizeMB: 429496
Hi vọng điêu nay co ich !!!
Biên tập:
Như đề cập của Nicholas Tolley Cottrell trong các bình luận. Trong phiên bản MongoDB 3.6, chúng ta có thể thay đổi kích thước oplog trong thời gian chạy mà không cần khởi động lại.
Kiểm tra kích thước oplog hiện tại
use local
db.oplog.rs.stats().maxSize
Để thay đổi kích thước oplog thành 10 GB
db.adminCommand({replSetResizeOplog: 1, size: 10000})