compruebe el motor de almacenamiento desde la carcasa


35

Estoy actualizando a 3.0 y encontré algunos problemas con la actualización. Específicamente, recibí un error al intentar iniciar a mongodtravés de ssh, intentó usar el predeterminado en dbpathlugar del especificado en mi nuevo archivo de configuración YAML. Seguí adelante y reinicié la máquina y ahora mongodestá funcionando nuevamente. Estoy un poco paranoico en este punto y me gustaría saber si hay una manera de asegurarme de que el motor de almacenamiento sea wiredtigerdel shell.

Respuestas:


61

La forma más fácil de encontrar el motor de almacenamiento que se utiliza actualmente.

Tipo de consola interior mongo

db.serverStatus().storageEngine

Devuelve el motor de almacenamiento que se usa actualmente

{ "name" : "wiredTiger" }

Una vez que se confirme que se está utilizando wiredTiger, escriba

db.serverStatus().wiredTiger

para obtener todos los detalles de configuración de wiredTiger.


2
Solo para confirmar, esto también funciona en Windows.
Chris Paton

9

DESCARGO DE RESPONSABILIDAD: no es un experto de MongoDB

Verifique la lista de procesos en Linux

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

1 significa que está ahí

De la concha de mongo

db.serverStatus()

Debería ver algo como esto

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

o simplemente puede extraer el nombre del motor de almacenamiento con

db.serverStatus().storageEngine.name

Obtendrás mmapv1owiredTiger

o desde la línea de comando

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

Estoy en ubuntu, así que probé el comando de Linux y mostró 0, pero db.serverStatus () muestra un nodo wiredTiger.
ton.yeung

bueno, de cualquier manera, el db.serverStatus es alentador. con esto continuaré y actualizaré mis otros servidores y pondré un boleto con mongo para obtener una respuesta definitiva.
ton.yeung

¿Algún avance en esto? Todavía obtengo un 0 cuando ejecuto esto.
chaitanya.varanasi

2
@ chaitanya.varanasi Por favor, mire la otra respuesta. Tiene lo que tu quieres. En aras de la claridad, diré esto: si está ejecutando MongoDB 3.x, simplemente ejecute db.serverStatus().storageEngine.name. Dirá mmapv1o wiredTiger.
RolandoMySQLDBA

Grepping para el --storageEngineparámetro solo funciona en situaciones limitadas, por ejemplo, MongoDB 3.0 donde el parámetro se proporciona explícitamente en la línea de comando. Por lo general, mongodlos valores de configuración se proporcionan en un archivo de configuración para que no aparezcan en la pssalida. En MongoDB 3.2+, WiredTiger es el motor de almacenamiento predeterminado, por lo que no se requiere ningún parámetro adicional. El enfoque recomendado para usar es su segunda sugerencia a db.serverStatus().storageEngine.nametravés del mongoshell. Para su información, si está usando MongoDB 2.6 o anterior, esto no funcionará: el único motor de almacenamiento era MMAP.
Stennie

1

El mongod.logarchivo se llena con una cadena que describe qué motor de almacenamiento está utilizando;
para que puedas correr:

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

que devuelve algo como:

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),
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.