Як я можу сказати, де mongoDB зберігає дані? (його немає за замовчуванням / data / db!)


160

Мій хост прийшов з екземпляром mongodb і немає каталогу / db, тому тепер мені цікаво, що я можу зробити, щоб дізнатися, де дані зберігаються насправді.


7
На це питання є більш свіже питання, яке має кращу відповідь: "Який шлях до бази даних за замовчуванням для mongodb?" . Шлях даних буде або за замовчуванням /data/db(якщо не використовується конфігураційний файл), або відкривається через 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+).
Стенні

Відповіді:


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 з конфігурації.
Путник

6
Перевірте також /usr/local/etc/mongod.conf(конфігураційний файл) та /usr/local/var/mongodb(розташування бази даних). У деяких системах це будуть типові настройки.
Майлз Еріксон

Ну цей ДОБРІ надрукує поточний шлях точно для всієї версії 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

Можливо, вам слід додати інформацію для свого господаря. Здається, це не дистрибутив Ubuntu.
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

25

Я вважаю db.serverCmdLineOpts()найбільш надійним способом знайти фактичний шлях, якщо ви можете підключитися до сервера. "Parsed.storage.dbPath" містить шлях, який ваш сервер використовує в даний час, і доступний, коли він взято з конфігурації або з аргументів командного рядка.

Також у моєму випадку важливо було переконатися, що значення конфігурації відображає фактичне значення (тобто конфігурація не змінилася після останнього перезавантаження), що не гарантується запропонованими тут рішеннями.

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 (як тільки я це зрозумів) для таких людей, як я, які натрапляють на нього.
Роботник

15

З мого досвіду місце розташування за замовчуванням - це /var/lib/mongodbпісля мене

sudo apt-get install -y mongodb-org

1
Я можу підтвердити це для користувачів Linux Mint 17.3.
Матей Даль'Піццол

8

Я знайшов тут своє в OSX-системі / usr / local / var / mongodb


3
Це стосується користувачів Homebrew
Матвій

1
Питання "Як я можу знайти" місце зберігання даних mongodb. не лише шлях конкретного користувача чи платформи.
Ю Чен

4

Для вікон Зайдіть у папку MongoDB \ Server \ 4.0 \ bin та відкрийте файл mongod.cfg у будь-якому текстовому редакторі. Потім знайдіть рядок, який вказує параметр dbPath. Лінія виглядає щось подібне

dbPath: D: \ програмні файли \ MongoDB \ сервер \ 4.0 \ дані


2

Знайшов його, просто поцупивши /var/db. Дякую за допомогу - я впевнений, що ці відповіді стосуються інших систем (наприклад, Ubuntu) і допоможуть іншим!


2

Якщо ви зможете якось знайти mongod.log і зробити гребіння над ним

grep dbpath mongod.log

Значення для dbpath - це розташування даних для mongodb !! Всього найкращого :)


2

Насправді, каталог за замовчуванням, де зберігається екземпляр mongod, є

/data/db на Linux та OS X,

\data\db на Windows

Якщо ви встановили MongoDB за допомогою системи управління пакетами , перевірте /etc/mongod.confфайл, наданий вашими пакунками, щоб побачити, чи вказаний каталог.

storage.dbPathПараметр доступний тільки для mongod.

Сценарії init для пакету Linux не очікують storage.dbPathзмін із за замовчуванням. Якщо ви використовуєте пакети Linux та змінюєте їх storage.dbPath, вам доведеться використовувати власні скрипти init та відключати вбудовані сценарії.


1

Коли ви запускаєте його, це показує вам. Але я не знаю, це ти можеш зробити чи ні на своєму господареві. Якщо у вас є доступ до командного рядка і ви можете перезапустити службу, ви отримаєте щось на зразок:

    2016-11-15T12:57:09.182-0500 I CONTROL  [initandlisten]
 MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\ 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.