vérifier le moteur de stockage de shell

35

Je passe à la version 3.0 et j'ai rencontré quelques problèmes avec la mise à niveau. En particulier, j'ai eu une erreur en essayant de démarrer mongodvia ssh, il a essayé d'utiliser la valeur par défaut à la dbpathplace de celle spécifiée dans mon nouveau fichier de configuration YAML. Je suis allé de l'avant et ai redémarré la machine et mongodest maintenant à nouveau opérationnel. Je suis un peu paranoïaque à ce stade et aimerais savoir s'il existe un moyen de s'assurer que le moteur de stockage wiredtigerprovient du shell.

ton.yeung
la source

Réponses:

61

Meilleure façon de trouver le moteur de stockage utilisé actuellement.

Type de console mongo

db.serverStatus().storageEngine

Il retourne le moteur de stockage utilisé actuellement

{ "name" : "wiredTiger" }

Une fois qu'il est confirmé que wiredTiger est utilisé, tapez

db.serverStatus().wiredTiger

pour obtenir tous les détails de la configuration de wiredTiger.

Mayank Patel
la source
2
Juste pour confirmer, cela fonctionne aussi sous Windows.
Chris Paton
9

AVERTISSEMENT: Pas un expert MongoDB

Vérifiez la liste des processus sous Linux

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

1 signifie que c'est là

De la coquille de mongo

db.serverStatus()

Vous devriez voir quelque chose comme ça

"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 vous pouvez simplement tirer le nom du moteur de stockage avec

db.serverStatus().storageEngine.name

Vous obtiendrez mmapv1ouwiredTiger

ou depuis la ligne de commande

MONGO_ENGINE=`mongo -u... -p... --eval "db.serverStatus().storageEngine.name"`
RolandoMySQLDBA
la source
Je suis sur Ubuntu, alors j’ai essayé la commande Linux et l’affiche 0, mais db.serverStatus () affiche un nœud wiredTiger.
ton.yeung
de toute façon, db.serverStatus est encourageant. Avec cela, je vais mettre à jour mes autres serveurs et mettre un ticket avec Mongo pour une réponse définitive.
ton.yeung
Une mise à jour pour ceci? Je reçois toujours un 0 quand je lance ceci.
chaitanya.varanasi
2
@ chaitanya.varanasi S'il vous plaît regardez l'autre réponse. Il a ce que tu veux. Par souci de clarté, je dirai ceci: Si vous utilisez MongoDB 3.x, exécutez simplement db.serverStatus().storageEngine.name. Ce sera soit dire mmapv1ou wiredTiger.
RolandoMySQLDBA
Grepping pour le --storageEngineparamètre ne fonctionne que dans des situations limitées, par exemple MongoDB 3.0 où le paramètre est explicitement fourni sur la ligne de commande. Généralement, mongodles valeurs de configuration sont fournies dans un fichier de configuration afin qu'elles n'apparaissent pas dans la pssortie. Dans MongoDB 3.2+, WiredTiger étant le moteur de stockage par défaut, aucun paramètre supplémentaire n'est requis. L'approche recommandée à utiliser est votre deuxième suggestion de db.serverStatus().storageEngine.namevia la mongocoquille. Pour votre information, si vous utilisez MongoDB 2.6 ou une version antérieure, cela ne fonctionnera pas: le seul moteur de stockage était MMAP.
Stennie
1

Le mongod.logfichier est renseigné par une chaîne décrivant le moteur de stockage utilisé.
afin que vous puissiez courir:

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

qui retourne quelque chose comme:

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
la source