Skip to main content

Repair-Compact MongoDB Database

Ta biết rằng khi thực hiện xóa một số document trong một collection (hoặc xóa cả collection) , vùng nhớ bị chiếm của những dữ liệu này sẽ không được trả cho hệ điều hành . Muốn giải phóng vùng nhớ này , phải thực hiện repairDatabase()
Cách thực hiện repair một replicaSet :
1 . Shut down instance mongod slave . Sau đó chạy repair (bằng cách start nó với tùy chọn --repair và không sử dụng replicaSet , không có tùy chọn --replSet). Sau đó start lại instance này với cấu hình replicaSet như cũ và chờ cho nó đồng bộ với master
2. Chuyển instance mongod từ master sang slave bằng cách kết nối vào instance này , sau đó dùng lệnh rs.stepDown() . Master sẽ được chuyển giao cho instance slave lúc đầu (lưu ý trường hợp có nhiều slave , nếu muốn chọn slave nào sẽ trở thành master dùng command rs.replSetFreeze() cho các slave còn lại). Ví dụ ta có A , B , C thuộc cùng 1 replicaSet , master là A . Muốn chuyển master cho B ta phải "freeze" C .
$ mongo --host C > // first check that everyone is healthy and in the states we expect: > rs.status() > // C : not eligible to be primary for 120 seconds > rs.freeze(120) > exit  $ mongo --host A > // A : step down as primary and ineligible to be primary for 120 seconds > rs.stepDown(120) > // B will now become primary. for this to work B must be up to date.
Sau đó làm tương tự bước 1 cho instance vừa mới bị chuyển thành slave .
3. Đối với arbiter không cần làm gì .

Đó là các bước repair đối với replicaSet . Tuy nhiên từ mongoDb phiên bản 1.9 + , có command compact có tác dụng đối với 1 collection cụ thể , không như repairData() sẽ có tác dụng với tất cả collection (gây tốn nhiều thời gian nếu như ta chỉ muốn thực hiện trên 1 collection cụ thể , trong thời gian repair , mongod sẽ bị lock )
db.runCommand( { compact : 'mycollectionname' } )

Comments

Popular posts from this blog

MongoDB chiếm nhiều RAM ?

A. Giới thiệu : MongoDB là một trong những NoSQL(Not oly SQL) database được biết đến nhiều hiện nay , đặc trưng với cách lưu trữ dạng binary Json (BSON)cũng như khả năng truy vấn uyển chuyển (các NoSQL khác thường giới hạn điều này ) . Shell script tương tác bằng javascript . Do đó nó hay đi chung với Node.js :) Tuy nhiên , có một vấn đề là mongoDb sử dụng nhiều dung lượng RAM (do cơ chế caching của nó). Giải pháp là phải tăng dung lượng RAM cho server đó , cũng như là monitoring cẩn thận để không xảy ra tình trạng này . Nhưng còn giải pháp nào khác nữa không ? Đầu tiên cần tìm hiểu các nguyên nhân MongoDB chiếm nhiều RAM như vậy , từ đó mới có cách giải quyết triệt để . Dưới đây là một số nguyên nhân mà tôi đã tìm hiểu được . B. Nguyên nhân : 1. Index : MongoDb có tốc độ đọc (read) nhanh , nếu ta biết cách tạo index hiệu quả . MongoDB dùng B-tree index (nhanh hơn table scans). Tuy nhiên index này lại nằm trên RAM . Khi bạn dùng câu lệnh "remove" để xóa các document tron

Luyện tập viết code

Dạo này đi phỏng vấn kiểu pair programming mới thấy sự cần thiết của việc rèn luyện code hằng ngày. Làm sao để tạo hứng thú luyện tập code đây? Dưới đây là danh sách các công việc khởi tạo ban đầu để hứng thú với code như sau:      1.  Trên github tạo repository chứa code để luyện tập. Ví dụ như MyHackerrank      2. Nếu có sẵn project rồi cần add vào github thì thực hiện các bước sau:             Tham khảo thêm project có sẵn vào github sử dụng command line        3. Tham gia một số cộng đồng coding như là Hackerrank và Leetcode. Hackerrank có phần  Hackerrank Interview Preparation Kit   cũng khá là hay ho, hồi xưa thời còn đi học làm gì có mấy trang kiểu này. Hoặc là  tập hợp các bài toán trên Leetcode . Ở leetcode cũng có một bộ sưu tập các câu hỏi phỏng vấn được đặt ra và trả lời bởi cộng đồng, cùng với các bài học về giải thuật và lập trình hướng tương tác rất hay.  Leetcode Explore         4. Ôn giải thuật và cấu trúc dữ liệu thì trang này khá đầy đủ  Geeksforgeeks&

Mongo DB feature

Hôm nay mình tìm hiểu về MongoDB Aggregation . Đọc qua bài này : http://kylebanker.com/blog/2009/11/mongodb-count-group/ 1. Count : Cái này đơn giản 2. Distinct : 3. Group :