kiểm tra động cơ lưu trữ từ vỏ


35

Tôi đang nâng cấp lên 3.0 và gặp một số vấn đề với việc nâng cấp. Cụ thể, tôi đã gặp lỗi khi cố gắng khởi động mongodthông qua ssh, nó đã cố sử dụng mặc định dbpaththay vì lỗi tôi đã chỉ định trong tệp cấu hình YAML mới của mình. Tôi đã tiếp tục và khởi động lại máy và bây giờ đã mongodhoạt động trở lại. Tôi hơi hoang tưởng vào thời điểm này và muốn biết liệu có cách nào để đảm bảo công cụ lưu trữ là wiredtigertừ vỏ.

Câu trả lời:


61

Cách dễ nhất để tìm công cụ lưu trữ đang được sử dụng hiện nay.

Bên trong loại bảng điều khiển mongo

db.serverStatus().storageEngine

Nó trả về công cụ lưu trữ đang được sử dụng hiện tại

{ "name" : "wiredTiger" }

Khi đã xác nhận rằng WiredTiger đang được sử dụng, hãy gõ

db.serverStatus().wiredTiger

để có được tất cả các chi tiết cấu hình của WiredTiger.


2
Chỉ cần xác nhận, điều này cũng hoạt động trên Windows.
Chris Paton

9

TUYÊN BỐ TỪ CHỐI: Không phải là Chuyên gia MongoDB

Kiểm tra danh sách quy trình trong Linux

WIREDTIGER_CONFIGURED=`ps -ef|grep mongod|grep -i storageengine|grep -ic wiredtiger`
echo ${WIREDTIGER_CONFIGURED}

1 có nghĩa là nó ở đó

Từ vỏ mongo

db.serverStatus()

Bạn sẽ thấy một cái gì đó như thế này

"wiredTiger" : {
   ...
   "cache" : {
      "tracked dirty bytes in the cache" : <num>,
      "bytes currently in the cache" : <num>,
      "maximum bytes configured" : <num>,
      "bytes read into cache" :<num>,

hoặc bạn chỉ có thể kéo tên công cụ lưu trữ với

db.serverStatus().storageEngine.name

Bạn sẽ nhận được mmapv1hoặcwiredTiger

hoặc từ dòng lệnh

MONGO_ENGINE=`mongo -u... -p... --eval "db.serverStatus().storageEngine.name"`

Tôi đang sử dụng Ubuntu, vì vậy tôi đã thử lệnh Linux và nó hiển thị 0, nhưng db.serverStatus () hiển thị nút WiredTiger.
ton.yeung

dù sao đi nữa, db.serverStatus rất đáng khích lệ. với điều này, tôi sẽ tiếp tục và cập nhật các máy chủ khác của mình và đặt một vé với mongo để có câu trả lời dứt khoát.
ton.yeung

Có bản cập nhật nào về điều này? Tôi vẫn nhận được 0 khi chạy cái này.
chaitanya.varanasi

2
@ chaitanya.varanasi Hãy nhìn vào câu trả lời khác. Nó có những gì bạn muốn. Để rõ ràng, tôi sẽ nói điều này: Nếu bạn đang chạy MongoDB 3.x, hãy chạy db.serverStatus().storageEngine.name. Nó sẽ nói mmapv1hoặc wiredTiger.
RolandoMySQLDBA

Cắt xén cho --storageEnginetham số chỉ hoạt động trong các tình huống giới hạn, ví dụ MongoDB 3.0 trong đó tham số được cung cấp rõ ràng trên dòng lệnh. Thông thường mongodcác giá trị cấu hình được cung cấp trong tệp cấu hình để chúng không xuất hiện trong psđầu ra. Trong MongoDB 3.2+ WiredTiger là công cụ lưu trữ mặc định nên không yêu cầu tham số bổ sung. Cách tiếp cận được đề xuất để sử dụng là đề xuất thứ hai của bạn db.serverStatus().storageEngine.namethông qua mongoshell. FYI, nếu bạn tình cờ sử dụng MongoDB 2.6 trở lên thì điều này sẽ không hoạt động: công cụ lưu trữ duy nhất là MMAP.
Stennie

1

Các mongod.logtập tin được dân cư của một chuỗi trong đó mô tả công cụ lưu trữ những gì bạn đang sử dụng;
để bạn có thể chạy:

cat /var/log/mongodb/mongod.log  | grep STORAGE | tail -n 1

trong đó trả về một cái gì đó như:

2017-06-28T21:45:24.745+0200 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=4G,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.