verifique o mecanismo de armazenamento do shell

35

Estou atualizando para o 3.0 e tive alguns problemas com a atualização. Especificamente, recebi um erro ao tentar iniciar mongodvia ssh, ele tentou usar o padrão em dbpathvez daquele especificado no meu novo arquivo de configuração YAML. Fui em frente e reiniciei a máquina e agora mongodestá em funcionamento novamente. Estou um pouco paranóico neste momento e gostaria de saber se há uma maneira de garantir que o mecanismo de armazenamento seja wiredtigerdo shell.

ton.yeung
fonte

Respostas:

61

A maneira mais fácil de encontrar o mecanismo de armazenamento que está sendo usado atualmente.

Tipo de console mongo interno

db.serverStatus().storageEngine

Retorna o mecanismo de armazenamento que está sendo usado atualmente

{ "name" : "wiredTiger" }

Depois de confirmar que o wiredTiger está sendo usado, digite

db.serverStatus().wiredTiger

para obter todos os detalhes de configuração do wiredTiger.

Mayank Patel
fonte
2
Só para confirmar, isso funciona no Windows também.
Chris Paton
9

AVISO LEGAL: Não é um especialista do MongoDB

Verifique a lista de processos no Linux

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

1 significa que está lá

Da casca do mongo

db.serverStatus()

Você deve ver algo assim

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

ou você pode simplesmente puxar o nome do mecanismo de armazenamento com

db.serverStatus().storageEngine.name

Você receberá mmapv1ouwiredTiger

ou na linha de comando

MONGO_ENGINE=`mongo -u... -p... --eval "db.serverStatus().storageEngine.name"`
RolandoMySQLDBA
fonte
Estou no ubuntu, então tentei o comando Linux e ele mostrou 0, mas o db.serverStatus () mostra um nó wiredTiger.
ton.yeung
bem, de qualquer maneira, o db.serverStatus é encorajador. com isso, atualizarei meus outros servidores e colocarei um ticket com o mongo para uma resposta definitiva.
ton.yeung
alguma atualização disso? Ainda recebo 0 quando executo isso.
chaitanya.varanasi
2
@ chaitanya.varanasi Por favor, olhe a outra resposta. Tem o que você quer. Por uma questão de clareza, direi o seguinte: Se você estiver executando o MongoDB 3.x, basta executar db.serverStatus().storageEngine.name. Ou vai dizer mmapv1ou wiredTiger.
RolandoMySQLDBA 25/01
Grepping para o --storageEngineparâmetro só funciona em situações limitadas, por exemplo, MongoDB 3.0, onde o parâmetro é explicitamente fornecido na linha de comando. Normalmente, mongodos valores de configuração são fornecidos em um arquivo de configuração para que não apareçam na pssaída. No MongoDB 3.2+, o WiredTiger é o mecanismo de armazenamento padrão, portanto, nenhum parâmetro adicional é necessário. A abordagem recomendada a ser usada é sua segunda sugestão db.serverStatus().storageEngine.nameatravés do mongoshell. Para sua informação, se você estiver usando o MongoDB 2.6 ou mais antigo, isso não funcionará: o único mecanismo de armazenamento era o MMAP.
Stennie
1

O mongod.logarquivo é preenchido por uma sequência que descreve qual mecanismo de armazenamento você está usando;
para que você possa executar:

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

que retorna 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),
maioman
fonte