Как я могу узнать, где mongoDB хранит данные? (его нет по умолчанию / data / db!)

160

Мой хост пришел с экземпляром mongodb, и в нем нет каталога / db, так что теперь мне интересно, что я могу сделать, чтобы узнать, где на самом деле хранятся данные.

Zugwalt
источник
7
Существует более свежий вопрос по этому вопросу, который дает лучший ответ: «Какой путь к базе данных по умолчанию для mongodb?» , Путь к данным будет либо по умолчанию /data/db(если файл конфигурации не используется), либо будет обнаружен через db.adminCommand("getCmdLineOpts").parsed.dbpath.
Стенни
6
на OSX, mongo 3.0.4, я должен был использовать "db.adminCommand (" getCmdLineOpts "). parsed.storage.dbPath"
ski_squaw
@Stennie ваш комментарий помог мне (я на Windows, поэтому я использую Robomongo), но ваша ссылка на вопрос указывает на этот вопрос, а не на намеченную цель - stackoverflow.com/a/12738557/112764 - и в 3.х, это на самом деле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на просмотр этого параметра для местоположения БД, а у вас нет dbpathв нем mongodb.conf, то местоположением по умолчанию будет: /data/db/и вы должны посмотреть там.

EhevuTov
источник
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
26

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

Также в моем случае было важно убедиться, что значение config отражает фактическое значение (т. Е. Config не изменилось после последнего перезапуска), что не гарантируется предлагаемыми здесь решениями.

db.serverCmdLineOpts()

Пример вывода:

{
    "argv" : [ 
        // --
    ],
    "parsed" : {
        "config" : "/your-config",
        "storage" : {
            "dbPath" : "/your/actual/db/path",
            // --
        }
    },
    "ok" : 1.0
}
GLOCK18
источник
3
Это лучший ответ здесь
Довороты
Лучший ответ и для меня
Nam G VU
Работал как шарм! Спасибо, и это должно быть проголосовано :)
Брайан Джейкоб
21

Хотя этот вопрос предназначен для Linux / Unix экземпляров Mongo, он является одним из первых результатов поиска независимо от используемой операционной системы, поэтому для будущих пользователей Windows, которые найдут это:

Если MongoDB настроен в качестве службы Windows по умолчанию, его обычно можно найти, посмотрев запись «Путь к исполняемому файлу» в свойствах службы MongoDB:

Окно свойств, отображающее параметр «Путь к исполняемому файлу»

Robotnik
источник
Это не так очевидно, но вопросы для * nix os
st78
3
@ st78 Я знаю, но это все еще один из первых результатов поиска Google при поиске местоположения в Windows, поэтому я оставил ответ, касающийся пути Windows (как только я его выяснил), для таких людей, как я, которые наткнулись на него.
Роботник
15

По моему опыту, расположение по умолчанию /var/lib/mongodbпосле того, как я

sudo apt-get install -y mongodb-org
zillabunny
источник
1
Я могу подтвердить это для пользователей Linux Mint 17.3.
Матеус ДальПиззол
8

Я нашел мой здесь в системе OSX / usr / local / var / mongodb

Ахим Кёльнер
источник
3
Это верно для пользователей Homebrew
Мэтью
1
Вопрос в том, «Как я могу найти» место хранения данных mongodb. не просто путь для конкретного пользователя или платформы.
Ю Чен
4

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

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

Дибьенду Митра Рой
источник
2

Нашел это, просто ковыряясь в /var/db. Спасибо за помощь, хотя - я уверен, что эти ответы применимы к другим системам (например, Ubuntu) и помогут другим!

Zugwalt
источник
2

Если бы вы могли как-то найти mongod.log и сделать над ним grep

grep dbpath mongod.log

Значение для dbpath является местоположением данных для mongodb !! Всего наилучшего :)

Nilotpal
источник
2

На самом деле каталог по умолчанию, в котором экземпляр mongod хранит свои данные,

/data/db в Linux и OS X,

\data\db в Windows

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

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

Сценарии инициализации пакета Linux не ожидают storage.dbPathизменений по умолчанию. Если вы используете пакеты Linux и меняете их storage.dbPath, вам придется использовать собственные сценарии инициализации и отключить встроенные сценарии.

Прашант Похриял
источник
1

Когда вы запускаете его, он показывает вам. Но я не знаю, можете ли вы это сделать на своем хосте. Если у вас есть доступ к командной строке и вы можете перезапустить службу, вы получите что-то вроде:

    2016-11-15T12:57:09.182-0500 I CONTROL  [initandlisten]
 MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\ 
Джонни
источник