2013-01-23 33 views
5

Tôi đã aksed this question in mongodb google group, trong trường hợp không có bất kỳ trả lời gửi nó ở đây.Bao nhiêu không gian bổ sung sẽ sửa chữa cơ sở dữ liệu yêu cầu

Chúng tôi có một phiên bản nút đơn mongo (phiên bản 2.0.1). Chúng tôi đang chạy ra khỏi không gian đĩa ngay cả sau khi lưu trữ hàng ngày như mongo không trả lại không gian trở lại hệ điều hành và cố gắng sử dụng nó chính nó. Hiện tại, thiết lập của chúng tôi đã trở nên rất thưa thớt với khoảng 50% không gian nằm ở chế độ chờ. Bạn có thể thấy rằng dữ liệu + kích thước chỉ mục là khoảng 1170 GB trong khi dung lượng lưu trữ là khoảng 2158 GB và kích thước tệp là khoảng 2368 GB.

db.stats()  
{ 
    "db" : "default",    
    "collections" : 106, 
    "objects" : 553988389, 
    "avgObjSize" : 2094.1392962010254, 
    "dataSize" : NumberLong("1160128855044"), 
    "storageSize" : NumberLong("2315777236208"), 
    "numExtents" : 1487, 
    "indexes" : 107, 
    "indexSize" : 97914435136, 
    "fileSize" : NumberLong("2543459500032"), 
    "nsSizeMB" : 16, 
    "ok" : 1 
} 

Chúng tôi muốn đòi lại không gian và vì đây không phải là hệ thống nhiệm vụ quan trọng (giống như bãi rác cho các khúc gỗ) có thể duy trì thời gian chết. Chúng tôi không muốn chi tiêu vào việc tạo ra một bản sao thiết lập cũng chúng tôi đang ở trong một trung tâm dữ liệu vật lý do đó sẽ không thích đính kèm đĩa bổ sung chỉ để sửa chữa cơ sở dữ liệu.
Tôi muốn hiểu: -
-Doanh không gian đĩa miễn phí là cần thiết cho cơ sở dữ liệu sửa chữa
-Làm thế nào nhiều không gian chúng ta có thể hy vọng sẽ phục hồi sau khi cơ sở dữ liệu sửa chữa
-Around bao nhiêu thời gian nó cần thực hiện để sửa chữa cơ sở dữ liệu.
-Nếu ở tất cả các cơ sở dữ liệu sửa chữa vẫn tiếp diễn, có an toàn khi chỉ cần giết nó và khởi động lại cơ sở dữ liệu.

Số lượng lớn dữ liệu của chúng tôi nằm trong một bộ sưu tập duy nhất để liệu bộ sưu tập nhỏ gọn có tốt hơn cơ sở dữ liệu sửa chữa hay không.

+1

Repair có thể yêu cầu lên đến không gian 2X. –

+0

2X kích thước dữ liệu hoặc dung lượng lưu trữ? – pseudonym

+0

Sửa chữa sẽ làm một '' mongodump'' và '' mongorestore'' và cho rằng nó đòi hỏi hai lần không gian đĩa cơ sở dữ liệu của bạn đang sử dụng tức là nó cần không gian để lưu trữ các tệp cơ sở dữ liệu cũ và mới. Để tránh điều đó, bạn có thể tự làm một '' mongodump'', xóa các tệp cơ sở dữ liệu và sau đó chạy '' mongorestore''. Ngoài ra, nếu bạn chỉ cần đòi lại không gian không sử dụng, bạn có thể chạy '' compact'' (chắc chắn rằng bạn có 2GB dung lượng trống). – diliop

Trả lời

2

Trước tiên, tôi khuyên bạn nên nâng cấp từ phiên bản 2.0.1. Ít nhất là 2.0.7 nếu không 2.2.2. Sửa mất kích thước tệp 2x. Bạn nên kết thúc với kích thước dữ liệu lớn hơn một chút so với kích thước tệp của mình. Mất bao lâu tùy thuộc vào tài nguyên hệ thống và mức độ bận rộn của hệ thống của bạn. Compact không giải phóng dung lượng trên đĩa - nó chỉ chống phân mảnh trong tệp dữ liệu.

Trong 2.2.x bạn có thể sử dụng collMod

lệnh để thiết lập usePowerOf2Sizes để giảm phân mảnh tập tin. ví dụ: chèn tài liệu 800 byte và 1024 byte sẽ được phân bổ. Xóa tài liệu đó và chèn một tài liệu 900 byte, bây giờ không gian 1024 có thể được tái sử dụng. Nếu không có điều này có thể chỉ 850 byte sẽ được phân bổ và không gian trống mới sẽ được phân bổ cho tài liệu 900 byte.

giết repairDatabase nên ok - tập tin được sao chép vào vị trí mới, defragg'd sau đó sao chép lại trên các dữ liệu nhưng bạn sẽ phải kiểm tra nó để chắc chắn :)

+0

Thanks @gregor At hiện tại chúng tôi đang lưu trữ thường xuyên nhưng mongo không thể tận dụng không gian giải phóng một cách chính xác mà bạn có thể thấy bằng sự khác biệt về kích thước dữ liệu + chỉ mục và dung lượng lưu trữ.Nếu chúng ta tiếp tục và 'compact' dữ liệu thì nó sẽ bắt đầu sử dụng không gian (không gian trống với Mongo) hiệu quả hơn? Theo nâng cấp, hiện tại chúng tôi không muốn đầu tư bất kỳ băng thông nào vì giải pháp đầy đủ sẽ được thay thế sau một vài tháng. Cũng như @ diliop đã đề xuất liệu 2GB có đủ cho 'nhỏ gọn ' – pseudonym

+0

@ApoorvaGaurav Xin chào, tôi đã thấy những người sử dụng MongoDB trong sản xuất với các bài viết lớn và đọc làm nhỏ gọn trên cơ sở thường xuyên như mỗi tuần. Họ thậm chí đã viết một kịch bản như thế này để làm điều đó tự động và không làm sửa chữa gây ra nó mất như mãi mãi và cần x2 của lưu trữ. Kiểm tra điều này: http://blog.parse.com/2013/03/26/always-be-compacting/ và đây là mã trên github: https://github.com/ParsePlatform/Ops/blob/master/ tools/mongo_compact.rb – Maziyar

Các vấn đề liên quan