sprawdź silnik pamięci masowej z powłoki

35

Aktualizuję do wersji 3.0 i napotkałem problemy z aktualizacją. Konkretnie mam błąd podczas próby uruchomienia mongodprzez sshto próbował użyć domyślnego dbpathzamiast jednej I określonym w moim nowym pliku konfiguracyjnym YAML. Poszedłem do przodu i ponownie uruchomiłem maszynę, a teraz mongodznów działa. W tym momencie jestem trochę paranoikiem i chciałbym wiedzieć, czy istnieje sposób, aby upewnić się, że silnik pamięci masowej pochodzi wiredtigerz powłoki.

ton.yeung
źródło

Odpowiedzi:

61

Najłatwiejszy sposób na znalezienie aktualnie używanego silnika pamięci masowej.

Wewnątrz typu konsoli mongo

db.serverStatus().storageEngine

Zwraca aktualnie używany silnik pamięci

{ "name" : "wiredTiger" }

Po potwierdzeniu, że używany jest wiredTiger, wpisz

db.serverStatus().wiredTiger

aby uzyskać wszystkie szczegóły konfiguracji wiredTiger.

Mayank Patel
źródło
2
Aby to potwierdzić, działa to również w systemie Windows.
Chris Paton,
9

ZASTRZEŻENIE: Nie jest ekspertem MongoDB

Sprawdź listę procesów w systemie Linux

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

1 oznacza, że ​​tam jest

Z muszli mangowej

db.serverStatus()

Powinieneś zobaczyć coś takiego

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

lub możesz po prostu wyciągnąć nazwę silnika pamięci

db.serverStatus().storageEngine.name

Będziesz albo dostać mmapv1lubwiredTiger

lub z linii poleceń

MONGO_ENGINE=`mongo -u... -p... --eval "db.serverStatus().storageEngine.name"`
RolandoMySQLDBA
źródło
Jestem na Ubuntu, więc wypróbowałem komendę Linux i pokazała 0, ale db.serverStatus () pokazuje węzeł wiredTiger.
ton.yeung
cóż, tak czy inaczej, db.serverStatus jest zachęcający. dzięki temu zaktualizuję pozostałe serwery i wystawię bilet z mongo, by uzyskać ostateczną odpowiedź.
ton.yeung
Czy to ma jakieś aktualizacje? Nadal dostaję 0, kiedy to uruchamiam.
chaitanya.varanasi
2
@ chaitanya.varanasi Proszę spojrzeć na drugą odpowiedź. Ma to, czego chcesz. Dla jasności powiem: Jeśli korzystasz z MongoDB 3.x, po prostu uruchom db.serverStatus().storageEngine.name. Powie albo mmapv1albo wiredTiger.
RolandoMySQLDBA
Grepping dla --storageEngineparametru działa tylko w ograniczonych sytuacjach, np. MongoDB 3.0, gdzie parametr jest jawnie podany w linii poleceń. Zazwyczaj mongodwartości konfiguracyjne są dostarczane w pliku konfiguracyjnym, więc nie pojawią się na pswyjściu. W MongoDB 3.2+ WiredTiger jest domyślnym silnikiem pamięci, więc nie jest wymagany żaden dodatkowy parametr. Zalecane podejście do użytku to druga sugestia db.serverStatus().storageEngine.namepoprzez mongopowłokę. Do Twojej wiadomości, jeśli używasz MongoDB 2.6 lub starszej, to nie zadziała: jedynym silnikiem pamięci był MMAP.
Stennie,
1

mongod.logPlik zostanie wypełniona przez ciąg, który opisuje, co silnik składowania używasz;
abyś mógł uruchomić:

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

co zwraca coś takiego:

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),
maioman
źródło