перевірити двигун зберігання від оболонки


35

Я переходжу на 3.0 і стикався з деякими проблемами з оновленням. Зокрема, я отримав помилку при спробі запуску mongodчерез ssh, він намагався використовувати за замовчуванням dbpathзамість того, який я вказав у своєму новому конфігураційному файлі YAML. Я пішов вперед і перезавантажив машину і тепер mongodзнову працює і працює. Я трохи параноїдний на даний момент, і хотів би дізнатися, чи є спосіб переконатися, що двигун зберігання даних є wiredtigerз оболонки.

Відповіді:


61

Найпростіший спосіб знайти двигун зберігання даних, який використовується зараз.

Всередині типу консолі mongo

db.serverStatus().storageEngine

Він повертає двигун зберігання, який використовується зараз

{ "name" : "wiredTiger" }

Після того, як буде підтверджено, що використовується wiredTiger, тоді наберіть

db.serverStatus().wiredTiger

щоб отримати всі деталі конфігурації wiredTiger.


2
Тільки для підтвердження, це працює і в Windows.
Кріс Патон

9

ВІДХОДЖЕННЯ: Не експерт MongoDB

Перевірте список процесів у Linux

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

1 означає, що він є

З оболонки монго

db.serverStatus()

Ви повинні побачити щось подібне

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

або ви можете просто потягнути назву двигуна пам’яті

db.serverStatus().storageEngine.name

Ви або отримаєте, mmapv1абоwiredTiger

або з командного рядка

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

Я перебуваю на ubuntu, тому я спробував команду Linux, і вона показала 0, але db.serverStatus () показує wiredTiger вузол.
ton.yeung

і в будь-якому випадку, db.serverStatus обнадіює. з цим я буду йти вперед і оновлювати свої інші сервери і вкладу в квиток з mongo для остаточної відповіді.
ton.yeung

будь-яке оновлення з цього приводу? Я все одно отримую 0, коли запускаю це.
chaitanya.varanasi

2
@ chaitanya.varanasi Будь ласка, подивіться на іншу відповідь. У ньому є те, що ти хочеш. Для наочності я скажу так: Якщо ви працюєте з MongoDB 3.x, просто запустіть db.serverStatus().storageEngine.name. Це або скаже, mmapv1або wiredTiger.
RolandoMySQLDBA

З'єднання для --storageEngineпараметра працює лише в обмежених ситуаціях, наприклад, MongoDB 3.0, де параметр явно надається в командному рядку. Зазвичай mongodзначення конфігурації надаються у файлі конфігурації, щоб вони не відображалися у psвисновку. У MongoDB 3.2+ WiredTiger є двигуном зберігання за замовчуванням, тому додаткових параметрів не потрібно. Рекомендований підхід до використання - це ваша друга пропозиція db.serverStatus().storageEngine.nameчерез mongoоболонку. FYI, якщо ви користуєтеся MongoDB 2.6 або старішою версією, це не спрацює: єдиним механізмом зберігання даних був MMAP.
Стенні

1

mongod.logФайл отримує заповнюється рядком , яка описує , який механізм зберігання ви використовуєте;
щоб ви могли запустити:

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

який повертає щось на кшталт:

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),
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.