controllare il motore di archiviazione dalla shell


35

Sto eseguendo l'aggiornamento a 3.0 e ho riscontrato alcuni problemi con l'aggiornamento. In particolare, ho riscontrato un errore durante il tentativo di avvio mongodtramite ssh, ha tentato di utilizzare l'impostazione predefinita dbpathanziché quella specificata nel mio nuovo file di configurazione YAML. Sono andato avanti e ho riavviato la macchina e ora mongodè di nuovo funzionante. A questo punto sono un po 'paranoico e vorrei sapere se esiste un modo per assicurarsi che il motore di archiviazione provenga wiredtigerdalla shell.

Risposte:


61

Il modo più semplice per trovare il motore di archiviazione attualmente in uso.

Tipo di console mongo interna

db.serverStatus().storageEngine

Restituisce il motore di archiviazione attualmente in uso

{ "name" : "wiredTiger" }

Una volta confermato che viene utilizzato wiredTiger, digitare

db.serverStatus().wiredTiger

per ottenere tutti i dettagli di configurazione di wiredTiger.


2
Solo per confermare, questo funziona anche su Windows.
Chris Paton,

9

DISCLAIMER: non un esperto MongoDB

Controlla l'elenco dei processi in Linux

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

1 significa che è lì

Dal guscio di mongo

db.serverStatus()

Dovresti vedere qualcosa del genere

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

oppure puoi semplicemente tirare il nome del motore di archiviazione con

db.serverStatus().storageEngine.name

Otterrai mmapv1owiredTiger

o dalla riga di comando

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

Sono su Ubuntu, quindi ho provato il comando Linux e mostrava 0, ma db.serverStatus () mostra un nodo wiredTiger.
ton.yeung,

bene in entrambi i casi, db.serverStatus è incoraggiante. con questo andrò avanti e aggiornerò gli altri miei server e inserirò un biglietto con mongo per una risposta definitiva.
ton.yeung,

Qualche aggiornamento a questo proposito? Ottengo ancora uno 0 quando eseguo questo.
chaitanya.varanasi,

2
@ chaitanya.varanasi Per favore, guarda l'altra risposta. Ha quello che vuoi. Per motivi di chiarezza, dirò questo: se stai eseguendo MongoDB 3.x, corri db.serverStatus().storageEngine.name. Dirà mmapv1o wiredTiger.
RolandoMySQLDBA

Il grepping per il --storageEngineparametro funziona solo in situazioni limitate, ad esempio MongoDB 3.0 in cui il parametro viene esplicitamente fornito sulla riga di comando. In genere i mongodvalori di configurazione sono forniti in un file di configurazione in modo che non vengano visualizzati psnell'output. In MongoDB 3.2+ WiredTiger è il motore di archiviazione predefinito, quindi non è richiesto alcun parametro aggiuntivo. L'approccio raccomandato da usare è il tuo secondo suggerimento db.serverStatus().storageEngine.nametramite la mongoshell. Cordiali saluti, se ti capita di usare MongoDB 2.6 o precedente non funzionerà: l'unico motore di archiviazione era MMAP.
Stennie,

1

Il mongod.logfile viene popolato da una stringa che descrive quale motore di archiviazione stai utilizzando;
in modo da poter eseguire:

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

che restituisce qualcosa del tipo:

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),
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.