проверить двигатель хранилища из оболочки

35

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

ton.yeung
источник

Ответы:

61

Самый простой способ найти механизм хранения, используемый в настоящее время.

Тип внутренней консоли

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"`
RolandoMySQLDBA
источник
Я на Ubuntu, поэтому я попробовал команду Linux, и она показала 0, но db.serverStatus () показывает узел wiredTiger.
ton.yeung
в любом случае, db.serverStatus обнадеживает. с этим я продолжу и обновлю мои другие серверы и вставлю билет с Монго для окончательного ответа.
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оболочку. К вашему сведению, если вы используете 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),
maioman
источник