periksa mesin penyimpanan dari shell

35

Saya meningkatkan ke 3.0 dan mengalami beberapa masalah dengan peningkatan tersebut. Secara khusus, saya mendapat kesalahan ketika mencoba memulai mongodmelalui ssh, itu mencoba menggunakan default dbpathdaripada yang saya tentukan dalam file konfigurasi YAML baru saya. Saya melanjutkan dan me-reboot mesin dan sekarang mongodsudah hidup dan berjalan kembali. Saya agak paranoid pada saat ini dan ingin tahu apakah ada cara untuk memastikan mesin penyimpanan wiredtigerdari shell.

ton.yeung
sumber

Jawaban:

61

Cara termudah untuk menemukan mesin penyimpanan yang digunakan saat ini.

Di dalam tipe konsol mongo

db.serverStatus().storageEngine

Ini mengembalikan mesin penyimpanan yang sedang digunakan saat ini

{ "name" : "wiredTiger" }

Setelah dikonfirmasi bahwa wiredTiger digunakan, ketikkan

db.serverStatus().wiredTiger

untuk mendapatkan semua detail konfigurasi wiredTiger.

Mayank Patel
sumber
2
Hanya untuk mengonfirmasi, ini juga berfungsi pada Windows.
Chris Paton
9

PENOLAKAN: Bukan Ahli MongoDB

Periksa daftar proses di Linux

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

1 berarti ada di sana

Dari cangkang mongo

db.serverStatus()

Anda harus melihat sesuatu seperti ini

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

atau Anda bisa menggunakan nama mesin penyimpanan

db.serverStatus().storageEngine.name

Anda akan mendapatkan mmapv1atauwiredTiger

atau dari baris perintah

MONGO_ENGINE=`mongo -u... -p... --eval "db.serverStatus().storageEngine.name"`
RolandoMySQLDBA
sumber
Saya di ubuntu, jadi saya mencoba perintah Linux dan itu menunjukkan 0, tetapi db.serverStatus () menunjukkan node wiredTiger.
ton.yeung
yah bagaimanapun juga, db.serverStatus menggembirakan. dengan ini saya akan melanjutkan dan memperbarui server saya yang lain dan memasukkan tiket dengan mongo untuk jawaban yang pasti.
ton.yeung
ada pembaruan tentang ini? Saya masih mendapatkan 0 ketika saya menjalankan ini.
chaitanya.varanasi
2
@ chaitanya.varanasi Silakan lihat jawaban yang lain. Ini memiliki apa yang Anda inginkan. Demi kejelasan, saya akan mengatakan ini: Jika Anda menjalankan MongoDB 3.x, jalankan saja db.serverStatus().storageEngine.name. Itu akan mengatakan mmapv1atau wiredTiger.
RolandoMySQLDBA
Grepping untuk --storageEngineparameter hanya berfungsi dalam situasi terbatas, misalnya MongoDB 3.0 di mana parameter secara eksplisit disediakan pada baris perintah. Biasanya mongodnilai konfigurasi yang disediakan dalam file konfigurasi sehingga mereka tidak akan muncul dalam psoutput. Dalam MongoDB 3.2+ WiredTiger adalah mesin penyimpanan default sehingga tidak diperlukan parameter tambahan. Pendekatan yang disarankan untuk digunakan adalah saran kedua Anda db.serverStatus().storageEngine.namevia mongoshell. FYI, jika Anda menggunakan MongoDB 2.6 atau lebih lama ini tidak akan berfungsi: satu-satunya mesin penyimpanan adalah MMAP.
Stennie
1

The mongod.logfile akan dihuni oleh string yang menggambarkan mesin penyimpanan yang Anda gunakan;
sehingga Anda bisa lari:

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

yang mengembalikan sesuatu seperti:

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
sumber