2013-09-27 177 views
12

Tôi thiết lập một bản sao mongodb thiết lập một vài ngày trước, tôi đã làm một số thử nghiệm nhỏ trên đó và mọi thứ hoạt động tốt. Hôm nay tôi chỉ tìm thấy bộ sưu tập địa phương của nó đã tăng lên đến 24G !!!Tại sao cơ sở dữ liệu cục bộ mongodb mới được tạo của tôi tăng lên 24GB?

rs0:PRIMARY> show dbs 
local 24.06640625GB 
test 0.203125GB 

Các bộ sưu tập khác trông bình thường ngoại trừ "oplog.rs":

rs0:PRIMARY> db.oplog.rs.stats() 
{ 
    "ns" : "local.oplog.rs", 
    "count" : 322156, 
    "size" : 119881336, 
    "avgObjSize" : 372.12200300475547, 
    "storageSize" : 24681987920, 
    "numExtents" : 12, 
    "nindexes" : 0, 
    "lastExtentSize" : 1071292416, 
    "paddingFactor" : 1, 
    "systemFlags" : 0, 
    "userFlags" : 0, 
    "totalIndexSize" : 0, 
    "indexSizes" : { 

    }, 
    "capped" : true, 
    "max" : NumberLong("9223372036854775807"), 
    "ok" : 1 
} 

Đây là mongodb.conf tôi

dbpath=/data/db 

#where to log 
logpath=/var/log/mongodb/mongodb.log 
logappend=true 
port = 27017 
fork = true 
replSet = rs0 

Làm thế nào tôi có thể giải quyết nó? Cảm ơn nhiều.

Trả lời

16

Các oplog, giữ nhật ký liên tục cho các hoạt động trên cơ sở chính và được sử dụng cho cơ chế sao chép, được phân bổ theo mặc định ở 5% dung lượng đĩa trống (dành cho hệ thống Linux/Unix, chứ không phải Mac OS X hoặc Windows). Vì vậy, nếu bạn có nhiều không gian đĩa trống, MongoDB sẽ tạo ra một oplog lớn, có nghĩa là bạn có một cửa sổ thời gian lớn trong đó bạn có thể khôi phục lại bất kỳ điểm nào trong thời gian, chẳng hạn. Khi oplog đạt đến kích thước tối đa, nó chỉ đơn giản là cuộn qua (vòng đệm).

Bạn có thể chỉ định kích thước của oplog khi khởi tạo cơ sở dữ liệu bằng cách sử dụng tùy chọn oplogSize, xem http://docs.mongodb.org/manual/core/replica-set-oplog/

Bottom line: Trừ khi bạn đang thực sự thiếu không gian đĩa (mà dường như bạn không, nếu không thì sẽ không tiêu oplog đã không được tạo ra quá lớn), đừng lo lắng về nó. Nó cung cấp bảo mật thêm.

+0

Cảm ơn. Tôi có một ổ cứng 492G. Tôi sẽ chuyển dữ liệu cũ từ máy chủ mongodb cũ sang bộ bản sao mới. Kích thước dữ liệu là 6GB với khoảng 10 triệu bản ghi. Đó có phải là an toàn để sử dụng mongodump và mongorestore với máy chủ sản xuất trực tiếp? – blackgun

+3

Không nên làm _anything_ trong quá trình sản xuất chưa được thử trong môi trường QA trước. Nếu phiên bản MongoDB cũ không quá xa phiên bản mới, thì chỉ cần chuyển các tệp dữ liệu cũ sang thư mục dữ liệu chính mới và khởi động lại bộ bản sao mới có thể dễ dàng hơn. Nhân rộng nên bắt kịp với một đồng bộ đầy đủ. Đừng làm điều này mà không thử nó trong QA đầu tiên! – drmirror