Làm thế nào tôi có thể biết nơi mongoDB đang lưu trữ dữ liệu? (nó không có trong mặc định / data / db!)


160

Máy chủ lưu trữ của tôi có một cá thể mongodb và không có thư mục / db vì vậy bây giờ tôi tự hỏi tôi có thể làm gì để tìm ra nơi dữ liệu thực sự được lưu trữ.


7
Có một câu hỏi gần đây hơn về câu hỏi này có câu trả lời tốt hơn: "Đường dẫn cơ sở dữ liệu mặc định cho mongodb là gì?" . Đường dẫn dữ liệu sẽ là mặc định của /data/db(nếu không có tệp cấu hình nào đang được sử dụng) hoặc có thể khám phá thông qua db.adminCommand("getCmdLineOpts").parsed.dbpath.
Stennie

6
trên OSX, mongo 3.0.4, tôi đã phải sử dụng "db.adminCommand (" getCmdLineOpts "). Parsed.st Storage.dbPath"
Ski_squaw 24/07/2016

@Stennie bình luận của bạn đã giúp tôi (Tôi đang dùng Windows vì vậy tôi đang sử dụng Robomongo), nhưng điểm liên kết câu hỏi của bạn tại câu hỏi này, không phải ở mục tiêu dự định của bạn - stackoverflow.com/a/12738557/112764 - và trong 3.x, thực ra là vậydb.adminCommand("getCmdLineOpts").parsed.storage.dbpath
NateJ

5
@NateJ Cảm ơn! Câu trả lời cho câu hỏi liên quan có các ví dụ cho MongoDB 2.6+ cũng như dạng cũ hơn trong <= 2.4. Ngoài ra còn có một trình trợ giúp shell mà bạn có thể sử dụng thay vì ghi nhớ để thay đổi admincơ sở dữ liệu hoặc sử dụng adminCommand: db.serverCmdLineOpts().parsed.storage.dbPath(MongoDB 2.6+).
Stennie

Câu trả lời:


140

mongodmặc định vị trí cơ sở dữ liệu để /data/db/.

Nếu bạn chạy ps -xa | grep mongodvà bạn không thấy thông báo --dbpathnào rõ ràng mongodđể xem tham số đó cho vị trí db và bạn không có vị trí dbpathtrong mongodb.confđó, thì vị trí mặc định sẽ là: /data/db/và bạn nên nhìn vào đó.


11
Không có thư mục như vậy
user2384994

18
@ user2384994 của tôi được đặt tại/etc/mongod.conf
K - Độc tính trong SO đang tăng lên.

1
Không thấy đường dẫn, nhưng /usr/bin/mongod -f /etc/mongod.conf. Lấy dbpatch từ cấu hình.
Putnik

6
Kiểm tra /usr/local/etc/mongod.conf(tệp cấu hình) và /usr/local/var/mongodb(vị trí cơ sở dữ liệu) là tốt. Trên một số hệ thống, đây sẽ là các mặc định.
Miles Erickson

Vâng, cái này NÊN in chính xác đường dẫn hiện tại cho tất cả phiên bản mongodb stackoverflow.com/a/52036070/248616
Nam G VU

57

Tập tin cấu hình của bạn nói gì?

$ grep dbpath /etc/mongodb.conf

Nếu không đúng, hãy thử điều này, các tệp cơ sở dữ liệu của bạn sẽ có trong danh sách:

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

Đó là /var/lib/mongodb/*cài đặt mặc định của tôi (Ubuntu 11.04).

Lưu ý rằng cũng có một /var/lib/mongodb/mongod.locktệp giữ mongodPID để thuận tiện, tuy nhiên, nó nằm trong thư mục dữ liệu - thứ mà chúng tôi đang tìm kiếm ...


Không có thư mục / var / lib trên máy chủ này và hai lệnh đó không hoạt động (lệnh đầu tiên không thể tìm thấy /etc/mongodb.conf thứ hai không được nhận dạng lsof)
Zugwalt

Có lẽ bạn nên thêm infos cho máy chủ của bạn. Dường như không phải là một bản phân phối giống như Ubuntu.
DrColossos

4
Trên Ubuntu 16.04 mongodb v3.4.10, đó là$ grep dbPath /etc/mongod.conf
ihsan

31

Trong phiên bản mới hơn của mongodb v2.6.4, hãy thử:

grep dbpath /etc/mongod.conf

Nó sẽ cung cấp cho bạn một cái gì đó như thế này:

dbpath=/var/lib/mongodb

Và đó là nơi lưu trữ dữ liệu.


Của tôi cũng ở đây. Đối với những người muốn tìm thư mục này để kiểm tra kích thước tệp:du -sh * | sort -hr

25

Tôi tìm thấy db.serverCmdLineOpts() cách mạnh mẽ nhất để tìm đường dẫn thực tế nếu bạn có thể kết nối với máy chủ. "Parsed.st Storage.dbPath" chứa đường dẫn mà máy chủ của bạn hiện đang sử dụng và có sẵn cả khi được lấy từ cấu hình hoặc từ các đối số dòng lệnh.

Ngoài ra, trong trường hợp của tôi, điều quan trọng là đảm bảo rằng giá trị cấu hình phản ánh giá trị thực (nghĩa là cấu hình không thay đổi sau lần khởi động lại cuối cùng), điều này không được đảm bảo bởi các giải pháp được cung cấp ở đây.

db.serverCmdLineOpts()

Ví dụ đầu ra:

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

3
Đây là câu trả lời hay nhất ở đây
Oversteer

Câu trả lời hay nhất cho tôi cũng vậy
Nam G VU

21

Mặc dù câu hỏi này được nhắm mục tiêu cho các phiên bản Mongo của Linux / Unix, nhưng đây là một trong những kết quả tìm kiếm đầu tiên bất kể hệ điều hành được sử dụng, vì vậy đối với người dùng Windows trong tương lai sẽ tìm thấy điều này:

Nếu MongoDB được thiết lập như một Dịch vụ Windows theo cách mặc định, bạn thường có thể tìm thấy nó bằng cách xem mục 'Đường dẫn đến thực thi' trong Thuộc tính của Dịch vụ MongoDB:

Cửa sổ thuộc tính hiển thị tùy chọn 'Đường dẫn đến thực thi'


Điều đó không rõ ràng, nhưng câu hỏi dành cho * nix os
st78

3
@ st78 Tôi biết, nhưng đây vẫn là một trong những kết quả đầu tiên của Google khi tìm kiếm vị trí trong Windows, đó là lý do tại sao tôi để lại câu trả lời giải quyết đường dẫn Windows (một khi tôi đã tìm ra nó) cho những người như tôi tình cờ gặp nó.
Robotnik

15

Theo kinh nghiệm của tôi, vị trí mặc định là /var/lib/mongodbsau khi tôi làm

sudo apt-get install -y mongodb-org

1
Tôi có thể xác nhận điều này cho người dùng Linux Mint 17.3.
Matheus Dal'Pizzol

8

Tôi tìm thấy của tôi ở đây trên một hệ thống OSX / usr / local / var / mongodb


3
Điều này đúng với người dùng Homebrew
Matthew

1
Câu hỏi là "Làm thế nào tôi có thể tìm thấy" vị trí lưu trữ dữ liệu mongodb. không chỉ là đường dẫn cho một người dùng hoặc nền tảng cụ thể.
Yu Chen

4

Đối với cửa sổ Đi vào bên trong thư mục MongoDB \ Server \ 4.0 \ bin và mở tệp mongod.cfg trong bất kỳ trình soạn thảo văn bản nào. Sau đó xác định vị trí dòng xác định tham số dbPath. Dòng này trông giống

dbPath: D: \ Tệp chương trình \ MongoDB \ Server \ 4.0 \ data


2

Tìm thấy nó chỉ bằng cách chọc vào trong /var/db. Tuy nhiên, cảm ơn sự giúp đỡ - tôi chắc chắn những câu trả lời này áp dụng cho các hệ thống khác (ví dụ Ubuntu) và sẽ giúp những người khác!


2

Nếu bạn bằng cách nào đó có thể xác định vị trí mongod.log và thực hiện một grep trên nó

grep dbpath mongod.log

Giá trị cho dbpath là vị trí dữ liệu cho mongodb !! Tất cả là tốt nhất :)


2

Trên thực tế, thư mục mặc định nơi đối tượng mongod lưu trữ dữ liệu của nó là

/data/db trên Linux và OS X,

\data\db trên Windows

Nếu bạn đã cài đặt MongoDB bằng hệ thống quản lý gói , hãy kiểm tra /etc/mongod.conftệp được cung cấp bởi các gói của bạn để xem thư mục được chỉ định.

Các storage.dbPaththiết lập chỉ có sẵn cho mongod.

Các tập lệnh init gói Linux không mong đợi storage.dbPaththay đổi từ mặc định. Nếu bạn sử dụng các gói Linux và thay đổi storage.dbPath, bạn sẽ phải sử dụng các tập lệnh init của riêng bạn và vô hiệu hóa các tập lệnh tích hợp.


1

Khi bạn khởi động nó, nó cho bạn thấy. Nhưng tôi không biết đó có phải là điều bạn có thể làm hay không trên máy chủ của mình. Nếu bạn có quyền truy cập vào dòng lệnh và có thể khởi động lại dịch vụ, bạn sẽ nhận được một cái gì đó như:

    2016-11-15T12:57:09.182-0500 I CONTROL  [initandlisten]
 MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\ 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.