Установить mongoDB (дочерний процесс завершился неудачно, вышел с номером ошибки 100)

Я попытался установить mongoDB на мой macbook-воздух.

Я загрузил заархивированный файл с официального сайта и извлек этот файл и переместился в корневой каталог. После этого в этом каталоге я создал папку data/db и /log.

Вот мой mongodb.config, который описывает базовую конфигурацию для моей БД.

dbpath = /mongodb/data/db
logpath = /mongodb/log/mongo.log
logappend = true
#bind ip = 127.0.0.1
port = 27017

fork = true
rest = true
verbose = true
#auth = true
#noauth = true

Кроме того, я хочу знать, что означает # в файле конфигурации.

Я помещал этот файл в /mongodb/bin, /mongodb - это каталог, в который я извлекал файлы.

Я открыл терминал и ввел ./mongod --config mongodb.config, и я получил это обратно.

Juneyoung-ui-MacBook-Air:bin juneyoungoh$ ./mongod --config mongodb.config
about to fork child process, waiting until server is ready for connections.
forked process: 1775
all output going to: /mongodb/log/mongo.log
ERROR: child process failed, exited with error number 100

Как я могу справиться с этой ошибкой и что это значит?

Ответы

Ответ 1

Созданные вами папки данных, скорее всего, были созданы с помощью sudo, да? Они принадлежат root и не доступны для записи вашим обычным пользователям. Если вы являетесь единственным пользователем своего macbook, измените права собственности на каталоги:

sudo chown juneyoungoh /data
sudo chown juneyoungoh /data/db
sudo chown juneyoungoh /data/log

Если вы планируете установить это на общедоступном компьютере или где-то законным, прочитайте больше о методах безопасности mongo в других местах. Я просто заставлю вас работать на вашем macbook.

Ответ 2

У меня была аналогичная проблема, и она не была связана с какой-либо проблемой sudo. Я пытался оправиться от паники ядра!

Когда я смотрю на папку с данными, я обнаружил, что там был файл mongod.lock. В моем случае эта страница помогла много: http://docs.mongodb.org/manual/tutorial/recover-data-following-unexpected-shutdown/. Как они объясняют,

если mongod.lock не является файлом с нулевым байтом, тогда mongod откажется запускаться.

Я тестировал это решение в своей среде, и он отлично работает:

  • Удалите файл mongod.lock.
  • Восстановить базу данных: mongod --dbpath /your/db/path --repair
  • Run mongod: mongod --dbpath /your/db/path

Ответ 3

На моей машине была такая же проблема. В файле журнала был:

Пн Июл 29 09: 57: 13.689 [initandlisten] ОШИБКА: Недостаточное свободное пространство для файла журнала
Пн Июл 29 09: 57: 13.689 [initandlisten] Пожалуйста, сделайте не менее 3379MB доступным в /var/mongoexp/rs 2/journal или используйте --smallfiles

Это было решено с помощью mongod --smallfiles. Или, если вы запустите mongod с опцией --config, чем в файле конфигурации, отключите ведение журнала с помощью записи nojournal=true (удалите начало #). Некоторое место на диске также решит вышеупомянутую проблему.

Ответ 4

Аналогичная проблема с той же ошибкой - я пытался запустить ремонт script sudo -u mongodb mongod -f /etc/mongodb.conf --repair

Проверено ps aux | grep mongo и убедитесь, что демон запущен. Остановите его, а затем выполните ремонт script без проблем.

Надеюсь, что это может быть полезно для кого-то другого.

Ответ 5

Это потому, что вы, вероятно, не закрыли mongodb правильно, и вы не начинаете mongodb правильно. Согласно вашему mongodb.config, у вас есть dbpath = /mongodb/data/db - поэтому я предполагаю, что вы создали репозиторий /mongodb/data/db? Позвольте мне прояснить все этапы.

  • НАЧАТЬ MONGODB

В mongodb.config измените dbpath = /mongodb/data/db на dbpath = /data/db. На вашем терминале создайте репозиторий db, набрав: mkdir /data/db. Теперь у вас есть репозиторий - вы можете начать свое монго.

Чтобы запустить mongo в фоновом режиме: mongod --dbpath /data/db --fork --logpath /dev/null.

  • /data/db - это местоположение db.
  • --fork означает, что вы хотите запустить mongo в фоновом режиме - deamon.
  • --logpath /dev/null означает, что вы не хотите регистрироваться - вы можете изменить это, заменив /dev/null на путь, например /var/log/mongo.log

    1. TO SHUTDOWN MONGODB

Подключите к вашему монго, набрав: mongo, а затем use admin и db.shutdownServer(). Как объяснять в mongoDB

Если этот метод не работает по какой-либо причине, вы всегда можете убить процесс.

Найдите идентификатор процесса mongodb, набрав: lsof -i:27017, предполагая, что ваш mongodb запущен на порту 27017

Введите kill <PID>, замените <PID> на значение, найденное предыдущей командой.

Ответ 6

У меня была такая же ошибка в linux (Centos), и это сработало для меня

  • Удалите mongod.lock из dbpath

    $ rm /var/lib/mongo/mongod.lock

  • Отредактируйте процесс mongod

    $ mongod --repair

  • Запустите конфигурацию mongod

    $ mongod --config /etc/mongod.conf

Ответ 7

У меня была такая же ошибка. Я провел его интерактивно, чтобы увидеть журнал.

2014-10-21T10:12:35.418-0400 [initandlisten] ERROR: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:27017

Затем я использовал lsof, чтобы узнать, какой процесс использует мой порт.

$ lsof -i:27017
COMMAND  PID     USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
mongod  2106 MYUSERID   10u  IPv4 0x635b71ec3b65b4a1      0t0  TCP *:27017 (LISTEN)

Это был mongod, который я раньше вилка и забыл отключить (так как я не видел, чтобы он работал в моем bash окне). Просто убив его, запустив kill 2106, включил мой процесс для запуска без ошибки 100.

Ответ 8

Как правило, эта ошибка возникает, когда файл mongod.conf не может найти определенный путь к хранилищу базы данных или хранилищу журнала или, возможно, к хранилищу процессов, или, возможно, он не получает разрешение на доступ к каталогам конфигурации и файлам, объявленным в mongod..conf

Чтобы устранить эту ошибку, нам нужно просмотреть журнал, сгенерированный MongoDB, в котором будет четко указано, к какому файлу или каталогу MongoDB не доступен

вышеуказанная ошибка может выглядеть как на скриншоте ниже enter image description here

enter image description here

Ответ 9

создайте папку "data" и "db" внутри нее, в пути "/" вашего сервера. на самом деле вы должны создать или изменить права доступа к папке, в которой будут храниться данные!