Überprüfen Sie die Speichermaschine von der Schale

35

Ich aktualisiere auf 3.0 und habe Probleme mit dem Upgrade. Insbesondere beim Versuch, mongodüber zu starten, ist ein Fehler aufgetreten. sshEs wurde versucht, die Standardeinstellung dbpathanstelle der in meiner neuen YAML-Konfigurationsdatei angegebenen zu verwenden. Ich habe die Maschine neu gestartet und jetzt mongodist sie wieder betriebsbereit . Ich bin zu diesem Zeitpunkt ein bisschen paranoid und möchte wissen, ob es eine Möglichkeit gibt, sicherzustellen, dass die Speicher-Engine wiredtigervon der Shell stammt.

ton.yeung
quelle

Antworten:

61

Der einfachste Weg, die aktuell verwendete Speicher-Engine zu finden.

Inside Mongo-Konsolentyp

db.serverStatus().storageEngine

Es gibt die aktuell verwendete Speicher-Engine zurück

{ "name" : "wiredTiger" }

Sobald bestätigt ist, dass wiredTiger verwendet wird, geben Sie ein

db.serverStatus().wiredTiger

um alle Konfigurationsdetails von wiredTiger zu erhalten.

Mayank Patel
quelle
2
Nur zur Bestätigung, dies funktioniert auch unter Windows.
Chris Paton
9

HAFTUNGSAUSSCHLUSS: Kein MongoDB-Experte

Überprüfen Sie die Prozessliste unter Linux

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

1 bedeutet, es ist da

Aus der Mongo-Muschel

db.serverStatus()

Sie sollten so etwas sehen

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

oder Sie können einfach den Namen der Speicher-Engine mit ziehen

db.serverStatus().storageEngine.name

Du wirst entweder bekommen mmapv1oderwiredTiger

oder von der Kommandozeile

MONGO_ENGINE=`mongo -u... -p... --eval "db.serverStatus().storageEngine.name"`
RolandoMySQLDBA
quelle
Ich bin auf Ubuntu, also habe ich den Linux-Befehl ausprobiert und er zeigte 0, aber der db.serverStatus () zeigt einen wiredTiger-Knoten.
ton.yeung
In beiden Fällen ist der db.serverStatus ermutigend. Damit aktualisiere ich meine anderen Server und stelle bei Mongo ein Ticket für eine endgültige Antwort ein.
Ton.yeung
Gibt es hierzu Neuigkeiten? Ich bekomme immer noch eine 0, wenn ich das starte.
chaitanya.varanasi
2
@ chaitanya.varanasi Bitte schauen Sie sich die andere Antwort an. Es hat was du willst. Der Übersichtlichkeit halber sage ich Folgendes: Wenn Sie MongoDB 3.x ausführen, führen Sie einfach aus db.serverStatus().storageEngine.name. Es wird entweder mmapv1oder sagen wiredTiger.
RolandoMySQLDBA
Das Greifen nach dem --storageEngineParameter funktioniert nur in begrenzten Situationen, z. B. in MongoDB 3.0, wo der Parameter explizit in der Befehlszeile angegeben wird. In der Regel werden mongodKonfigurationswerte in einer Konfigurationsdatei bereitgestellt, damit sie nicht in der psAusgabe angezeigt werden. In MongoDB 3.2+ ist WiredTiger die Standardspeicher-Engine, sodass keine zusätzlichen Parameter erforderlich sind. Der empfohlene Ansatz ist Ihr zweiter Vorschlag db.serverStatus().storageEngine.nameüber die mongoShell. Zu Ihrer Information, wenn Sie MongoDB 2.6 oder älter verwenden, funktioniert dies nicht: Die einzige Speicher-Engine war MMAP.
Stennie
1

Die mongod.logDatei wird mit einer Zeichenfolge gefüllt, die beschreibt, welche Speicher-Engine Sie verwenden.
so konnte man laufen:

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

was etwas zurückgibt wie:

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
quelle