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

127

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

  • 7
    Есть более свежий вопрос по этому вопросу, который лучше отвечает: «Каков путь к базе данных по умолчанию для mongodb?» , Путь к данным будет либо по умолчанию /data/db (если файл конфигурации не используется), либо может быть обнаружен с помощью db.adminCommand("getCmdLineOpts").parsed.dbpath .
  • 5
    в OSX, mongo 3.0.4, мне пришлось использовать «db.adminCommand (« getCmdLineOpts »). parsed.storage.dbPath»
Показать ещё 2 комментария
Теги:
database
directory

12 ответов

136
Лучший ответ

mongod по умолчанию используется местоположение базы данных /data/db/.

Если вы запустите ps -xa | grep mongod и вы не видите --dbpath, который явно сообщает mongod, чтобы посмотреть этот параметр для местоположения db, и у вас нет dbpath в mongodb.conf, то расположение по умолчанию будет: /data/db/, и вы должны посмотреть там.

  • 10
    Нет такого каталога
  • 17
    @ user2384994 шахта была расположена в /etc/mongod.conf
Показать ещё 2 комментария
53

Что говорит ваш файл конфигурации?

$ 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, содержащий mongod PID, однако он находится в каталоге данных - который мы ищем...

  • 0
    На этом сервере нет каталога / var / lib, и эти две команды не работают (первая не может найти /etc/mongodb.conf, вторая - нераспознанная lsof)
  • 0
    Может быть, вы должны добавить информацию для вашего хоста. Не похоже на Ubuntu, как дистрибутив.
Показать ещё 1 комментарий
26

В новой версии mongodb v2.6.4 попробуйте:

grep dbpath /etc/mongod.conf

Это даст вам что-то вроде этого:

dbpath=/var/lib/mongodb

И вот где он хранит данные.

  • 8
    теперь команда должна быть grep dbPath /etc/mongod.conf
  • 0
    Мой был здесь также. Для людей, которые хотели найти этот каталог, чтобы проверить размеры файлов: du -sh * | sort -hr
14

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

sudo apt-get install -y mongodb-org
  • 1
    Я могу подтвердить это для пользователей Linux Mint 17.3.
12

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

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

Изображение 4661

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

Я нашел здесь здесь систему OSX /USR/ локальные/вар/MongoDB

  • 3
    Это верно для пользователей Homebrew
  • 0
    Вопрос в том, «Как я могу найти» место хранения данных mongodb. не просто путь для конкретного пользователя или платформы.
3

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

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

db.serverCmdLineOpts()

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

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

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

grep dbpath mongod.log

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

2

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

1

Фактически каталог по умолчанию, в котором экземпляр 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\ 
0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню