ฉันจะรู้ได้อย่างไรว่า mongoDB กำลังเก็บข้อมูลอยู่ที่ไหน? (ไม่ได้อยู่ในค่าเริ่มต้น / data / db!)


160

โฮสต์ของฉันมาพร้อมกับอินสแตนซ์ mongodb และไม่มีไดเรกทอรี / db ดังนั้นตอนนี้ฉันสงสัยว่าฉันสามารถทำอะไรเพื่อค้นหาว่าข้อมูลถูกเก็บไว้ที่ใด


7
มีคำถามล่าสุดเกี่ยวกับสิ่งนี้ซึ่งมีคำตอบที่ดีกว่า: "เส้นทางฐานข้อมูลเริ่มต้นของ mongodb คืออะไร" . เส้นทางข้อมูลอย่างใดอย่างหนึ่งจะเริ่มต้นของ/data/db(ถ้าไม่มีไฟล์ config จะถูกใช้) db.adminCommand("getCmdLineOpts").parsed.dbpathหรือค้นพบผ่าน
Stennie

6
บน OSX, mongo 3.0.4, ฉันต้องใช้ "db.adminCommand (" getCmdLineOpts "). parsed.storage.dbPath"
ski_squaw

@ Stennie ความคิดเห็นของคุณช่วยฉัน (ฉันบน Windows ดังนั้นฉันใช้ Robomongo) แต่จุดเชื่อมโยงคำถามของคุณที่คำถามนี้ไม่ใช่เป้าหมายที่คุณตั้งใจไว้ - stackoverflow.com/a/12738557/112764 - และใน 3.x จริงๆแล้วdb.adminCommand("getCmdLineOpts").parsed.storage.dbpath
NateJ

5
@NateJ ขอบคุณ! คำตอบในคำถามที่เกี่ยวข้องมีตัวอย่างสำหรับ MongoDB 2.6+ เช่นเดียวกับรูปแบบเก่าใน <= 2.4 นอกจากนี้ยังมีตัวช่วยเชลล์ที่คุณสามารถใช้แทนการจำเพื่อเปลี่ยนเป็นadminฐานข้อมูลหรือใช้adminCommand: db.serverCmdLineOpts().parsed.storage.dbPath(MongoDB 2.6+)
Stennie

คำตอบ:


140

mongod/data/db/ค่าเริ่มต้นที่ตั้งของฐานข้อมูลเพื่อ

หากคุณเรียกใช้ps -xa | grep mongodและคุณไม่เห็นคำสั่ง--dbpathที่ชัดเจนmongodให้ดูพารามิเตอร์นั้นสำหรับตำแหน่ง db และคุณไม่มีdbpathในตำแหน่งของคุณmongodb.confตำแหน่งเริ่มต้นจะเป็น: /data/db/และคุณควรดูที่นั่น


11
ไม่มีไดเรกทอรีดังกล่าว
user2384994

18
@ user2384994 เหมืองตั้งอยู่ที่/etc/mongod.conf
K - ความเป็นพิษใน SO กำลังเพิ่มขึ้น

1
ไม่เห็นเส้นทาง /usr/bin/mongod -f /etc/mongod.confแต่ ใช้ dbpatch จากการตั้งค่า
Putnik

6
ตรวจสอบ/usr/local/etc/mongod.conf(ไฟล์กำหนดค่า) และ/usr/local/var/mongodb(ตำแหน่งฐานข้อมูล) เช่นกัน ในบางระบบสิ่งเหล่านี้จะเป็นค่าเริ่มต้น
Miles Erickson

อันนี้ควรพิมพ์เส้นทางปัจจุบันอย่างแม่นยำสำหรับทุก mongodb รุ่นstackoverflow.com/a/52036070/248616
Nam G VU

57

ไฟล์กำหนดค่าของคุณพูดอะไร

$ grep dbpath /etc/mongodb.conf

หากไม่ถูกต้องให้ลองสิ่งนี้ไฟล์ฐานข้อมูลของคุณจะปรากฏในรายการ:

$ sudo lsof -p `ps aux | grep mongodb | head -n1 | tr -s ' ' | cut -d' ' -f 2` | grep REG

มัน/var/lib/mongodb/*อยู่ในการติดตั้งเริ่มต้นของฉัน (Ubuntu 11.04)

โปรดทราบว่านอกจากนี้ยังมี/var/lib/mongodb/mongod.lockไฟล์mongodPID ที่ถือไว้เพื่อความสะดวกอย่างไรก็ตามมันอยู่ในไดเรกทอรีข้อมูล - ซึ่งเรากำลังมองหา ...


ไม่มีไดเร็กทอรี / var / lib บนเซิร์ฟเวอร์นี้และทั้งสองคำสั่งไม่ทำงาน (อันแรกไม่สามารถค้นหา /etc/mongodb.conf วินาทีที่สองไม่รู้จัก lsof)
Zugwalt

บางทีคุณควรเพิ่มข่าวสารสำหรับโฮสต์ของคุณ ดูเหมือนจะไม่ใช่อูบุนตูเหมือนคนขี้เกียจ
DrColossos

4
บน Ubuntu 16.04 mongodb v3.4.10, มันคือ$ grep dbPath /etc/mongod.conf
ihsan

31

ใน mongodb v2.6.4 เวอร์ชั่นใหม่ลอง:

grep dbpath /etc/mongod.conf

มันจะให้อะไรแบบนี้กับคุณ:

dbpath=/var/lib/mongodb

และนั่นคือที่เก็บข้อมูล


ฉันอยู่ที่นี่ด้วย สำหรับผู้ที่ต้องการค้นหาไดเรกทอรีนี้เพื่อตรวจสอบขนาดไฟล์:du -sh * | sort -hr

26

ฉันพบdb.serverCmdLineOpts()วิธีที่มีประสิทธิภาพที่สุดในการค้นหาเส้นทางจริงถ้าคุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์ "parsed.storage.dbPath" มีเส้นทางที่เซิร์ฟเวอร์ของคุณใช้อยู่ในปัจจุบันและสามารถใช้ได้ทั้งสองอย่างเมื่อนำมาจาก config หรือจากอาร์กิวเมนต์บรรทัดคำสั่ง

ในกรณีของฉันก็เป็นสิ่งสำคัญเช่นกันเพื่อให้แน่ใจว่าค่าการกำหนดค่าสะท้อนถึงมูลค่าที่แท้จริง (เช่นการกำหนดค่าไม่เปลี่ยนแปลงหลังจากการรีสตาร์ทครั้งล่าสุด) ซึ่งไม่ได้รับประกันโดยโซลูชันที่นำเสนอที่นี่

db.serverCmdLineOpts()

ตัวอย่างผลลัพธ์:

{
    "argv" : [ 
        // --
    ],
    "parsed" : {
        "config" : "/your-config",
        "storage" : {
            "dbPath" : "/your/actual/db/path",
            // --
        }
    },
    "ok" : 1.0
}

3
นี่คือคำตอบที่ดีที่สุดที่นี่
Oversteer

คำตอบที่ดีที่สุดสำหรับฉันเช่นกัน
Nam G VU

ทำงานเหมือนจับใจ! ขอบคุณและนี่ควรจะถูกโหวตขึ้น :)
ไบรอันจาค็อบ

21

ในขณะที่คำถามนี้มีการกำหนดเป้าหมายสำหรับอินสแตนซ์ Linux / Unix ของ Mongo แต่เป็นหนึ่งในผลการค้นหาแรกโดยไม่คำนึงถึงระบบปฏิบัติการที่ใช้ดังนั้นสำหรับผู้ใช้ Windows ในอนาคตที่พบสิ่งนี้:

หากตั้งค่า MongoDB เป็นบริการของ Windows ในลักษณะเริ่มต้นคุณสามารถค้นหาได้โดยดูที่รายการ 'เส้นทางสู่การปฏิบัติการ' ในคุณสมบัติของบริการ MongoDB:

หน้าต่างคุณสมบัติที่แสดงตัวเลือก 'เส้นทางสู่การปฏิบัติการ'


มันไม่ชัดเจน แต่คำถามสำหรับ * nix os
st78

3
@ st78 ฉันรู้ แต่ก็ยังคงเป็นหนึ่งในผลการค้นหา Google ครั้งแรกเมื่อค้นหาตำแหน่งใน Windows ซึ่งเป็นเหตุผลที่ฉันทิ้งคำตอบที่ระบุเส้นทางของ Windows (เมื่อฉันคิดออก) สำหรับคนอย่างฉันที่สะดุดมัน
Robotnik

15

จากประสบการณ์ของฉันที่ตั้งเริ่มต้นคือ/var/lib/mongodbหลังจากที่ฉันทำ

sudo apt-get install -y mongodb-org

1
ฉันสามารถยืนยันสิ่งนี้สำหรับผู้ใช้ Linux Mint 17.3
Matheus Dal'Pizzol

8

ฉันพบของฉันที่นี่ในระบบ OSX / usr / local / var / mongodb


3
นี่เป็นเรื่องจริงสำหรับผู้ใช้ Homebrew
Matthew

1
คำถามคือ "ฉันจะหา" ที่เก็บข้อมูล MongoD ได้อย่างไร ไม่ใช่แค่พา ธ สำหรับผู้ใช้หรือแพลตฟอร์มเฉพาะ
Yu เฉิน

4

สำหรับ windows เข้าไปในโฟลเดอร์ MongoDB \ Server \ 4.0 \ bin และเปิดไฟล์ mongod.cfg ในโปรแกรมแก้ไขข้อความใด ๆ จากนั้นหาบรรทัดที่ระบุพารามิเตอร์ dbPath บรรทัดมีลักษณะคล้ายกัน

dbPath: D: \ Program Files \ MongoDB \ Server \ 4.0 \ data


2

พบว่ามันเพียงแค่ poking /var/dbรอบใน ขอบคุณสำหรับความช่วยเหลือ - ฉันแน่ใจว่าคำตอบเหล่านี้ใช้กับระบบอื่น ๆ (เช่น Ubuntu) และจะช่วยเหลือผู้อื่น!


2

หากคุณสามารถค้นหา mongod.log และทำ grep ได้

grep dbpath mongod.log

ค่าสำหรับ dbpath คือตำแหน่งข้อมูลสำหรับ mongodb !! ดีที่สุด :)


2

ที่จริงแล้วไดเรกทอรีเริ่มต้นที่อินสแตนซ์ mongod จัดเก็บข้อมูลอยู่

/data/db บน Linux และ OS X

\data\db บน Windows

หากคุณติดตั้ง MongoDB โดยใช้ระบบการจัดการแพคเกจตรวจสอบ/etc/mongod.confไฟล์ที่ระบุโดยแพ็คเกจของคุณเพื่อดูไดเรกทอรีที่ระบุไว้

การstorage.dbPathตั้งค่าใช้ได้เฉพาะสำหรับmongodการตั้งค่าจะใช้ได้เฉพาะ

สคริปต์storage.dbPathเริ่มต้นแพ็คเกจ Linux ไม่คาดว่าจะเปลี่ยนจากค่าเริ่มต้น หากคุณใช้แพ็คเกจ Linux และการเปลี่ยนแปลงstorage.dbPathคุณจะต้องใช้สคริปต์เริ่มต้นของคุณเองและปิดการใช้งานสคริปต์ในตัว


1

เมื่อคุณเริ่มต้นมันจะแสดงให้คุณเห็น แต่ฉันไม่รู้ว่ามันเป็นสิ่งที่คุณสามารถทำได้หรือไม่บนโฮสต์ของคุณ หากคุณสามารถเข้าถึงบรรทัดคำสั่งและสามารถเริ่มบริการได้คุณจะได้รับสิ่งต่อไปนี้

    2016-11-15T12:57:09.182-0500 I CONTROL  [initandlisten]
 MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\ 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.