ตรวจสอบเครื่องมือจัดเก็บข้อมูลจากเปลือก


35

ฉันกำลังอัปเกรดเป็น 3.0 และพบปัญหาบางอย่างกับการอัปเกรด โดยเฉพาะฉันได้รับข้อผิดพลาดเมื่อพยายามเริ่มการทำงานmongodผ่านsshมันพยายามใช้ค่าเริ่มต้นdbpathแทนที่จะเป็นค่าที่ฉันระบุในไฟล์กำหนดค่า YAML ใหม่ของฉัน ฉันไปข้างหน้าและรีบู๊ตเครื่องและตอนนี้mongodก็เปิดขึ้นและทำงานอีกครั้ง ฉันรู้สึกหวาดระแวงตอนนี้และต้องการทราบว่ามีวิธีการตรวจสอบให้แน่ใจว่าเครื่องมือจัดเก็บข้อมูลwiredtigerมาจากเปลือกหรือไม่

คำตอบ:


61

วิธีที่ง่ายที่สุดในการค้นหาเอ็นจิ้นการจัดเก็บที่ใช้อยู่ในปัจจุบัน

ภายในประเภทคอนโซล mongo

db.serverStatus().storageEngine

ส่งคืนเอนจินการเก็บข้อมูลที่ใช้อยู่ในปัจจุบัน

{ "name" : "wiredTiger" }

เมื่อได้รับการยืนยันว่ามีการใช้ WiredTiger แล้วให้พิมพ์

db.serverStatus().wiredTiger

เพื่อรับรายละเอียดการกำหนดค่าทั้งหมดของ wiredTiger


2
เพียงเพื่อยืนยันการทำงานบน Windows เช่นกัน
Chris Paton

9

การปฏิเสธความรับผิด: ไม่ใช่ผู้เชี่ยวชาญ MongoDB

ตรวจสอบรายการกระบวนการใน Linux

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

1 หมายความว่ามันมี

จากเปลือก Mongo

db.serverStatus()

คุณควรเห็นอะไรเช่นนี้

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

หรือคุณสามารถดึงชื่อเครื่องมือจัดเก็บด้วย

db.serverStatus().storageEngine.name

คุณจะได้รับmmapv1หรือwiredTiger

หรือจากบรรทัดคำสั่ง

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

ฉันใช้งานอูบุนตูฉันจึงลองใช้คำสั่ง Linux และพบว่ามี 0 แต่ db.serverStatus () แสดงโหนด wiredTiger
ton.yeung

ทางใดทางหนึ่ง db.serverStatus กำลังให้กำลังใจ ด้วยสิ่งนี้ฉันจะไปข้างหน้าและอัปเดตเซิร์ฟเวอร์อื่น ๆ ของฉันและใส่ตั๋วกับ Mongo เพื่อรับคำตอบที่ชัดเจน
ton.yeung

มีการอัพเดทอะไรบ้าง? ฉันยังได้รับ 0 เมื่อฉันเรียกใช้
chaitanya.varanasi

2
@ chaitanya.varanasi โปรดดูคำตอบอื่น ๆ มันมีสิ่งที่คุณต้องการ เพราะความชัดเจนผมจะพูดแบบนี้: ถ้าคุณกำลังเรียก MongoDB 3.x db.serverStatus().storageEngine.nameเรียกเพียง มันอาจจะพูดได้หรือmmapv1 wiredTiger
RolandoMySQLDBA

การ grepping สำหรับ--storageEngineพารามิเตอร์จะทำงานเฉพาะในสถานการณ์ที่ จำกัด เช่น MongoDB 3.0 ซึ่งมีการระบุพารามิเตอร์ไว้อย่างชัดเจนในบรรทัดคำสั่ง โดยทั่วไปแล้วmongodค่าการกำหนดค่าจะมีให้ในไฟล์กำหนดค่าดังนั้นจะไม่ปรากฏในpsเอาต์พุต ใน MongoDB 3.2+ WiredTiger เป็นเอ็นจิ้นการจัดเก็บเริ่มต้นดังนั้นจึงไม่จำเป็นต้องใช้พารามิเตอร์เพิ่มเติม วิธีการที่แนะนำให้ใช้คือข้อเสนอแนะที่สองของคุณdb.serverStatus().storageEngine.nameผ่านทางmongoเชลล์ ถ้าคุณบังเอิญใช้ MongoDB 2.6 ขึ้นไปสิ่งนี้จะไม่ทำงาน: เอ็นจิ้นหน่วยเก็บข้อมูลเดียวคือ MMAP
Stennie

1

mongod.logไฟล์ได้รับประชากรโดยสตริงซึ่งอธิบายเครื่องมือจัดเก็บสิ่งที่คุณกำลังใช้;
ดังนั้นคุณสามารถเรียกใช้:

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

ซึ่งส่งคืนสิ่งที่ชอบ:

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),
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.