depolama motorunu kabuğundan kontrol et


35

3.0'a yükseltme yapıyorum ve yükseltme ile ilgili bazı sorunlarla karşılaştım. Özellikle, mongodüzerinden başlatmaya çalışırken bir hata aldım ssh, dbpathyeni YAML yapılandırma dosyamda belirtilen yerine varsayılanı kullanmaya çalıştı . Devam ettim ve makineyi yeniden başlattım ve şimdi mongodçalışıyor ve tekrar çalışıyor. Bu noktada biraz paranoyak oluyorum ve depolama motorunun wiredtigerkabuğundan geldiğinden emin olmanın bir yolu olup olmadığını bilmek istiyorum .

Yanıtlar:


61

Halen kullanılmakta olan depolama motorunu bulmanın en kolay yolu.

İç mongo konsolu tipi

db.serverStatus().storageEngine

Şu anda kullanılmakta olan depolama motorunu döndürür

{ "name" : "wiredTiger" }

WiredTiger'ın kullanıldığı doğrulandıktan sonra,

db.serverStatus().wiredTiger

wiredTiger’ın tüm yapılandırma ayrıntılarını almak için


2
Sadece onaylamak için, bu da Windows üzerinde çalışıyor.
Chris Paton

9

YASAL UYARI: Bir MongoDB Uzmanı Değil

Linux'taki işlem listesini kontrol edin

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

1 orada olduğu anlamına gelir

Mongo kabuğundan

db.serverStatus()

Böyle bir şey görmelisin

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

veya sadece depolama motoru adını

db.serverStatus().storageEngine.name

Ya alacaksın mmapv1ya dawiredTiger

veya komut satırından

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

Ubuntu'dayım, bu yüzden Linux komutunu denedim ve 0 gösterdi, ancak db.serverStatus (), bir kabloluTiger düğümünü gösteriyor.
ton.yeung

Her iki durumda da, db.serverStatus teşvik ediyor. Bununla devam edeceğim ve diğer sunucularımı güncelleyeceğim ve kesin bir cevap için mongo ile bir bilet koyacağım.
ton.yeung

herhangi bir güncelleme var mı? Bunu çalıştırdığımda hala 0 alıyorum.
chaitanya.varanasi

2
@ chaitanya.varanasi Lütfen diğer cevaba bakınız. İstediğini var. Netlik adına şunu söyleyeceğim: MongoDB 3.x kullanıyorsanız, koşun db.serverStatus().storageEngine.name. Ya diyecek mmapv1ya da wiredTiger.
RolandoMySQLDBA

Parametre için grepping --storageEnginesadece sınırlı durumlarda çalışır, örn. Parametrenin komut satırında açıkça sağlandığı MongoDB 3.0. Genelde mongodyapılandırma değerleri bir yapılandırma dosyasında sağlanır, böylece psçıktıda görünmezler . MongoDB 3.2'de WiredTiger varsayılan depolama motorudur, bu nedenle ek parametre gerekmez. Kullanılması önerilen yaklaşım db.serverStatus().storageEngine.name, mongokabuktan ikinci önerinizdir . Bilginize, eğer MongoDB 2.6 veya daha eski bir sürümünü kullanıyorsanız bu işe yaramaz: tek depolama motoru MMAP idi.
Stennie

1

mongod.logDosya kullandığınız hangi depolama motoru tanımlayan bir dize tarafından doldurulur alır;
Böylece koşabilirsin:

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

hangi gibi bir şey döner:

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),
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.